From aa29d1ceb92f8f920706d77b359e2f61e2147662 Mon Sep 17 00:00:00 2001 From: Alp Date: Thu, 26 Feb 2026 15:29:30 -0500 Subject: [PATCH 1/7] feat: add --experimental-lazy flag for faster CLI startup in monorepos Skip loading all source files from all tsconfigs when --experimental-lazy is passed. Instead, only load the config/schema file that was explicitly requested. This dramatically reduces startup time in large monorepos. Benchmarks: - Synthetic (502 files): 277ms -> 3.3ms (83.8x faster) - Real monorepo (453 files): 24.51s -> 6.16s (3.98x faster) - Output is byte-for-byte identical --- src/cli/index.ts | 25 +++- tests/benchmark.test.ts | 77 +++++++++++ .../synthetic-monorepo/pkg-01/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-01/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-01/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-02/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-02/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-03/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-03/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-04/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-04/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-05/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-05/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-06/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-06/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-07/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-07/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-08/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-08/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-09/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-09/types-50.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/tsconfig.json | 14 ++ .../synthetic-monorepo/pkg-10/types-01.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-02.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-03.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-04.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-05.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-06.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-07.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-08.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-09.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-10.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-11.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-12.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-13.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-14.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-15.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-16.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-17.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-18.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-19.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-20.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-21.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-22.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-23.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-24.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-25.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-26.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-27.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-28.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-29.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-30.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-31.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-32.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-33.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-34.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-35.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-36.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-37.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-38.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-39.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-40.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-41.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-42.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-43.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-44.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-45.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-46.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-47.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-48.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-49.ts | 125 ++++++++++++++++++ .../synthetic-monorepo/pkg-10/types-50.ts | 125 ++++++++++++++++++ .../schema/drizzle-zero.config.ts | 52 ++++++++ .../synthetic-monorepo/schema/schema.ts | 89 +++++++++++++ .../synthetic-monorepo/schema/tsconfig.json | 14 ++ .../synthetic-monorepo/tsconfig.json | 25 ++++ 516 files changed, 62915 insertions(+), 7 deletions(-) create mode 100644 tests/benchmark.test.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts create mode 100644 tests/benchmarks/synthetic-monorepo/schema/schema.ts create mode 100644 tests/benchmarks/synthetic-monorepo/schema/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/tsconfig.json diff --git a/src/cli/index.ts b/src/cli/index.ts index 2b66f888..0ac92f90 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -67,6 +67,7 @@ export interface GeneratorOptions { enableLegacyMutators?: boolean; enableLegacyQueries?: boolean; suppressDefaultsWarning?: boolean; + experimentalLazy?: boolean; } async function main(opts: GeneratorOptions = {}) { @@ -85,6 +86,7 @@ async function main(opts: GeneratorOptions = {}) { enableLegacyMutators, enableLegacyQueries, suppressDefaultsWarning, + experimentalLazy, } = {...opts}; const resolvedTsConfigPath = tsConfigPath ?? defaultTsConfigFile; @@ -99,18 +101,21 @@ async function main(opts: GeneratorOptions = {}) { '😶‍🌫️ drizzle-zero: Using all tables/columns from Drizzle schema', ); } - const allTsConfigPaths = await discoverAllTsConfigs(resolvedTsConfigPath); const tsProject = new Project({ tsConfigFilePath: resolvedTsConfigPath, skipAddingFilesFromTsConfig: true, }); - for (const tsConfigPath of allTsConfigPaths) { - addSourceFilesFromTsConfigSafe({ - tsProject, - tsConfigPath, - debug: Boolean(debug), - }); + + if (!experimentalLazy) { + const allTsConfigPaths = await discoverAllTsConfigs(resolvedTsConfigPath); + for (const tsConfigPath of allTsConfigPaths) { + addSourceFilesFromTsConfigSafe({ + tsProject, + tsConfigPath, + debug: Boolean(debug), + }); + } } if (configFilePath) { @@ -226,6 +231,11 @@ function cli() { 'Hide warnings for columns with default values', false, ) + .option( + '--experimental-lazy', + 'Use lazy file loading for faster startup (only loads files reachable from config)', + false, + ) .option( '--force', 'Overwrite the output file even if it has been manually modified', @@ -250,6 +260,7 @@ function cli() { enableLegacyMutators: command.enableLegacyMutators, enableLegacyQueries: command.enableLegacyQueries, suppressDefaultsWarning: command.suppressDefaultsWarning, + experimentalLazy: command.experimentalLazy, }); if (command.output) { diff --git a/tests/benchmark.test.ts b/tests/benchmark.test.ts new file mode 100644 index 00000000..36a71daa --- /dev/null +++ b/tests/benchmark.test.ts @@ -0,0 +1,77 @@ +import * as path from 'node:path'; +import {Project} from 'ts-morph'; +import {test, expect} from 'vitest'; +import {discoverAllTsConfigs} from '../src/cli/tsconfig'; +import { + addSourceFilesFromTsConfigSafe, + ensureSourceFileInProject, +} from '../src/cli/ts-project'; + +const fixtureRoot = path.resolve( + __dirname, + 'benchmarks/synthetic-monorepo/tsconfig.json', +); +const schemaConfigFile = path.resolve( + __dirname, + 'benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts', +); + +test( + 'lazy loading loads fewer files and is faster than eager loading', + {timeout: 120_000}, + async () => { + // -- EAGER approach: discover all tsconfigs, add all source files -- + const eagerStart = performance.now(); + + const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); + + const eagerProject = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); + + for (const tsConfigPath of allTsConfigPaths) { + addSourceFilesFromTsConfigSafe({ + tsProject: eagerProject, + tsConfigPath, + debug: false, + }); + } + + ensureSourceFileInProject({ + tsProject: eagerProject, + filePath: schemaConfigFile, + debug: false, + }); + + const eagerFileCount = eagerProject.getSourceFiles().length; + const eagerTime = performance.now() - eagerStart; + + // -- LAZY approach: only load the config file and resolve its dependencies -- + const lazyStart = performance.now(); + + const lazyProject = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); + + ensureSourceFileInProject({ + tsProject: lazyProject, + filePath: schemaConfigFile, + debug: false, + }); + + const lazyFileCount = lazyProject.getSourceFiles().length; + const lazyTime = performance.now() - lazyStart; + + // -- Report -- + const ratio = eagerTime / lazyTime; + console.log(`Eager: ${eagerFileCount} files in ${eagerTime.toFixed(1)}ms`); + console.log(`Lazy: ${lazyFileCount} files in ${lazyTime.toFixed(1)}ms`); + console.log(`Ratio: eager is ${ratio.toFixed(2)}x slower than lazy`); + + // -- Assertions -- + expect(lazyFileCount).toBeLessThan(eagerFileCount); + expect(lazyTime).toBeLessThan(eagerTime); + }, +); diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts new file mode 100644 index 00000000..9a120cf5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-01 (seed 101) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord101 { + a101: { x: number; y: string; z: boolean }; + b101: { p: string[]; q: Record }; + c101: { nested: { deep: { deeper: { deepest: string } } } }; + d101: number; + e101: string; + f101: boolean; + g101: null; + h101: undefined; + i101: bigint; + j101: symbol; +} + +type PartialBig101 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten101 = T extends Array ? Flatten101 : T; +type Nested101 = number[][][][][][][][][][]; +type Flat101 = Flatten101; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly101 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly101 : T[K]; +}; +type DeepRequired101 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired101 : T[K]; +}; +type FR101 = DeepReadonly101>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion101 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha101 = Extract; +type ExcludeZulu101 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA101 { width: number; height: number; depth: number } +interface ShapeB101 { color: string; opacity: number; blend: string } +interface ShapeC101 { x: number; y: number; z: number; w: number } +interface ShapeD101 { label: string; title: string; summary: string } + +type Combined101 = ShapeA101 & ShapeB101 & ShapeC101 & ShapeD101; +type OptionalAll101 = { [K in keyof Combined101]?: Combined101[K] }; +type RequiredAll101 = { [K in keyof Combined101]-?: Combined101[K] }; +type ReadonlyAll101 = { readonly [K in keyof Combined101]: Combined101[K] }; +type NullableAll101 = { [K in keyof Combined101]: Combined101[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString101 = T extends string ? true : false; +type IsNumber101 = T extends number ? true : false; +type TypeName101 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames101 = { + [K in keyof BigRecord101]: TypeName101; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb101 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource101 = "user" | "post" | "comment" | "tag" | "category"; +type Action101 = `${Verb101}_${Resource101}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise101 = T extends Promise ? UnwrapPromise101 : T; +type UnwrapArray101 = T extends (infer U)[] ? UnwrapArray101 : T; +type Head101 = T extends [infer H, ...infer _] ? H : never; +type Tail101 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation101 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation101>] + : never; + +type SmallUnion101 = "a" | "b" | "c" | "d"; +type AllPerms101 = Permutation101; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig101, + Flat101, + FR101, + BigUnion101, + ExtractAlpha101, + ExcludeZulu101, + OptionalAll101, + RequiredAll101, + ReadonlyAll101, + NullableAll101, + TypeNames101, + Action101, + AllPerms101, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts new file mode 100644 index 00000000..505c4ebd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-02 (seed 102) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord102 { + a102: { x: number; y: string; z: boolean }; + b102: { p: string[]; q: Record }; + c102: { nested: { deep: { deeper: { deepest: string } } } }; + d102: number; + e102: string; + f102: boolean; + g102: null; + h102: undefined; + i102: bigint; + j102: symbol; +} + +type PartialBig102 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten102 = T extends Array ? Flatten102 : T; +type Nested102 = number[][][][][][][][][][]; +type Flat102 = Flatten102; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly102 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly102 : T[K]; +}; +type DeepRequired102 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired102 : T[K]; +}; +type FR102 = DeepReadonly102>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion102 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha102 = Extract; +type ExcludeZulu102 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA102 { width: number; height: number; depth: number } +interface ShapeB102 { color: string; opacity: number; blend: string } +interface ShapeC102 { x: number; y: number; z: number; w: number } +interface ShapeD102 { label: string; title: string; summary: string } + +type Combined102 = ShapeA102 & ShapeB102 & ShapeC102 & ShapeD102; +type OptionalAll102 = { [K in keyof Combined102]?: Combined102[K] }; +type RequiredAll102 = { [K in keyof Combined102]-?: Combined102[K] }; +type ReadonlyAll102 = { readonly [K in keyof Combined102]: Combined102[K] }; +type NullableAll102 = { [K in keyof Combined102]: Combined102[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString102 = T extends string ? true : false; +type IsNumber102 = T extends number ? true : false; +type TypeName102 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames102 = { + [K in keyof BigRecord102]: TypeName102; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb102 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource102 = "user" | "post" | "comment" | "tag" | "category"; +type Action102 = `${Verb102}_${Resource102}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise102 = T extends Promise ? UnwrapPromise102 : T; +type UnwrapArray102 = T extends (infer U)[] ? UnwrapArray102 : T; +type Head102 = T extends [infer H, ...infer _] ? H : never; +type Tail102 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation102 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation102>] + : never; + +type SmallUnion102 = "a" | "b" | "c" | "d"; +type AllPerms102 = Permutation102; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig102, + Flat102, + FR102, + BigUnion102, + ExtractAlpha102, + ExcludeZulu102, + OptionalAll102, + RequiredAll102, + ReadonlyAll102, + NullableAll102, + TypeNames102, + Action102, + AllPerms102, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts new file mode 100644 index 00000000..47a4df9e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-03 (seed 103) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord103 { + a103: { x: number; y: string; z: boolean }; + b103: { p: string[]; q: Record }; + c103: { nested: { deep: { deeper: { deepest: string } } } }; + d103: number; + e103: string; + f103: boolean; + g103: null; + h103: undefined; + i103: bigint; + j103: symbol; +} + +type PartialBig103 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten103 = T extends Array ? Flatten103 : T; +type Nested103 = number[][][][][][][][][][]; +type Flat103 = Flatten103; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly103 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly103 : T[K]; +}; +type DeepRequired103 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired103 : T[K]; +}; +type FR103 = DeepReadonly103>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion103 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha103 = Extract; +type ExcludeZulu103 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA103 { width: number; height: number; depth: number } +interface ShapeB103 { color: string; opacity: number; blend: string } +interface ShapeC103 { x: number; y: number; z: number; w: number } +interface ShapeD103 { label: string; title: string; summary: string } + +type Combined103 = ShapeA103 & ShapeB103 & ShapeC103 & ShapeD103; +type OptionalAll103 = { [K in keyof Combined103]?: Combined103[K] }; +type RequiredAll103 = { [K in keyof Combined103]-?: Combined103[K] }; +type ReadonlyAll103 = { readonly [K in keyof Combined103]: Combined103[K] }; +type NullableAll103 = { [K in keyof Combined103]: Combined103[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString103 = T extends string ? true : false; +type IsNumber103 = T extends number ? true : false; +type TypeName103 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames103 = { + [K in keyof BigRecord103]: TypeName103; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb103 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource103 = "user" | "post" | "comment" | "tag" | "category"; +type Action103 = `${Verb103}_${Resource103}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise103 = T extends Promise ? UnwrapPromise103 : T; +type UnwrapArray103 = T extends (infer U)[] ? UnwrapArray103 : T; +type Head103 = T extends [infer H, ...infer _] ? H : never; +type Tail103 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation103 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation103>] + : never; + +type SmallUnion103 = "a" | "b" | "c" | "d"; +type AllPerms103 = Permutation103; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig103, + Flat103, + FR103, + BigUnion103, + ExtractAlpha103, + ExcludeZulu103, + OptionalAll103, + RequiredAll103, + ReadonlyAll103, + NullableAll103, + TypeNames103, + Action103, + AllPerms103, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts new file mode 100644 index 00000000..8eb31979 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-04 (seed 104) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord104 { + a104: { x: number; y: string; z: boolean }; + b104: { p: string[]; q: Record }; + c104: { nested: { deep: { deeper: { deepest: string } } } }; + d104: number; + e104: string; + f104: boolean; + g104: null; + h104: undefined; + i104: bigint; + j104: symbol; +} + +type PartialBig104 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten104 = T extends Array ? Flatten104 : T; +type Nested104 = number[][][][][][][][][][]; +type Flat104 = Flatten104; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly104 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly104 : T[K]; +}; +type DeepRequired104 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired104 : T[K]; +}; +type FR104 = DeepReadonly104>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion104 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha104 = Extract; +type ExcludeZulu104 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA104 { width: number; height: number; depth: number } +interface ShapeB104 { color: string; opacity: number; blend: string } +interface ShapeC104 { x: number; y: number; z: number; w: number } +interface ShapeD104 { label: string; title: string; summary: string } + +type Combined104 = ShapeA104 & ShapeB104 & ShapeC104 & ShapeD104; +type OptionalAll104 = { [K in keyof Combined104]?: Combined104[K] }; +type RequiredAll104 = { [K in keyof Combined104]-?: Combined104[K] }; +type ReadonlyAll104 = { readonly [K in keyof Combined104]: Combined104[K] }; +type NullableAll104 = { [K in keyof Combined104]: Combined104[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString104 = T extends string ? true : false; +type IsNumber104 = T extends number ? true : false; +type TypeName104 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames104 = { + [K in keyof BigRecord104]: TypeName104; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb104 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource104 = "user" | "post" | "comment" | "tag" | "category"; +type Action104 = `${Verb104}_${Resource104}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise104 = T extends Promise ? UnwrapPromise104 : T; +type UnwrapArray104 = T extends (infer U)[] ? UnwrapArray104 : T; +type Head104 = T extends [infer H, ...infer _] ? H : never; +type Tail104 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation104 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation104>] + : never; + +type SmallUnion104 = "a" | "b" | "c" | "d"; +type AllPerms104 = Permutation104; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig104, + Flat104, + FR104, + BigUnion104, + ExtractAlpha104, + ExcludeZulu104, + OptionalAll104, + RequiredAll104, + ReadonlyAll104, + NullableAll104, + TypeNames104, + Action104, + AllPerms104, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts new file mode 100644 index 00000000..f5938fb7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-05 (seed 105) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord105 { + a105: { x: number; y: string; z: boolean }; + b105: { p: string[]; q: Record }; + c105: { nested: { deep: { deeper: { deepest: string } } } }; + d105: number; + e105: string; + f105: boolean; + g105: null; + h105: undefined; + i105: bigint; + j105: symbol; +} + +type PartialBig105 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten105 = T extends Array ? Flatten105 : T; +type Nested105 = number[][][][][][][][][][]; +type Flat105 = Flatten105; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly105 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly105 : T[K]; +}; +type DeepRequired105 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired105 : T[K]; +}; +type FR105 = DeepReadonly105>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion105 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha105 = Extract; +type ExcludeZulu105 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA105 { width: number; height: number; depth: number } +interface ShapeB105 { color: string; opacity: number; blend: string } +interface ShapeC105 { x: number; y: number; z: number; w: number } +interface ShapeD105 { label: string; title: string; summary: string } + +type Combined105 = ShapeA105 & ShapeB105 & ShapeC105 & ShapeD105; +type OptionalAll105 = { [K in keyof Combined105]?: Combined105[K] }; +type RequiredAll105 = { [K in keyof Combined105]-?: Combined105[K] }; +type ReadonlyAll105 = { readonly [K in keyof Combined105]: Combined105[K] }; +type NullableAll105 = { [K in keyof Combined105]: Combined105[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString105 = T extends string ? true : false; +type IsNumber105 = T extends number ? true : false; +type TypeName105 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames105 = { + [K in keyof BigRecord105]: TypeName105; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb105 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource105 = "user" | "post" | "comment" | "tag" | "category"; +type Action105 = `${Verb105}_${Resource105}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise105 = T extends Promise ? UnwrapPromise105 : T; +type UnwrapArray105 = T extends (infer U)[] ? UnwrapArray105 : T; +type Head105 = T extends [infer H, ...infer _] ? H : never; +type Tail105 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation105 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation105>] + : never; + +type SmallUnion105 = "a" | "b" | "c" | "d"; +type AllPerms105 = Permutation105; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig105, + Flat105, + FR105, + BigUnion105, + ExtractAlpha105, + ExcludeZulu105, + OptionalAll105, + RequiredAll105, + ReadonlyAll105, + NullableAll105, + TypeNames105, + Action105, + AllPerms105, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts new file mode 100644 index 00000000..8035811a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-06 (seed 106) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord106 { + a106: { x: number; y: string; z: boolean }; + b106: { p: string[]; q: Record }; + c106: { nested: { deep: { deeper: { deepest: string } } } }; + d106: number; + e106: string; + f106: boolean; + g106: null; + h106: undefined; + i106: bigint; + j106: symbol; +} + +type PartialBig106 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten106 = T extends Array ? Flatten106 : T; +type Nested106 = number[][][][][][][][][][]; +type Flat106 = Flatten106; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly106 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly106 : T[K]; +}; +type DeepRequired106 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired106 : T[K]; +}; +type FR106 = DeepReadonly106>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion106 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha106 = Extract; +type ExcludeZulu106 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA106 { width: number; height: number; depth: number } +interface ShapeB106 { color: string; opacity: number; blend: string } +interface ShapeC106 { x: number; y: number; z: number; w: number } +interface ShapeD106 { label: string; title: string; summary: string } + +type Combined106 = ShapeA106 & ShapeB106 & ShapeC106 & ShapeD106; +type OptionalAll106 = { [K in keyof Combined106]?: Combined106[K] }; +type RequiredAll106 = { [K in keyof Combined106]-?: Combined106[K] }; +type ReadonlyAll106 = { readonly [K in keyof Combined106]: Combined106[K] }; +type NullableAll106 = { [K in keyof Combined106]: Combined106[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString106 = T extends string ? true : false; +type IsNumber106 = T extends number ? true : false; +type TypeName106 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames106 = { + [K in keyof BigRecord106]: TypeName106; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb106 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource106 = "user" | "post" | "comment" | "tag" | "category"; +type Action106 = `${Verb106}_${Resource106}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise106 = T extends Promise ? UnwrapPromise106 : T; +type UnwrapArray106 = T extends (infer U)[] ? UnwrapArray106 : T; +type Head106 = T extends [infer H, ...infer _] ? H : never; +type Tail106 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation106 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation106>] + : never; + +type SmallUnion106 = "a" | "b" | "c" | "d"; +type AllPerms106 = Permutation106; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig106, + Flat106, + FR106, + BigUnion106, + ExtractAlpha106, + ExcludeZulu106, + OptionalAll106, + RequiredAll106, + ReadonlyAll106, + NullableAll106, + TypeNames106, + Action106, + AllPerms106, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts new file mode 100644 index 00000000..b8deced3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-07 (seed 107) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord107 { + a107: { x: number; y: string; z: boolean }; + b107: { p: string[]; q: Record }; + c107: { nested: { deep: { deeper: { deepest: string } } } }; + d107: number; + e107: string; + f107: boolean; + g107: null; + h107: undefined; + i107: bigint; + j107: symbol; +} + +type PartialBig107 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten107 = T extends Array ? Flatten107 : T; +type Nested107 = number[][][][][][][][][][]; +type Flat107 = Flatten107; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly107 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly107 : T[K]; +}; +type DeepRequired107 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired107 : T[K]; +}; +type FR107 = DeepReadonly107>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion107 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha107 = Extract; +type ExcludeZulu107 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA107 { width: number; height: number; depth: number } +interface ShapeB107 { color: string; opacity: number; blend: string } +interface ShapeC107 { x: number; y: number; z: number; w: number } +interface ShapeD107 { label: string; title: string; summary: string } + +type Combined107 = ShapeA107 & ShapeB107 & ShapeC107 & ShapeD107; +type OptionalAll107 = { [K in keyof Combined107]?: Combined107[K] }; +type RequiredAll107 = { [K in keyof Combined107]-?: Combined107[K] }; +type ReadonlyAll107 = { readonly [K in keyof Combined107]: Combined107[K] }; +type NullableAll107 = { [K in keyof Combined107]: Combined107[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString107 = T extends string ? true : false; +type IsNumber107 = T extends number ? true : false; +type TypeName107 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames107 = { + [K in keyof BigRecord107]: TypeName107; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb107 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource107 = "user" | "post" | "comment" | "tag" | "category"; +type Action107 = `${Verb107}_${Resource107}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise107 = T extends Promise ? UnwrapPromise107 : T; +type UnwrapArray107 = T extends (infer U)[] ? UnwrapArray107 : T; +type Head107 = T extends [infer H, ...infer _] ? H : never; +type Tail107 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation107 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation107>] + : never; + +type SmallUnion107 = "a" | "b" | "c" | "d"; +type AllPerms107 = Permutation107; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig107, + Flat107, + FR107, + BigUnion107, + ExtractAlpha107, + ExcludeZulu107, + OptionalAll107, + RequiredAll107, + ReadonlyAll107, + NullableAll107, + TypeNames107, + Action107, + AllPerms107, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts new file mode 100644 index 00000000..9b1af810 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-08 (seed 108) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord108 { + a108: { x: number; y: string; z: boolean }; + b108: { p: string[]; q: Record }; + c108: { nested: { deep: { deeper: { deepest: string } } } }; + d108: number; + e108: string; + f108: boolean; + g108: null; + h108: undefined; + i108: bigint; + j108: symbol; +} + +type PartialBig108 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten108 = T extends Array ? Flatten108 : T; +type Nested108 = number[][][][][][][][][][]; +type Flat108 = Flatten108; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly108 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly108 : T[K]; +}; +type DeepRequired108 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired108 : T[K]; +}; +type FR108 = DeepReadonly108>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion108 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha108 = Extract; +type ExcludeZulu108 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA108 { width: number; height: number; depth: number } +interface ShapeB108 { color: string; opacity: number; blend: string } +interface ShapeC108 { x: number; y: number; z: number; w: number } +interface ShapeD108 { label: string; title: string; summary: string } + +type Combined108 = ShapeA108 & ShapeB108 & ShapeC108 & ShapeD108; +type OptionalAll108 = { [K in keyof Combined108]?: Combined108[K] }; +type RequiredAll108 = { [K in keyof Combined108]-?: Combined108[K] }; +type ReadonlyAll108 = { readonly [K in keyof Combined108]: Combined108[K] }; +type NullableAll108 = { [K in keyof Combined108]: Combined108[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString108 = T extends string ? true : false; +type IsNumber108 = T extends number ? true : false; +type TypeName108 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames108 = { + [K in keyof BigRecord108]: TypeName108; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb108 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource108 = "user" | "post" | "comment" | "tag" | "category"; +type Action108 = `${Verb108}_${Resource108}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise108 = T extends Promise ? UnwrapPromise108 : T; +type UnwrapArray108 = T extends (infer U)[] ? UnwrapArray108 : T; +type Head108 = T extends [infer H, ...infer _] ? H : never; +type Tail108 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation108 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation108>] + : never; + +type SmallUnion108 = "a" | "b" | "c" | "d"; +type AllPerms108 = Permutation108; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig108, + Flat108, + FR108, + BigUnion108, + ExtractAlpha108, + ExcludeZulu108, + OptionalAll108, + RequiredAll108, + ReadonlyAll108, + NullableAll108, + TypeNames108, + Action108, + AllPerms108, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts new file mode 100644 index 00000000..7b3450be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-09 (seed 109) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord109 { + a109: { x: number; y: string; z: boolean }; + b109: { p: string[]; q: Record }; + c109: { nested: { deep: { deeper: { deepest: string } } } }; + d109: number; + e109: string; + f109: boolean; + g109: null; + h109: undefined; + i109: bigint; + j109: symbol; +} + +type PartialBig109 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten109 = T extends Array ? Flatten109 : T; +type Nested109 = number[][][][][][][][][][]; +type Flat109 = Flatten109; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly109 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly109 : T[K]; +}; +type DeepRequired109 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired109 : T[K]; +}; +type FR109 = DeepReadonly109>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion109 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha109 = Extract; +type ExcludeZulu109 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA109 { width: number; height: number; depth: number } +interface ShapeB109 { color: string; opacity: number; blend: string } +interface ShapeC109 { x: number; y: number; z: number; w: number } +interface ShapeD109 { label: string; title: string; summary: string } + +type Combined109 = ShapeA109 & ShapeB109 & ShapeC109 & ShapeD109; +type OptionalAll109 = { [K in keyof Combined109]?: Combined109[K] }; +type RequiredAll109 = { [K in keyof Combined109]-?: Combined109[K] }; +type ReadonlyAll109 = { readonly [K in keyof Combined109]: Combined109[K] }; +type NullableAll109 = { [K in keyof Combined109]: Combined109[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString109 = T extends string ? true : false; +type IsNumber109 = T extends number ? true : false; +type TypeName109 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames109 = { + [K in keyof BigRecord109]: TypeName109; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb109 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource109 = "user" | "post" | "comment" | "tag" | "category"; +type Action109 = `${Verb109}_${Resource109}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise109 = T extends Promise ? UnwrapPromise109 : T; +type UnwrapArray109 = T extends (infer U)[] ? UnwrapArray109 : T; +type Head109 = T extends [infer H, ...infer _] ? H : never; +type Tail109 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation109 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation109>] + : never; + +type SmallUnion109 = "a" | "b" | "c" | "d"; +type AllPerms109 = Permutation109; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig109, + Flat109, + FR109, + BigUnion109, + ExtractAlpha109, + ExcludeZulu109, + OptionalAll109, + RequiredAll109, + ReadonlyAll109, + NullableAll109, + TypeNames109, + Action109, + AllPerms109, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts new file mode 100644 index 00000000..2627547d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-10 (seed 110) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord110 { + a110: { x: number; y: string; z: boolean }; + b110: { p: string[]; q: Record }; + c110: { nested: { deep: { deeper: { deepest: string } } } }; + d110: number; + e110: string; + f110: boolean; + g110: null; + h110: undefined; + i110: bigint; + j110: symbol; +} + +type PartialBig110 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten110 = T extends Array ? Flatten110 : T; +type Nested110 = number[][][][][][][][][][]; +type Flat110 = Flatten110; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly110 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly110 : T[K]; +}; +type DeepRequired110 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired110 : T[K]; +}; +type FR110 = DeepReadonly110>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion110 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha110 = Extract; +type ExcludeZulu110 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA110 { width: number; height: number; depth: number } +interface ShapeB110 { color: string; opacity: number; blend: string } +interface ShapeC110 { x: number; y: number; z: number; w: number } +interface ShapeD110 { label: string; title: string; summary: string } + +type Combined110 = ShapeA110 & ShapeB110 & ShapeC110 & ShapeD110; +type OptionalAll110 = { [K in keyof Combined110]?: Combined110[K] }; +type RequiredAll110 = { [K in keyof Combined110]-?: Combined110[K] }; +type ReadonlyAll110 = { readonly [K in keyof Combined110]: Combined110[K] }; +type NullableAll110 = { [K in keyof Combined110]: Combined110[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString110 = T extends string ? true : false; +type IsNumber110 = T extends number ? true : false; +type TypeName110 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames110 = { + [K in keyof BigRecord110]: TypeName110; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb110 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource110 = "user" | "post" | "comment" | "tag" | "category"; +type Action110 = `${Verb110}_${Resource110}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise110 = T extends Promise ? UnwrapPromise110 : T; +type UnwrapArray110 = T extends (infer U)[] ? UnwrapArray110 : T; +type Head110 = T extends [infer H, ...infer _] ? H : never; +type Tail110 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation110 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation110>] + : never; + +type SmallUnion110 = "a" | "b" | "c" | "d"; +type AllPerms110 = Permutation110; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig110, + Flat110, + FR110, + BigUnion110, + ExtractAlpha110, + ExcludeZulu110, + OptionalAll110, + RequiredAll110, + ReadonlyAll110, + NullableAll110, + TypeNames110, + Action110, + AllPerms110, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts new file mode 100644 index 00000000..c6d8072d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-11 (seed 111) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord111 { + a111: { x: number; y: string; z: boolean }; + b111: { p: string[]; q: Record }; + c111: { nested: { deep: { deeper: { deepest: string } } } }; + d111: number; + e111: string; + f111: boolean; + g111: null; + h111: undefined; + i111: bigint; + j111: symbol; +} + +type PartialBig111 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten111 = T extends Array ? Flatten111 : T; +type Nested111 = number[][][][][][][][][][]; +type Flat111 = Flatten111; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly111 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly111 : T[K]; +}; +type DeepRequired111 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired111 : T[K]; +}; +type FR111 = DeepReadonly111>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion111 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha111 = Extract; +type ExcludeZulu111 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA111 { width: number; height: number; depth: number } +interface ShapeB111 { color: string; opacity: number; blend: string } +interface ShapeC111 { x: number; y: number; z: number; w: number } +interface ShapeD111 { label: string; title: string; summary: string } + +type Combined111 = ShapeA111 & ShapeB111 & ShapeC111 & ShapeD111; +type OptionalAll111 = { [K in keyof Combined111]?: Combined111[K] }; +type RequiredAll111 = { [K in keyof Combined111]-?: Combined111[K] }; +type ReadonlyAll111 = { readonly [K in keyof Combined111]: Combined111[K] }; +type NullableAll111 = { [K in keyof Combined111]: Combined111[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString111 = T extends string ? true : false; +type IsNumber111 = T extends number ? true : false; +type TypeName111 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames111 = { + [K in keyof BigRecord111]: TypeName111; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb111 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource111 = "user" | "post" | "comment" | "tag" | "category"; +type Action111 = `${Verb111}_${Resource111}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise111 = T extends Promise ? UnwrapPromise111 : T; +type UnwrapArray111 = T extends (infer U)[] ? UnwrapArray111 : T; +type Head111 = T extends [infer H, ...infer _] ? H : never; +type Tail111 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation111 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation111>] + : never; + +type SmallUnion111 = "a" | "b" | "c" | "d"; +type AllPerms111 = Permutation111; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig111, + Flat111, + FR111, + BigUnion111, + ExtractAlpha111, + ExcludeZulu111, + OptionalAll111, + RequiredAll111, + ReadonlyAll111, + NullableAll111, + TypeNames111, + Action111, + AllPerms111, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts new file mode 100644 index 00000000..21803e9d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-12 (seed 112) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord112 { + a112: { x: number; y: string; z: boolean }; + b112: { p: string[]; q: Record }; + c112: { nested: { deep: { deeper: { deepest: string } } } }; + d112: number; + e112: string; + f112: boolean; + g112: null; + h112: undefined; + i112: bigint; + j112: symbol; +} + +type PartialBig112 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten112 = T extends Array ? Flatten112 : T; +type Nested112 = number[][][][][][][][][][]; +type Flat112 = Flatten112; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly112 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly112 : T[K]; +}; +type DeepRequired112 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired112 : T[K]; +}; +type FR112 = DeepReadonly112>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion112 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha112 = Extract; +type ExcludeZulu112 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA112 { width: number; height: number; depth: number } +interface ShapeB112 { color: string; opacity: number; blend: string } +interface ShapeC112 { x: number; y: number; z: number; w: number } +interface ShapeD112 { label: string; title: string; summary: string } + +type Combined112 = ShapeA112 & ShapeB112 & ShapeC112 & ShapeD112; +type OptionalAll112 = { [K in keyof Combined112]?: Combined112[K] }; +type RequiredAll112 = { [K in keyof Combined112]-?: Combined112[K] }; +type ReadonlyAll112 = { readonly [K in keyof Combined112]: Combined112[K] }; +type NullableAll112 = { [K in keyof Combined112]: Combined112[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString112 = T extends string ? true : false; +type IsNumber112 = T extends number ? true : false; +type TypeName112 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames112 = { + [K in keyof BigRecord112]: TypeName112; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb112 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource112 = "user" | "post" | "comment" | "tag" | "category"; +type Action112 = `${Verb112}_${Resource112}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise112 = T extends Promise ? UnwrapPromise112 : T; +type UnwrapArray112 = T extends (infer U)[] ? UnwrapArray112 : T; +type Head112 = T extends [infer H, ...infer _] ? H : never; +type Tail112 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation112 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation112>] + : never; + +type SmallUnion112 = "a" | "b" | "c" | "d"; +type AllPerms112 = Permutation112; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig112, + Flat112, + FR112, + BigUnion112, + ExtractAlpha112, + ExcludeZulu112, + OptionalAll112, + RequiredAll112, + ReadonlyAll112, + NullableAll112, + TypeNames112, + Action112, + AllPerms112, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts new file mode 100644 index 00000000..0407f75b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-13 (seed 113) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord113 { + a113: { x: number; y: string; z: boolean }; + b113: { p: string[]; q: Record }; + c113: { nested: { deep: { deeper: { deepest: string } } } }; + d113: number; + e113: string; + f113: boolean; + g113: null; + h113: undefined; + i113: bigint; + j113: symbol; +} + +type PartialBig113 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten113 = T extends Array ? Flatten113 : T; +type Nested113 = number[][][][][][][][][][]; +type Flat113 = Flatten113; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly113 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly113 : T[K]; +}; +type DeepRequired113 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired113 : T[K]; +}; +type FR113 = DeepReadonly113>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion113 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha113 = Extract; +type ExcludeZulu113 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA113 { width: number; height: number; depth: number } +interface ShapeB113 { color: string; opacity: number; blend: string } +interface ShapeC113 { x: number; y: number; z: number; w: number } +interface ShapeD113 { label: string; title: string; summary: string } + +type Combined113 = ShapeA113 & ShapeB113 & ShapeC113 & ShapeD113; +type OptionalAll113 = { [K in keyof Combined113]?: Combined113[K] }; +type RequiredAll113 = { [K in keyof Combined113]-?: Combined113[K] }; +type ReadonlyAll113 = { readonly [K in keyof Combined113]: Combined113[K] }; +type NullableAll113 = { [K in keyof Combined113]: Combined113[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString113 = T extends string ? true : false; +type IsNumber113 = T extends number ? true : false; +type TypeName113 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames113 = { + [K in keyof BigRecord113]: TypeName113; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb113 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource113 = "user" | "post" | "comment" | "tag" | "category"; +type Action113 = `${Verb113}_${Resource113}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise113 = T extends Promise ? UnwrapPromise113 : T; +type UnwrapArray113 = T extends (infer U)[] ? UnwrapArray113 : T; +type Head113 = T extends [infer H, ...infer _] ? H : never; +type Tail113 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation113 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation113>] + : never; + +type SmallUnion113 = "a" | "b" | "c" | "d"; +type AllPerms113 = Permutation113; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig113, + Flat113, + FR113, + BigUnion113, + ExtractAlpha113, + ExcludeZulu113, + OptionalAll113, + RequiredAll113, + ReadonlyAll113, + NullableAll113, + TypeNames113, + Action113, + AllPerms113, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts new file mode 100644 index 00000000..eae6b01e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-14 (seed 114) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord114 { + a114: { x: number; y: string; z: boolean }; + b114: { p: string[]; q: Record }; + c114: { nested: { deep: { deeper: { deepest: string } } } }; + d114: number; + e114: string; + f114: boolean; + g114: null; + h114: undefined; + i114: bigint; + j114: symbol; +} + +type PartialBig114 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten114 = T extends Array ? Flatten114 : T; +type Nested114 = number[][][][][][][][][][]; +type Flat114 = Flatten114; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly114 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly114 : T[K]; +}; +type DeepRequired114 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired114 : T[K]; +}; +type FR114 = DeepReadonly114>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion114 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha114 = Extract; +type ExcludeZulu114 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA114 { width: number; height: number; depth: number } +interface ShapeB114 { color: string; opacity: number; blend: string } +interface ShapeC114 { x: number; y: number; z: number; w: number } +interface ShapeD114 { label: string; title: string; summary: string } + +type Combined114 = ShapeA114 & ShapeB114 & ShapeC114 & ShapeD114; +type OptionalAll114 = { [K in keyof Combined114]?: Combined114[K] }; +type RequiredAll114 = { [K in keyof Combined114]-?: Combined114[K] }; +type ReadonlyAll114 = { readonly [K in keyof Combined114]: Combined114[K] }; +type NullableAll114 = { [K in keyof Combined114]: Combined114[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString114 = T extends string ? true : false; +type IsNumber114 = T extends number ? true : false; +type TypeName114 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames114 = { + [K in keyof BigRecord114]: TypeName114; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb114 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource114 = "user" | "post" | "comment" | "tag" | "category"; +type Action114 = `${Verb114}_${Resource114}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise114 = T extends Promise ? UnwrapPromise114 : T; +type UnwrapArray114 = T extends (infer U)[] ? UnwrapArray114 : T; +type Head114 = T extends [infer H, ...infer _] ? H : never; +type Tail114 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation114 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation114>] + : never; + +type SmallUnion114 = "a" | "b" | "c" | "d"; +type AllPerms114 = Permutation114; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig114, + Flat114, + FR114, + BigUnion114, + ExtractAlpha114, + ExcludeZulu114, + OptionalAll114, + RequiredAll114, + ReadonlyAll114, + NullableAll114, + TypeNames114, + Action114, + AllPerms114, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts new file mode 100644 index 00000000..ec59e747 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-15 (seed 115) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord115 { + a115: { x: number; y: string; z: boolean }; + b115: { p: string[]; q: Record }; + c115: { nested: { deep: { deeper: { deepest: string } } } }; + d115: number; + e115: string; + f115: boolean; + g115: null; + h115: undefined; + i115: bigint; + j115: symbol; +} + +type PartialBig115 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten115 = T extends Array ? Flatten115 : T; +type Nested115 = number[][][][][][][][][][]; +type Flat115 = Flatten115; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly115 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly115 : T[K]; +}; +type DeepRequired115 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired115 : T[K]; +}; +type FR115 = DeepReadonly115>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion115 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha115 = Extract; +type ExcludeZulu115 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA115 { width: number; height: number; depth: number } +interface ShapeB115 { color: string; opacity: number; blend: string } +interface ShapeC115 { x: number; y: number; z: number; w: number } +interface ShapeD115 { label: string; title: string; summary: string } + +type Combined115 = ShapeA115 & ShapeB115 & ShapeC115 & ShapeD115; +type OptionalAll115 = { [K in keyof Combined115]?: Combined115[K] }; +type RequiredAll115 = { [K in keyof Combined115]-?: Combined115[K] }; +type ReadonlyAll115 = { readonly [K in keyof Combined115]: Combined115[K] }; +type NullableAll115 = { [K in keyof Combined115]: Combined115[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString115 = T extends string ? true : false; +type IsNumber115 = T extends number ? true : false; +type TypeName115 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames115 = { + [K in keyof BigRecord115]: TypeName115; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb115 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource115 = "user" | "post" | "comment" | "tag" | "category"; +type Action115 = `${Verb115}_${Resource115}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise115 = T extends Promise ? UnwrapPromise115 : T; +type UnwrapArray115 = T extends (infer U)[] ? UnwrapArray115 : T; +type Head115 = T extends [infer H, ...infer _] ? H : never; +type Tail115 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation115 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation115>] + : never; + +type SmallUnion115 = "a" | "b" | "c" | "d"; +type AllPerms115 = Permutation115; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig115, + Flat115, + FR115, + BigUnion115, + ExtractAlpha115, + ExcludeZulu115, + OptionalAll115, + RequiredAll115, + ReadonlyAll115, + NullableAll115, + TypeNames115, + Action115, + AllPerms115, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts new file mode 100644 index 00000000..8652719f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-16 (seed 116) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord116 { + a116: { x: number; y: string; z: boolean }; + b116: { p: string[]; q: Record }; + c116: { nested: { deep: { deeper: { deepest: string } } } }; + d116: number; + e116: string; + f116: boolean; + g116: null; + h116: undefined; + i116: bigint; + j116: symbol; +} + +type PartialBig116 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten116 = T extends Array ? Flatten116 : T; +type Nested116 = number[][][][][][][][][][]; +type Flat116 = Flatten116; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly116 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly116 : T[K]; +}; +type DeepRequired116 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired116 : T[K]; +}; +type FR116 = DeepReadonly116>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion116 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha116 = Extract; +type ExcludeZulu116 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA116 { width: number; height: number; depth: number } +interface ShapeB116 { color: string; opacity: number; blend: string } +interface ShapeC116 { x: number; y: number; z: number; w: number } +interface ShapeD116 { label: string; title: string; summary: string } + +type Combined116 = ShapeA116 & ShapeB116 & ShapeC116 & ShapeD116; +type OptionalAll116 = { [K in keyof Combined116]?: Combined116[K] }; +type RequiredAll116 = { [K in keyof Combined116]-?: Combined116[K] }; +type ReadonlyAll116 = { readonly [K in keyof Combined116]: Combined116[K] }; +type NullableAll116 = { [K in keyof Combined116]: Combined116[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString116 = T extends string ? true : false; +type IsNumber116 = T extends number ? true : false; +type TypeName116 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames116 = { + [K in keyof BigRecord116]: TypeName116; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb116 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource116 = "user" | "post" | "comment" | "tag" | "category"; +type Action116 = `${Verb116}_${Resource116}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise116 = T extends Promise ? UnwrapPromise116 : T; +type UnwrapArray116 = T extends (infer U)[] ? UnwrapArray116 : T; +type Head116 = T extends [infer H, ...infer _] ? H : never; +type Tail116 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation116 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation116>] + : never; + +type SmallUnion116 = "a" | "b" | "c" | "d"; +type AllPerms116 = Permutation116; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig116, + Flat116, + FR116, + BigUnion116, + ExtractAlpha116, + ExcludeZulu116, + OptionalAll116, + RequiredAll116, + ReadonlyAll116, + NullableAll116, + TypeNames116, + Action116, + AllPerms116, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts new file mode 100644 index 00000000..d948a2c6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-17 (seed 117) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord117 { + a117: { x: number; y: string; z: boolean }; + b117: { p: string[]; q: Record }; + c117: { nested: { deep: { deeper: { deepest: string } } } }; + d117: number; + e117: string; + f117: boolean; + g117: null; + h117: undefined; + i117: bigint; + j117: symbol; +} + +type PartialBig117 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten117 = T extends Array ? Flatten117 : T; +type Nested117 = number[][][][][][][][][][]; +type Flat117 = Flatten117; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly117 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly117 : T[K]; +}; +type DeepRequired117 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired117 : T[K]; +}; +type FR117 = DeepReadonly117>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion117 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha117 = Extract; +type ExcludeZulu117 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA117 { width: number; height: number; depth: number } +interface ShapeB117 { color: string; opacity: number; blend: string } +interface ShapeC117 { x: number; y: number; z: number; w: number } +interface ShapeD117 { label: string; title: string; summary: string } + +type Combined117 = ShapeA117 & ShapeB117 & ShapeC117 & ShapeD117; +type OptionalAll117 = { [K in keyof Combined117]?: Combined117[K] }; +type RequiredAll117 = { [K in keyof Combined117]-?: Combined117[K] }; +type ReadonlyAll117 = { readonly [K in keyof Combined117]: Combined117[K] }; +type NullableAll117 = { [K in keyof Combined117]: Combined117[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString117 = T extends string ? true : false; +type IsNumber117 = T extends number ? true : false; +type TypeName117 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames117 = { + [K in keyof BigRecord117]: TypeName117; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb117 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource117 = "user" | "post" | "comment" | "tag" | "category"; +type Action117 = `${Verb117}_${Resource117}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise117 = T extends Promise ? UnwrapPromise117 : T; +type UnwrapArray117 = T extends (infer U)[] ? UnwrapArray117 : T; +type Head117 = T extends [infer H, ...infer _] ? H : never; +type Tail117 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation117 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation117>] + : never; + +type SmallUnion117 = "a" | "b" | "c" | "d"; +type AllPerms117 = Permutation117; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig117, + Flat117, + FR117, + BigUnion117, + ExtractAlpha117, + ExcludeZulu117, + OptionalAll117, + RequiredAll117, + ReadonlyAll117, + NullableAll117, + TypeNames117, + Action117, + AllPerms117, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts new file mode 100644 index 00000000..ce6e5d3f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-18 (seed 118) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord118 { + a118: { x: number; y: string; z: boolean }; + b118: { p: string[]; q: Record }; + c118: { nested: { deep: { deeper: { deepest: string } } } }; + d118: number; + e118: string; + f118: boolean; + g118: null; + h118: undefined; + i118: bigint; + j118: symbol; +} + +type PartialBig118 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten118 = T extends Array ? Flatten118 : T; +type Nested118 = number[][][][][][][][][][]; +type Flat118 = Flatten118; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly118 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly118 : T[K]; +}; +type DeepRequired118 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired118 : T[K]; +}; +type FR118 = DeepReadonly118>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion118 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha118 = Extract; +type ExcludeZulu118 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA118 { width: number; height: number; depth: number } +interface ShapeB118 { color: string; opacity: number; blend: string } +interface ShapeC118 { x: number; y: number; z: number; w: number } +interface ShapeD118 { label: string; title: string; summary: string } + +type Combined118 = ShapeA118 & ShapeB118 & ShapeC118 & ShapeD118; +type OptionalAll118 = { [K in keyof Combined118]?: Combined118[K] }; +type RequiredAll118 = { [K in keyof Combined118]-?: Combined118[K] }; +type ReadonlyAll118 = { readonly [K in keyof Combined118]: Combined118[K] }; +type NullableAll118 = { [K in keyof Combined118]: Combined118[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString118 = T extends string ? true : false; +type IsNumber118 = T extends number ? true : false; +type TypeName118 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames118 = { + [K in keyof BigRecord118]: TypeName118; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb118 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource118 = "user" | "post" | "comment" | "tag" | "category"; +type Action118 = `${Verb118}_${Resource118}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise118 = T extends Promise ? UnwrapPromise118 : T; +type UnwrapArray118 = T extends (infer U)[] ? UnwrapArray118 : T; +type Head118 = T extends [infer H, ...infer _] ? H : never; +type Tail118 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation118 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation118>] + : never; + +type SmallUnion118 = "a" | "b" | "c" | "d"; +type AllPerms118 = Permutation118; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig118, + Flat118, + FR118, + BigUnion118, + ExtractAlpha118, + ExcludeZulu118, + OptionalAll118, + RequiredAll118, + ReadonlyAll118, + NullableAll118, + TypeNames118, + Action118, + AllPerms118, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts new file mode 100644 index 00000000..e8f9063b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-19 (seed 119) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord119 { + a119: { x: number; y: string; z: boolean }; + b119: { p: string[]; q: Record }; + c119: { nested: { deep: { deeper: { deepest: string } } } }; + d119: number; + e119: string; + f119: boolean; + g119: null; + h119: undefined; + i119: bigint; + j119: symbol; +} + +type PartialBig119 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten119 = T extends Array ? Flatten119 : T; +type Nested119 = number[][][][][][][][][][]; +type Flat119 = Flatten119; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly119 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly119 : T[K]; +}; +type DeepRequired119 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired119 : T[K]; +}; +type FR119 = DeepReadonly119>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion119 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha119 = Extract; +type ExcludeZulu119 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA119 { width: number; height: number; depth: number } +interface ShapeB119 { color: string; opacity: number; blend: string } +interface ShapeC119 { x: number; y: number; z: number; w: number } +interface ShapeD119 { label: string; title: string; summary: string } + +type Combined119 = ShapeA119 & ShapeB119 & ShapeC119 & ShapeD119; +type OptionalAll119 = { [K in keyof Combined119]?: Combined119[K] }; +type RequiredAll119 = { [K in keyof Combined119]-?: Combined119[K] }; +type ReadonlyAll119 = { readonly [K in keyof Combined119]: Combined119[K] }; +type NullableAll119 = { [K in keyof Combined119]: Combined119[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString119 = T extends string ? true : false; +type IsNumber119 = T extends number ? true : false; +type TypeName119 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames119 = { + [K in keyof BigRecord119]: TypeName119; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb119 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource119 = "user" | "post" | "comment" | "tag" | "category"; +type Action119 = `${Verb119}_${Resource119}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise119 = T extends Promise ? UnwrapPromise119 : T; +type UnwrapArray119 = T extends (infer U)[] ? UnwrapArray119 : T; +type Head119 = T extends [infer H, ...infer _] ? H : never; +type Tail119 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation119 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation119>] + : never; + +type SmallUnion119 = "a" | "b" | "c" | "d"; +type AllPerms119 = Permutation119; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig119, + Flat119, + FR119, + BigUnion119, + ExtractAlpha119, + ExcludeZulu119, + OptionalAll119, + RequiredAll119, + ReadonlyAll119, + NullableAll119, + TypeNames119, + Action119, + AllPerms119, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts new file mode 100644 index 00000000..9f4dcd96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-20 (seed 120) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord120 { + a120: { x: number; y: string; z: boolean }; + b120: { p: string[]; q: Record }; + c120: { nested: { deep: { deeper: { deepest: string } } } }; + d120: number; + e120: string; + f120: boolean; + g120: null; + h120: undefined; + i120: bigint; + j120: symbol; +} + +type PartialBig120 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten120 = T extends Array ? Flatten120 : T; +type Nested120 = number[][][][][][][][][][]; +type Flat120 = Flatten120; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly120 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly120 : T[K]; +}; +type DeepRequired120 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired120 : T[K]; +}; +type FR120 = DeepReadonly120>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion120 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha120 = Extract; +type ExcludeZulu120 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA120 { width: number; height: number; depth: number } +interface ShapeB120 { color: string; opacity: number; blend: string } +interface ShapeC120 { x: number; y: number; z: number; w: number } +interface ShapeD120 { label: string; title: string; summary: string } + +type Combined120 = ShapeA120 & ShapeB120 & ShapeC120 & ShapeD120; +type OptionalAll120 = { [K in keyof Combined120]?: Combined120[K] }; +type RequiredAll120 = { [K in keyof Combined120]-?: Combined120[K] }; +type ReadonlyAll120 = { readonly [K in keyof Combined120]: Combined120[K] }; +type NullableAll120 = { [K in keyof Combined120]: Combined120[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString120 = T extends string ? true : false; +type IsNumber120 = T extends number ? true : false; +type TypeName120 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames120 = { + [K in keyof BigRecord120]: TypeName120; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb120 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource120 = "user" | "post" | "comment" | "tag" | "category"; +type Action120 = `${Verb120}_${Resource120}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise120 = T extends Promise ? UnwrapPromise120 : T; +type UnwrapArray120 = T extends (infer U)[] ? UnwrapArray120 : T; +type Head120 = T extends [infer H, ...infer _] ? H : never; +type Tail120 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation120 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation120>] + : never; + +type SmallUnion120 = "a" | "b" | "c" | "d"; +type AllPerms120 = Permutation120; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig120, + Flat120, + FR120, + BigUnion120, + ExtractAlpha120, + ExcludeZulu120, + OptionalAll120, + RequiredAll120, + ReadonlyAll120, + NullableAll120, + TypeNames120, + Action120, + AllPerms120, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts new file mode 100644 index 00000000..7576a978 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-21 (seed 121) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord121 { + a121: { x: number; y: string; z: boolean }; + b121: { p: string[]; q: Record }; + c121: { nested: { deep: { deeper: { deepest: string } } } }; + d121: number; + e121: string; + f121: boolean; + g121: null; + h121: undefined; + i121: bigint; + j121: symbol; +} + +type PartialBig121 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten121 = T extends Array ? Flatten121 : T; +type Nested121 = number[][][][][][][][][][]; +type Flat121 = Flatten121; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly121 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly121 : T[K]; +}; +type DeepRequired121 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired121 : T[K]; +}; +type FR121 = DeepReadonly121>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion121 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha121 = Extract; +type ExcludeZulu121 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA121 { width: number; height: number; depth: number } +interface ShapeB121 { color: string; opacity: number; blend: string } +interface ShapeC121 { x: number; y: number; z: number; w: number } +interface ShapeD121 { label: string; title: string; summary: string } + +type Combined121 = ShapeA121 & ShapeB121 & ShapeC121 & ShapeD121; +type OptionalAll121 = { [K in keyof Combined121]?: Combined121[K] }; +type RequiredAll121 = { [K in keyof Combined121]-?: Combined121[K] }; +type ReadonlyAll121 = { readonly [K in keyof Combined121]: Combined121[K] }; +type NullableAll121 = { [K in keyof Combined121]: Combined121[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString121 = T extends string ? true : false; +type IsNumber121 = T extends number ? true : false; +type TypeName121 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames121 = { + [K in keyof BigRecord121]: TypeName121; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb121 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource121 = "user" | "post" | "comment" | "tag" | "category"; +type Action121 = `${Verb121}_${Resource121}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise121 = T extends Promise ? UnwrapPromise121 : T; +type UnwrapArray121 = T extends (infer U)[] ? UnwrapArray121 : T; +type Head121 = T extends [infer H, ...infer _] ? H : never; +type Tail121 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation121 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation121>] + : never; + +type SmallUnion121 = "a" | "b" | "c" | "d"; +type AllPerms121 = Permutation121; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig121, + Flat121, + FR121, + BigUnion121, + ExtractAlpha121, + ExcludeZulu121, + OptionalAll121, + RequiredAll121, + ReadonlyAll121, + NullableAll121, + TypeNames121, + Action121, + AllPerms121, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts new file mode 100644 index 00000000..0ec6dd82 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-22 (seed 122) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord122 { + a122: { x: number; y: string; z: boolean }; + b122: { p: string[]; q: Record }; + c122: { nested: { deep: { deeper: { deepest: string } } } }; + d122: number; + e122: string; + f122: boolean; + g122: null; + h122: undefined; + i122: bigint; + j122: symbol; +} + +type PartialBig122 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten122 = T extends Array ? Flatten122 : T; +type Nested122 = number[][][][][][][][][][]; +type Flat122 = Flatten122; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly122 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly122 : T[K]; +}; +type DeepRequired122 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired122 : T[K]; +}; +type FR122 = DeepReadonly122>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion122 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha122 = Extract; +type ExcludeZulu122 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA122 { width: number; height: number; depth: number } +interface ShapeB122 { color: string; opacity: number; blend: string } +interface ShapeC122 { x: number; y: number; z: number; w: number } +interface ShapeD122 { label: string; title: string; summary: string } + +type Combined122 = ShapeA122 & ShapeB122 & ShapeC122 & ShapeD122; +type OptionalAll122 = { [K in keyof Combined122]?: Combined122[K] }; +type RequiredAll122 = { [K in keyof Combined122]-?: Combined122[K] }; +type ReadonlyAll122 = { readonly [K in keyof Combined122]: Combined122[K] }; +type NullableAll122 = { [K in keyof Combined122]: Combined122[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString122 = T extends string ? true : false; +type IsNumber122 = T extends number ? true : false; +type TypeName122 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames122 = { + [K in keyof BigRecord122]: TypeName122; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb122 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource122 = "user" | "post" | "comment" | "tag" | "category"; +type Action122 = `${Verb122}_${Resource122}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise122 = T extends Promise ? UnwrapPromise122 : T; +type UnwrapArray122 = T extends (infer U)[] ? UnwrapArray122 : T; +type Head122 = T extends [infer H, ...infer _] ? H : never; +type Tail122 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation122 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation122>] + : never; + +type SmallUnion122 = "a" | "b" | "c" | "d"; +type AllPerms122 = Permutation122; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig122, + Flat122, + FR122, + BigUnion122, + ExtractAlpha122, + ExcludeZulu122, + OptionalAll122, + RequiredAll122, + ReadonlyAll122, + NullableAll122, + TypeNames122, + Action122, + AllPerms122, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts new file mode 100644 index 00000000..6d2f04cc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-23 (seed 123) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord123 { + a123: { x: number; y: string; z: boolean }; + b123: { p: string[]; q: Record }; + c123: { nested: { deep: { deeper: { deepest: string } } } }; + d123: number; + e123: string; + f123: boolean; + g123: null; + h123: undefined; + i123: bigint; + j123: symbol; +} + +type PartialBig123 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten123 = T extends Array ? Flatten123 : T; +type Nested123 = number[][][][][][][][][][]; +type Flat123 = Flatten123; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly123 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly123 : T[K]; +}; +type DeepRequired123 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired123 : T[K]; +}; +type FR123 = DeepReadonly123>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion123 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha123 = Extract; +type ExcludeZulu123 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA123 { width: number; height: number; depth: number } +interface ShapeB123 { color: string; opacity: number; blend: string } +interface ShapeC123 { x: number; y: number; z: number; w: number } +interface ShapeD123 { label: string; title: string; summary: string } + +type Combined123 = ShapeA123 & ShapeB123 & ShapeC123 & ShapeD123; +type OptionalAll123 = { [K in keyof Combined123]?: Combined123[K] }; +type RequiredAll123 = { [K in keyof Combined123]-?: Combined123[K] }; +type ReadonlyAll123 = { readonly [K in keyof Combined123]: Combined123[K] }; +type NullableAll123 = { [K in keyof Combined123]: Combined123[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString123 = T extends string ? true : false; +type IsNumber123 = T extends number ? true : false; +type TypeName123 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames123 = { + [K in keyof BigRecord123]: TypeName123; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb123 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource123 = "user" | "post" | "comment" | "tag" | "category"; +type Action123 = `${Verb123}_${Resource123}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise123 = T extends Promise ? UnwrapPromise123 : T; +type UnwrapArray123 = T extends (infer U)[] ? UnwrapArray123 : T; +type Head123 = T extends [infer H, ...infer _] ? H : never; +type Tail123 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation123 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation123>] + : never; + +type SmallUnion123 = "a" | "b" | "c" | "d"; +type AllPerms123 = Permutation123; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig123, + Flat123, + FR123, + BigUnion123, + ExtractAlpha123, + ExcludeZulu123, + OptionalAll123, + RequiredAll123, + ReadonlyAll123, + NullableAll123, + TypeNames123, + Action123, + AllPerms123, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts new file mode 100644 index 00000000..0a3da76f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-24 (seed 124) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord124 { + a124: { x: number; y: string; z: boolean }; + b124: { p: string[]; q: Record }; + c124: { nested: { deep: { deeper: { deepest: string } } } }; + d124: number; + e124: string; + f124: boolean; + g124: null; + h124: undefined; + i124: bigint; + j124: symbol; +} + +type PartialBig124 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten124 = T extends Array ? Flatten124 : T; +type Nested124 = number[][][][][][][][][][]; +type Flat124 = Flatten124; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly124 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly124 : T[K]; +}; +type DeepRequired124 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired124 : T[K]; +}; +type FR124 = DeepReadonly124>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion124 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha124 = Extract; +type ExcludeZulu124 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA124 { width: number; height: number; depth: number } +interface ShapeB124 { color: string; opacity: number; blend: string } +interface ShapeC124 { x: number; y: number; z: number; w: number } +interface ShapeD124 { label: string; title: string; summary: string } + +type Combined124 = ShapeA124 & ShapeB124 & ShapeC124 & ShapeD124; +type OptionalAll124 = { [K in keyof Combined124]?: Combined124[K] }; +type RequiredAll124 = { [K in keyof Combined124]-?: Combined124[K] }; +type ReadonlyAll124 = { readonly [K in keyof Combined124]: Combined124[K] }; +type NullableAll124 = { [K in keyof Combined124]: Combined124[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString124 = T extends string ? true : false; +type IsNumber124 = T extends number ? true : false; +type TypeName124 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames124 = { + [K in keyof BigRecord124]: TypeName124; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb124 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource124 = "user" | "post" | "comment" | "tag" | "category"; +type Action124 = `${Verb124}_${Resource124}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise124 = T extends Promise ? UnwrapPromise124 : T; +type UnwrapArray124 = T extends (infer U)[] ? UnwrapArray124 : T; +type Head124 = T extends [infer H, ...infer _] ? H : never; +type Tail124 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation124 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation124>] + : never; + +type SmallUnion124 = "a" | "b" | "c" | "d"; +type AllPerms124 = Permutation124; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig124, + Flat124, + FR124, + BigUnion124, + ExtractAlpha124, + ExcludeZulu124, + OptionalAll124, + RequiredAll124, + ReadonlyAll124, + NullableAll124, + TypeNames124, + Action124, + AllPerms124, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts new file mode 100644 index 00000000..5e493681 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-25 (seed 125) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord125 { + a125: { x: number; y: string; z: boolean }; + b125: { p: string[]; q: Record }; + c125: { nested: { deep: { deeper: { deepest: string } } } }; + d125: number; + e125: string; + f125: boolean; + g125: null; + h125: undefined; + i125: bigint; + j125: symbol; +} + +type PartialBig125 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten125 = T extends Array ? Flatten125 : T; +type Nested125 = number[][][][][][][][][][]; +type Flat125 = Flatten125; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly125 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly125 : T[K]; +}; +type DeepRequired125 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired125 : T[K]; +}; +type FR125 = DeepReadonly125>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion125 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha125 = Extract; +type ExcludeZulu125 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA125 { width: number; height: number; depth: number } +interface ShapeB125 { color: string; opacity: number; blend: string } +interface ShapeC125 { x: number; y: number; z: number; w: number } +interface ShapeD125 { label: string; title: string; summary: string } + +type Combined125 = ShapeA125 & ShapeB125 & ShapeC125 & ShapeD125; +type OptionalAll125 = { [K in keyof Combined125]?: Combined125[K] }; +type RequiredAll125 = { [K in keyof Combined125]-?: Combined125[K] }; +type ReadonlyAll125 = { readonly [K in keyof Combined125]: Combined125[K] }; +type NullableAll125 = { [K in keyof Combined125]: Combined125[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString125 = T extends string ? true : false; +type IsNumber125 = T extends number ? true : false; +type TypeName125 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames125 = { + [K in keyof BigRecord125]: TypeName125; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb125 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource125 = "user" | "post" | "comment" | "tag" | "category"; +type Action125 = `${Verb125}_${Resource125}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise125 = T extends Promise ? UnwrapPromise125 : T; +type UnwrapArray125 = T extends (infer U)[] ? UnwrapArray125 : T; +type Head125 = T extends [infer H, ...infer _] ? H : never; +type Tail125 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation125 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation125>] + : never; + +type SmallUnion125 = "a" | "b" | "c" | "d"; +type AllPerms125 = Permutation125; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig125, + Flat125, + FR125, + BigUnion125, + ExtractAlpha125, + ExcludeZulu125, + OptionalAll125, + RequiredAll125, + ReadonlyAll125, + NullableAll125, + TypeNames125, + Action125, + AllPerms125, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts new file mode 100644 index 00000000..4481e817 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-26 (seed 126) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord126 { + a126: { x: number; y: string; z: boolean }; + b126: { p: string[]; q: Record }; + c126: { nested: { deep: { deeper: { deepest: string } } } }; + d126: number; + e126: string; + f126: boolean; + g126: null; + h126: undefined; + i126: bigint; + j126: symbol; +} + +type PartialBig126 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten126 = T extends Array ? Flatten126 : T; +type Nested126 = number[][][][][][][][][][]; +type Flat126 = Flatten126; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly126 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly126 : T[K]; +}; +type DeepRequired126 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired126 : T[K]; +}; +type FR126 = DeepReadonly126>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion126 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha126 = Extract; +type ExcludeZulu126 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA126 { width: number; height: number; depth: number } +interface ShapeB126 { color: string; opacity: number; blend: string } +interface ShapeC126 { x: number; y: number; z: number; w: number } +interface ShapeD126 { label: string; title: string; summary: string } + +type Combined126 = ShapeA126 & ShapeB126 & ShapeC126 & ShapeD126; +type OptionalAll126 = { [K in keyof Combined126]?: Combined126[K] }; +type RequiredAll126 = { [K in keyof Combined126]-?: Combined126[K] }; +type ReadonlyAll126 = { readonly [K in keyof Combined126]: Combined126[K] }; +type NullableAll126 = { [K in keyof Combined126]: Combined126[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString126 = T extends string ? true : false; +type IsNumber126 = T extends number ? true : false; +type TypeName126 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames126 = { + [K in keyof BigRecord126]: TypeName126; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb126 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource126 = "user" | "post" | "comment" | "tag" | "category"; +type Action126 = `${Verb126}_${Resource126}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise126 = T extends Promise ? UnwrapPromise126 : T; +type UnwrapArray126 = T extends (infer U)[] ? UnwrapArray126 : T; +type Head126 = T extends [infer H, ...infer _] ? H : never; +type Tail126 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation126 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation126>] + : never; + +type SmallUnion126 = "a" | "b" | "c" | "d"; +type AllPerms126 = Permutation126; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig126, + Flat126, + FR126, + BigUnion126, + ExtractAlpha126, + ExcludeZulu126, + OptionalAll126, + RequiredAll126, + ReadonlyAll126, + NullableAll126, + TypeNames126, + Action126, + AllPerms126, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts new file mode 100644 index 00000000..706de363 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-27 (seed 127) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord127 { + a127: { x: number; y: string; z: boolean }; + b127: { p: string[]; q: Record }; + c127: { nested: { deep: { deeper: { deepest: string } } } }; + d127: number; + e127: string; + f127: boolean; + g127: null; + h127: undefined; + i127: bigint; + j127: symbol; +} + +type PartialBig127 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten127 = T extends Array ? Flatten127 : T; +type Nested127 = number[][][][][][][][][][]; +type Flat127 = Flatten127; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly127 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly127 : T[K]; +}; +type DeepRequired127 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired127 : T[K]; +}; +type FR127 = DeepReadonly127>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion127 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha127 = Extract; +type ExcludeZulu127 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA127 { width: number; height: number; depth: number } +interface ShapeB127 { color: string; opacity: number; blend: string } +interface ShapeC127 { x: number; y: number; z: number; w: number } +interface ShapeD127 { label: string; title: string; summary: string } + +type Combined127 = ShapeA127 & ShapeB127 & ShapeC127 & ShapeD127; +type OptionalAll127 = { [K in keyof Combined127]?: Combined127[K] }; +type RequiredAll127 = { [K in keyof Combined127]-?: Combined127[K] }; +type ReadonlyAll127 = { readonly [K in keyof Combined127]: Combined127[K] }; +type NullableAll127 = { [K in keyof Combined127]: Combined127[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString127 = T extends string ? true : false; +type IsNumber127 = T extends number ? true : false; +type TypeName127 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames127 = { + [K in keyof BigRecord127]: TypeName127; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb127 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource127 = "user" | "post" | "comment" | "tag" | "category"; +type Action127 = `${Verb127}_${Resource127}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise127 = T extends Promise ? UnwrapPromise127 : T; +type UnwrapArray127 = T extends (infer U)[] ? UnwrapArray127 : T; +type Head127 = T extends [infer H, ...infer _] ? H : never; +type Tail127 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation127 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation127>] + : never; + +type SmallUnion127 = "a" | "b" | "c" | "d"; +type AllPerms127 = Permutation127; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig127, + Flat127, + FR127, + BigUnion127, + ExtractAlpha127, + ExcludeZulu127, + OptionalAll127, + RequiredAll127, + ReadonlyAll127, + NullableAll127, + TypeNames127, + Action127, + AllPerms127, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts new file mode 100644 index 00000000..49d1f5b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-28 (seed 128) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord128 { + a128: { x: number; y: string; z: boolean }; + b128: { p: string[]; q: Record }; + c128: { nested: { deep: { deeper: { deepest: string } } } }; + d128: number; + e128: string; + f128: boolean; + g128: null; + h128: undefined; + i128: bigint; + j128: symbol; +} + +type PartialBig128 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten128 = T extends Array ? Flatten128 : T; +type Nested128 = number[][][][][][][][][][]; +type Flat128 = Flatten128; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly128 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly128 : T[K]; +}; +type DeepRequired128 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired128 : T[K]; +}; +type FR128 = DeepReadonly128>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion128 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha128 = Extract; +type ExcludeZulu128 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA128 { width: number; height: number; depth: number } +interface ShapeB128 { color: string; opacity: number; blend: string } +interface ShapeC128 { x: number; y: number; z: number; w: number } +interface ShapeD128 { label: string; title: string; summary: string } + +type Combined128 = ShapeA128 & ShapeB128 & ShapeC128 & ShapeD128; +type OptionalAll128 = { [K in keyof Combined128]?: Combined128[K] }; +type RequiredAll128 = { [K in keyof Combined128]-?: Combined128[K] }; +type ReadonlyAll128 = { readonly [K in keyof Combined128]: Combined128[K] }; +type NullableAll128 = { [K in keyof Combined128]: Combined128[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString128 = T extends string ? true : false; +type IsNumber128 = T extends number ? true : false; +type TypeName128 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames128 = { + [K in keyof BigRecord128]: TypeName128; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb128 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource128 = "user" | "post" | "comment" | "tag" | "category"; +type Action128 = `${Verb128}_${Resource128}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise128 = T extends Promise ? UnwrapPromise128 : T; +type UnwrapArray128 = T extends (infer U)[] ? UnwrapArray128 : T; +type Head128 = T extends [infer H, ...infer _] ? H : never; +type Tail128 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation128 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation128>] + : never; + +type SmallUnion128 = "a" | "b" | "c" | "d"; +type AllPerms128 = Permutation128; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig128, + Flat128, + FR128, + BigUnion128, + ExtractAlpha128, + ExcludeZulu128, + OptionalAll128, + RequiredAll128, + ReadonlyAll128, + NullableAll128, + TypeNames128, + Action128, + AllPerms128, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts new file mode 100644 index 00000000..2eb31271 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-29 (seed 129) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord129 { + a129: { x: number; y: string; z: boolean }; + b129: { p: string[]; q: Record }; + c129: { nested: { deep: { deeper: { deepest: string } } } }; + d129: number; + e129: string; + f129: boolean; + g129: null; + h129: undefined; + i129: bigint; + j129: symbol; +} + +type PartialBig129 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten129 = T extends Array ? Flatten129 : T; +type Nested129 = number[][][][][][][][][][]; +type Flat129 = Flatten129; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly129 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly129 : T[K]; +}; +type DeepRequired129 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired129 : T[K]; +}; +type FR129 = DeepReadonly129>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion129 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha129 = Extract; +type ExcludeZulu129 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA129 { width: number; height: number; depth: number } +interface ShapeB129 { color: string; opacity: number; blend: string } +interface ShapeC129 { x: number; y: number; z: number; w: number } +interface ShapeD129 { label: string; title: string; summary: string } + +type Combined129 = ShapeA129 & ShapeB129 & ShapeC129 & ShapeD129; +type OptionalAll129 = { [K in keyof Combined129]?: Combined129[K] }; +type RequiredAll129 = { [K in keyof Combined129]-?: Combined129[K] }; +type ReadonlyAll129 = { readonly [K in keyof Combined129]: Combined129[K] }; +type NullableAll129 = { [K in keyof Combined129]: Combined129[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString129 = T extends string ? true : false; +type IsNumber129 = T extends number ? true : false; +type TypeName129 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames129 = { + [K in keyof BigRecord129]: TypeName129; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb129 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource129 = "user" | "post" | "comment" | "tag" | "category"; +type Action129 = `${Verb129}_${Resource129}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise129 = T extends Promise ? UnwrapPromise129 : T; +type UnwrapArray129 = T extends (infer U)[] ? UnwrapArray129 : T; +type Head129 = T extends [infer H, ...infer _] ? H : never; +type Tail129 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation129 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation129>] + : never; + +type SmallUnion129 = "a" | "b" | "c" | "d"; +type AllPerms129 = Permutation129; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig129, + Flat129, + FR129, + BigUnion129, + ExtractAlpha129, + ExcludeZulu129, + OptionalAll129, + RequiredAll129, + ReadonlyAll129, + NullableAll129, + TypeNames129, + Action129, + AllPerms129, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts new file mode 100644 index 00000000..759b8eff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-30 (seed 130) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord130 { + a130: { x: number; y: string; z: boolean }; + b130: { p: string[]; q: Record }; + c130: { nested: { deep: { deeper: { deepest: string } } } }; + d130: number; + e130: string; + f130: boolean; + g130: null; + h130: undefined; + i130: bigint; + j130: symbol; +} + +type PartialBig130 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten130 = T extends Array ? Flatten130 : T; +type Nested130 = number[][][][][][][][][][]; +type Flat130 = Flatten130; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly130 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly130 : T[K]; +}; +type DeepRequired130 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired130 : T[K]; +}; +type FR130 = DeepReadonly130>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion130 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha130 = Extract; +type ExcludeZulu130 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA130 { width: number; height: number; depth: number } +interface ShapeB130 { color: string; opacity: number; blend: string } +interface ShapeC130 { x: number; y: number; z: number; w: number } +interface ShapeD130 { label: string; title: string; summary: string } + +type Combined130 = ShapeA130 & ShapeB130 & ShapeC130 & ShapeD130; +type OptionalAll130 = { [K in keyof Combined130]?: Combined130[K] }; +type RequiredAll130 = { [K in keyof Combined130]-?: Combined130[K] }; +type ReadonlyAll130 = { readonly [K in keyof Combined130]: Combined130[K] }; +type NullableAll130 = { [K in keyof Combined130]: Combined130[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString130 = T extends string ? true : false; +type IsNumber130 = T extends number ? true : false; +type TypeName130 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames130 = { + [K in keyof BigRecord130]: TypeName130; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb130 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource130 = "user" | "post" | "comment" | "tag" | "category"; +type Action130 = `${Verb130}_${Resource130}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise130 = T extends Promise ? UnwrapPromise130 : T; +type UnwrapArray130 = T extends (infer U)[] ? UnwrapArray130 : T; +type Head130 = T extends [infer H, ...infer _] ? H : never; +type Tail130 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation130 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation130>] + : never; + +type SmallUnion130 = "a" | "b" | "c" | "d"; +type AllPerms130 = Permutation130; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig130, + Flat130, + FR130, + BigUnion130, + ExtractAlpha130, + ExcludeZulu130, + OptionalAll130, + RequiredAll130, + ReadonlyAll130, + NullableAll130, + TypeNames130, + Action130, + AllPerms130, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts new file mode 100644 index 00000000..30e2b791 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-31 (seed 131) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord131 { + a131: { x: number; y: string; z: boolean }; + b131: { p: string[]; q: Record }; + c131: { nested: { deep: { deeper: { deepest: string } } } }; + d131: number; + e131: string; + f131: boolean; + g131: null; + h131: undefined; + i131: bigint; + j131: symbol; +} + +type PartialBig131 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten131 = T extends Array ? Flatten131 : T; +type Nested131 = number[][][][][][][][][][]; +type Flat131 = Flatten131; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly131 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly131 : T[K]; +}; +type DeepRequired131 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired131 : T[K]; +}; +type FR131 = DeepReadonly131>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion131 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha131 = Extract; +type ExcludeZulu131 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA131 { width: number; height: number; depth: number } +interface ShapeB131 { color: string; opacity: number; blend: string } +interface ShapeC131 { x: number; y: number; z: number; w: number } +interface ShapeD131 { label: string; title: string; summary: string } + +type Combined131 = ShapeA131 & ShapeB131 & ShapeC131 & ShapeD131; +type OptionalAll131 = { [K in keyof Combined131]?: Combined131[K] }; +type RequiredAll131 = { [K in keyof Combined131]-?: Combined131[K] }; +type ReadonlyAll131 = { readonly [K in keyof Combined131]: Combined131[K] }; +type NullableAll131 = { [K in keyof Combined131]: Combined131[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString131 = T extends string ? true : false; +type IsNumber131 = T extends number ? true : false; +type TypeName131 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames131 = { + [K in keyof BigRecord131]: TypeName131; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb131 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource131 = "user" | "post" | "comment" | "tag" | "category"; +type Action131 = `${Verb131}_${Resource131}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise131 = T extends Promise ? UnwrapPromise131 : T; +type UnwrapArray131 = T extends (infer U)[] ? UnwrapArray131 : T; +type Head131 = T extends [infer H, ...infer _] ? H : never; +type Tail131 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation131 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation131>] + : never; + +type SmallUnion131 = "a" | "b" | "c" | "d"; +type AllPerms131 = Permutation131; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig131, + Flat131, + FR131, + BigUnion131, + ExtractAlpha131, + ExcludeZulu131, + OptionalAll131, + RequiredAll131, + ReadonlyAll131, + NullableAll131, + TypeNames131, + Action131, + AllPerms131, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts new file mode 100644 index 00000000..90ce3965 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-32 (seed 132) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord132 { + a132: { x: number; y: string; z: boolean }; + b132: { p: string[]; q: Record }; + c132: { nested: { deep: { deeper: { deepest: string } } } }; + d132: number; + e132: string; + f132: boolean; + g132: null; + h132: undefined; + i132: bigint; + j132: symbol; +} + +type PartialBig132 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten132 = T extends Array ? Flatten132 : T; +type Nested132 = number[][][][][][][][][][]; +type Flat132 = Flatten132; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly132 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly132 : T[K]; +}; +type DeepRequired132 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired132 : T[K]; +}; +type FR132 = DeepReadonly132>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion132 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha132 = Extract; +type ExcludeZulu132 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA132 { width: number; height: number; depth: number } +interface ShapeB132 { color: string; opacity: number; blend: string } +interface ShapeC132 { x: number; y: number; z: number; w: number } +interface ShapeD132 { label: string; title: string; summary: string } + +type Combined132 = ShapeA132 & ShapeB132 & ShapeC132 & ShapeD132; +type OptionalAll132 = { [K in keyof Combined132]?: Combined132[K] }; +type RequiredAll132 = { [K in keyof Combined132]-?: Combined132[K] }; +type ReadonlyAll132 = { readonly [K in keyof Combined132]: Combined132[K] }; +type NullableAll132 = { [K in keyof Combined132]: Combined132[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString132 = T extends string ? true : false; +type IsNumber132 = T extends number ? true : false; +type TypeName132 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames132 = { + [K in keyof BigRecord132]: TypeName132; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb132 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource132 = "user" | "post" | "comment" | "tag" | "category"; +type Action132 = `${Verb132}_${Resource132}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise132 = T extends Promise ? UnwrapPromise132 : T; +type UnwrapArray132 = T extends (infer U)[] ? UnwrapArray132 : T; +type Head132 = T extends [infer H, ...infer _] ? H : never; +type Tail132 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation132 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation132>] + : never; + +type SmallUnion132 = "a" | "b" | "c" | "d"; +type AllPerms132 = Permutation132; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig132, + Flat132, + FR132, + BigUnion132, + ExtractAlpha132, + ExcludeZulu132, + OptionalAll132, + RequiredAll132, + ReadonlyAll132, + NullableAll132, + TypeNames132, + Action132, + AllPerms132, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts new file mode 100644 index 00000000..670b5299 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-33 (seed 133) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord133 { + a133: { x: number; y: string; z: boolean }; + b133: { p: string[]; q: Record }; + c133: { nested: { deep: { deeper: { deepest: string } } } }; + d133: number; + e133: string; + f133: boolean; + g133: null; + h133: undefined; + i133: bigint; + j133: symbol; +} + +type PartialBig133 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten133 = T extends Array ? Flatten133 : T; +type Nested133 = number[][][][][][][][][][]; +type Flat133 = Flatten133; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly133 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly133 : T[K]; +}; +type DeepRequired133 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired133 : T[K]; +}; +type FR133 = DeepReadonly133>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion133 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha133 = Extract; +type ExcludeZulu133 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA133 { width: number; height: number; depth: number } +interface ShapeB133 { color: string; opacity: number; blend: string } +interface ShapeC133 { x: number; y: number; z: number; w: number } +interface ShapeD133 { label: string; title: string; summary: string } + +type Combined133 = ShapeA133 & ShapeB133 & ShapeC133 & ShapeD133; +type OptionalAll133 = { [K in keyof Combined133]?: Combined133[K] }; +type RequiredAll133 = { [K in keyof Combined133]-?: Combined133[K] }; +type ReadonlyAll133 = { readonly [K in keyof Combined133]: Combined133[K] }; +type NullableAll133 = { [K in keyof Combined133]: Combined133[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString133 = T extends string ? true : false; +type IsNumber133 = T extends number ? true : false; +type TypeName133 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames133 = { + [K in keyof BigRecord133]: TypeName133; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb133 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource133 = "user" | "post" | "comment" | "tag" | "category"; +type Action133 = `${Verb133}_${Resource133}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise133 = T extends Promise ? UnwrapPromise133 : T; +type UnwrapArray133 = T extends (infer U)[] ? UnwrapArray133 : T; +type Head133 = T extends [infer H, ...infer _] ? H : never; +type Tail133 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation133 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation133>] + : never; + +type SmallUnion133 = "a" | "b" | "c" | "d"; +type AllPerms133 = Permutation133; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig133, + Flat133, + FR133, + BigUnion133, + ExtractAlpha133, + ExcludeZulu133, + OptionalAll133, + RequiredAll133, + ReadonlyAll133, + NullableAll133, + TypeNames133, + Action133, + AllPerms133, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts new file mode 100644 index 00000000..df701a57 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-34 (seed 134) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord134 { + a134: { x: number; y: string; z: boolean }; + b134: { p: string[]; q: Record }; + c134: { nested: { deep: { deeper: { deepest: string } } } }; + d134: number; + e134: string; + f134: boolean; + g134: null; + h134: undefined; + i134: bigint; + j134: symbol; +} + +type PartialBig134 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten134 = T extends Array ? Flatten134 : T; +type Nested134 = number[][][][][][][][][][]; +type Flat134 = Flatten134; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly134 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly134 : T[K]; +}; +type DeepRequired134 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired134 : T[K]; +}; +type FR134 = DeepReadonly134>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion134 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha134 = Extract; +type ExcludeZulu134 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA134 { width: number; height: number; depth: number } +interface ShapeB134 { color: string; opacity: number; blend: string } +interface ShapeC134 { x: number; y: number; z: number; w: number } +interface ShapeD134 { label: string; title: string; summary: string } + +type Combined134 = ShapeA134 & ShapeB134 & ShapeC134 & ShapeD134; +type OptionalAll134 = { [K in keyof Combined134]?: Combined134[K] }; +type RequiredAll134 = { [K in keyof Combined134]-?: Combined134[K] }; +type ReadonlyAll134 = { readonly [K in keyof Combined134]: Combined134[K] }; +type NullableAll134 = { [K in keyof Combined134]: Combined134[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString134 = T extends string ? true : false; +type IsNumber134 = T extends number ? true : false; +type TypeName134 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames134 = { + [K in keyof BigRecord134]: TypeName134; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb134 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource134 = "user" | "post" | "comment" | "tag" | "category"; +type Action134 = `${Verb134}_${Resource134}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise134 = T extends Promise ? UnwrapPromise134 : T; +type UnwrapArray134 = T extends (infer U)[] ? UnwrapArray134 : T; +type Head134 = T extends [infer H, ...infer _] ? H : never; +type Tail134 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation134 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation134>] + : never; + +type SmallUnion134 = "a" | "b" | "c" | "d"; +type AllPerms134 = Permutation134; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig134, + Flat134, + FR134, + BigUnion134, + ExtractAlpha134, + ExcludeZulu134, + OptionalAll134, + RequiredAll134, + ReadonlyAll134, + NullableAll134, + TypeNames134, + Action134, + AllPerms134, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts new file mode 100644 index 00000000..fc271368 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-35 (seed 135) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord135 { + a135: { x: number; y: string; z: boolean }; + b135: { p: string[]; q: Record }; + c135: { nested: { deep: { deeper: { deepest: string } } } }; + d135: number; + e135: string; + f135: boolean; + g135: null; + h135: undefined; + i135: bigint; + j135: symbol; +} + +type PartialBig135 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten135 = T extends Array ? Flatten135 : T; +type Nested135 = number[][][][][][][][][][]; +type Flat135 = Flatten135; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly135 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly135 : T[K]; +}; +type DeepRequired135 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired135 : T[K]; +}; +type FR135 = DeepReadonly135>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion135 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha135 = Extract; +type ExcludeZulu135 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA135 { width: number; height: number; depth: number } +interface ShapeB135 { color: string; opacity: number; blend: string } +interface ShapeC135 { x: number; y: number; z: number; w: number } +interface ShapeD135 { label: string; title: string; summary: string } + +type Combined135 = ShapeA135 & ShapeB135 & ShapeC135 & ShapeD135; +type OptionalAll135 = { [K in keyof Combined135]?: Combined135[K] }; +type RequiredAll135 = { [K in keyof Combined135]-?: Combined135[K] }; +type ReadonlyAll135 = { readonly [K in keyof Combined135]: Combined135[K] }; +type NullableAll135 = { [K in keyof Combined135]: Combined135[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString135 = T extends string ? true : false; +type IsNumber135 = T extends number ? true : false; +type TypeName135 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames135 = { + [K in keyof BigRecord135]: TypeName135; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb135 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource135 = "user" | "post" | "comment" | "tag" | "category"; +type Action135 = `${Verb135}_${Resource135}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise135 = T extends Promise ? UnwrapPromise135 : T; +type UnwrapArray135 = T extends (infer U)[] ? UnwrapArray135 : T; +type Head135 = T extends [infer H, ...infer _] ? H : never; +type Tail135 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation135 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation135>] + : never; + +type SmallUnion135 = "a" | "b" | "c" | "d"; +type AllPerms135 = Permutation135; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig135, + Flat135, + FR135, + BigUnion135, + ExtractAlpha135, + ExcludeZulu135, + OptionalAll135, + RequiredAll135, + ReadonlyAll135, + NullableAll135, + TypeNames135, + Action135, + AllPerms135, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts new file mode 100644 index 00000000..13b86305 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-36 (seed 136) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord136 { + a136: { x: number; y: string; z: boolean }; + b136: { p: string[]; q: Record }; + c136: { nested: { deep: { deeper: { deepest: string } } } }; + d136: number; + e136: string; + f136: boolean; + g136: null; + h136: undefined; + i136: bigint; + j136: symbol; +} + +type PartialBig136 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten136 = T extends Array ? Flatten136 : T; +type Nested136 = number[][][][][][][][][][]; +type Flat136 = Flatten136; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly136 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly136 : T[K]; +}; +type DeepRequired136 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired136 : T[K]; +}; +type FR136 = DeepReadonly136>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion136 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha136 = Extract; +type ExcludeZulu136 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA136 { width: number; height: number; depth: number } +interface ShapeB136 { color: string; opacity: number; blend: string } +interface ShapeC136 { x: number; y: number; z: number; w: number } +interface ShapeD136 { label: string; title: string; summary: string } + +type Combined136 = ShapeA136 & ShapeB136 & ShapeC136 & ShapeD136; +type OptionalAll136 = { [K in keyof Combined136]?: Combined136[K] }; +type RequiredAll136 = { [K in keyof Combined136]-?: Combined136[K] }; +type ReadonlyAll136 = { readonly [K in keyof Combined136]: Combined136[K] }; +type NullableAll136 = { [K in keyof Combined136]: Combined136[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString136 = T extends string ? true : false; +type IsNumber136 = T extends number ? true : false; +type TypeName136 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames136 = { + [K in keyof BigRecord136]: TypeName136; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb136 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource136 = "user" | "post" | "comment" | "tag" | "category"; +type Action136 = `${Verb136}_${Resource136}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise136 = T extends Promise ? UnwrapPromise136 : T; +type UnwrapArray136 = T extends (infer U)[] ? UnwrapArray136 : T; +type Head136 = T extends [infer H, ...infer _] ? H : never; +type Tail136 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation136 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation136>] + : never; + +type SmallUnion136 = "a" | "b" | "c" | "d"; +type AllPerms136 = Permutation136; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig136, + Flat136, + FR136, + BigUnion136, + ExtractAlpha136, + ExcludeZulu136, + OptionalAll136, + RequiredAll136, + ReadonlyAll136, + NullableAll136, + TypeNames136, + Action136, + AllPerms136, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts new file mode 100644 index 00000000..fd400e34 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-37 (seed 137) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord137 { + a137: { x: number; y: string; z: boolean }; + b137: { p: string[]; q: Record }; + c137: { nested: { deep: { deeper: { deepest: string } } } }; + d137: number; + e137: string; + f137: boolean; + g137: null; + h137: undefined; + i137: bigint; + j137: symbol; +} + +type PartialBig137 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten137 = T extends Array ? Flatten137 : T; +type Nested137 = number[][][][][][][][][][]; +type Flat137 = Flatten137; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly137 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly137 : T[K]; +}; +type DeepRequired137 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired137 : T[K]; +}; +type FR137 = DeepReadonly137>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion137 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha137 = Extract; +type ExcludeZulu137 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA137 { width: number; height: number; depth: number } +interface ShapeB137 { color: string; opacity: number; blend: string } +interface ShapeC137 { x: number; y: number; z: number; w: number } +interface ShapeD137 { label: string; title: string; summary: string } + +type Combined137 = ShapeA137 & ShapeB137 & ShapeC137 & ShapeD137; +type OptionalAll137 = { [K in keyof Combined137]?: Combined137[K] }; +type RequiredAll137 = { [K in keyof Combined137]-?: Combined137[K] }; +type ReadonlyAll137 = { readonly [K in keyof Combined137]: Combined137[K] }; +type NullableAll137 = { [K in keyof Combined137]: Combined137[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString137 = T extends string ? true : false; +type IsNumber137 = T extends number ? true : false; +type TypeName137 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames137 = { + [K in keyof BigRecord137]: TypeName137; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb137 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource137 = "user" | "post" | "comment" | "tag" | "category"; +type Action137 = `${Verb137}_${Resource137}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise137 = T extends Promise ? UnwrapPromise137 : T; +type UnwrapArray137 = T extends (infer U)[] ? UnwrapArray137 : T; +type Head137 = T extends [infer H, ...infer _] ? H : never; +type Tail137 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation137 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation137>] + : never; + +type SmallUnion137 = "a" | "b" | "c" | "d"; +type AllPerms137 = Permutation137; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig137, + Flat137, + FR137, + BigUnion137, + ExtractAlpha137, + ExcludeZulu137, + OptionalAll137, + RequiredAll137, + ReadonlyAll137, + NullableAll137, + TypeNames137, + Action137, + AllPerms137, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts new file mode 100644 index 00000000..9ed5c099 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-38 (seed 138) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord138 { + a138: { x: number; y: string; z: boolean }; + b138: { p: string[]; q: Record }; + c138: { nested: { deep: { deeper: { deepest: string } } } }; + d138: number; + e138: string; + f138: boolean; + g138: null; + h138: undefined; + i138: bigint; + j138: symbol; +} + +type PartialBig138 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten138 = T extends Array ? Flatten138 : T; +type Nested138 = number[][][][][][][][][][]; +type Flat138 = Flatten138; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly138 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly138 : T[K]; +}; +type DeepRequired138 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired138 : T[K]; +}; +type FR138 = DeepReadonly138>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion138 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha138 = Extract; +type ExcludeZulu138 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA138 { width: number; height: number; depth: number } +interface ShapeB138 { color: string; opacity: number; blend: string } +interface ShapeC138 { x: number; y: number; z: number; w: number } +interface ShapeD138 { label: string; title: string; summary: string } + +type Combined138 = ShapeA138 & ShapeB138 & ShapeC138 & ShapeD138; +type OptionalAll138 = { [K in keyof Combined138]?: Combined138[K] }; +type RequiredAll138 = { [K in keyof Combined138]-?: Combined138[K] }; +type ReadonlyAll138 = { readonly [K in keyof Combined138]: Combined138[K] }; +type NullableAll138 = { [K in keyof Combined138]: Combined138[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString138 = T extends string ? true : false; +type IsNumber138 = T extends number ? true : false; +type TypeName138 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames138 = { + [K in keyof BigRecord138]: TypeName138; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb138 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource138 = "user" | "post" | "comment" | "tag" | "category"; +type Action138 = `${Verb138}_${Resource138}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise138 = T extends Promise ? UnwrapPromise138 : T; +type UnwrapArray138 = T extends (infer U)[] ? UnwrapArray138 : T; +type Head138 = T extends [infer H, ...infer _] ? H : never; +type Tail138 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation138 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation138>] + : never; + +type SmallUnion138 = "a" | "b" | "c" | "d"; +type AllPerms138 = Permutation138; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig138, + Flat138, + FR138, + BigUnion138, + ExtractAlpha138, + ExcludeZulu138, + OptionalAll138, + RequiredAll138, + ReadonlyAll138, + NullableAll138, + TypeNames138, + Action138, + AllPerms138, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts new file mode 100644 index 00000000..e1f4a093 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-39 (seed 139) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord139 { + a139: { x: number; y: string; z: boolean }; + b139: { p: string[]; q: Record }; + c139: { nested: { deep: { deeper: { deepest: string } } } }; + d139: number; + e139: string; + f139: boolean; + g139: null; + h139: undefined; + i139: bigint; + j139: symbol; +} + +type PartialBig139 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten139 = T extends Array ? Flatten139 : T; +type Nested139 = number[][][][][][][][][][]; +type Flat139 = Flatten139; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly139 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly139 : T[K]; +}; +type DeepRequired139 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired139 : T[K]; +}; +type FR139 = DeepReadonly139>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion139 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha139 = Extract; +type ExcludeZulu139 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA139 { width: number; height: number; depth: number } +interface ShapeB139 { color: string; opacity: number; blend: string } +interface ShapeC139 { x: number; y: number; z: number; w: number } +interface ShapeD139 { label: string; title: string; summary: string } + +type Combined139 = ShapeA139 & ShapeB139 & ShapeC139 & ShapeD139; +type OptionalAll139 = { [K in keyof Combined139]?: Combined139[K] }; +type RequiredAll139 = { [K in keyof Combined139]-?: Combined139[K] }; +type ReadonlyAll139 = { readonly [K in keyof Combined139]: Combined139[K] }; +type NullableAll139 = { [K in keyof Combined139]: Combined139[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString139 = T extends string ? true : false; +type IsNumber139 = T extends number ? true : false; +type TypeName139 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames139 = { + [K in keyof BigRecord139]: TypeName139; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb139 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource139 = "user" | "post" | "comment" | "tag" | "category"; +type Action139 = `${Verb139}_${Resource139}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise139 = T extends Promise ? UnwrapPromise139 : T; +type UnwrapArray139 = T extends (infer U)[] ? UnwrapArray139 : T; +type Head139 = T extends [infer H, ...infer _] ? H : never; +type Tail139 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation139 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation139>] + : never; + +type SmallUnion139 = "a" | "b" | "c" | "d"; +type AllPerms139 = Permutation139; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig139, + Flat139, + FR139, + BigUnion139, + ExtractAlpha139, + ExcludeZulu139, + OptionalAll139, + RequiredAll139, + ReadonlyAll139, + NullableAll139, + TypeNames139, + Action139, + AllPerms139, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts new file mode 100644 index 00000000..558143b5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-40 (seed 140) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord140 { + a140: { x: number; y: string; z: boolean }; + b140: { p: string[]; q: Record }; + c140: { nested: { deep: { deeper: { deepest: string } } } }; + d140: number; + e140: string; + f140: boolean; + g140: null; + h140: undefined; + i140: bigint; + j140: symbol; +} + +type PartialBig140 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten140 = T extends Array ? Flatten140 : T; +type Nested140 = number[][][][][][][][][][]; +type Flat140 = Flatten140; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly140 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly140 : T[K]; +}; +type DeepRequired140 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired140 : T[K]; +}; +type FR140 = DeepReadonly140>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion140 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha140 = Extract; +type ExcludeZulu140 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA140 { width: number; height: number; depth: number } +interface ShapeB140 { color: string; opacity: number; blend: string } +interface ShapeC140 { x: number; y: number; z: number; w: number } +interface ShapeD140 { label: string; title: string; summary: string } + +type Combined140 = ShapeA140 & ShapeB140 & ShapeC140 & ShapeD140; +type OptionalAll140 = { [K in keyof Combined140]?: Combined140[K] }; +type RequiredAll140 = { [K in keyof Combined140]-?: Combined140[K] }; +type ReadonlyAll140 = { readonly [K in keyof Combined140]: Combined140[K] }; +type NullableAll140 = { [K in keyof Combined140]: Combined140[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString140 = T extends string ? true : false; +type IsNumber140 = T extends number ? true : false; +type TypeName140 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames140 = { + [K in keyof BigRecord140]: TypeName140; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb140 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource140 = "user" | "post" | "comment" | "tag" | "category"; +type Action140 = `${Verb140}_${Resource140}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise140 = T extends Promise ? UnwrapPromise140 : T; +type UnwrapArray140 = T extends (infer U)[] ? UnwrapArray140 : T; +type Head140 = T extends [infer H, ...infer _] ? H : never; +type Tail140 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation140 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation140>] + : never; + +type SmallUnion140 = "a" | "b" | "c" | "d"; +type AllPerms140 = Permutation140; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig140, + Flat140, + FR140, + BigUnion140, + ExtractAlpha140, + ExcludeZulu140, + OptionalAll140, + RequiredAll140, + ReadonlyAll140, + NullableAll140, + TypeNames140, + Action140, + AllPerms140, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts new file mode 100644 index 00000000..bfeba87f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-41 (seed 141) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord141 { + a141: { x: number; y: string; z: boolean }; + b141: { p: string[]; q: Record }; + c141: { nested: { deep: { deeper: { deepest: string } } } }; + d141: number; + e141: string; + f141: boolean; + g141: null; + h141: undefined; + i141: bigint; + j141: symbol; +} + +type PartialBig141 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten141 = T extends Array ? Flatten141 : T; +type Nested141 = number[][][][][][][][][][]; +type Flat141 = Flatten141; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly141 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly141 : T[K]; +}; +type DeepRequired141 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired141 : T[K]; +}; +type FR141 = DeepReadonly141>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion141 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha141 = Extract; +type ExcludeZulu141 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA141 { width: number; height: number; depth: number } +interface ShapeB141 { color: string; opacity: number; blend: string } +interface ShapeC141 { x: number; y: number; z: number; w: number } +interface ShapeD141 { label: string; title: string; summary: string } + +type Combined141 = ShapeA141 & ShapeB141 & ShapeC141 & ShapeD141; +type OptionalAll141 = { [K in keyof Combined141]?: Combined141[K] }; +type RequiredAll141 = { [K in keyof Combined141]-?: Combined141[K] }; +type ReadonlyAll141 = { readonly [K in keyof Combined141]: Combined141[K] }; +type NullableAll141 = { [K in keyof Combined141]: Combined141[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString141 = T extends string ? true : false; +type IsNumber141 = T extends number ? true : false; +type TypeName141 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames141 = { + [K in keyof BigRecord141]: TypeName141; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb141 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource141 = "user" | "post" | "comment" | "tag" | "category"; +type Action141 = `${Verb141}_${Resource141}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise141 = T extends Promise ? UnwrapPromise141 : T; +type UnwrapArray141 = T extends (infer U)[] ? UnwrapArray141 : T; +type Head141 = T extends [infer H, ...infer _] ? H : never; +type Tail141 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation141 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation141>] + : never; + +type SmallUnion141 = "a" | "b" | "c" | "d"; +type AllPerms141 = Permutation141; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig141, + Flat141, + FR141, + BigUnion141, + ExtractAlpha141, + ExcludeZulu141, + OptionalAll141, + RequiredAll141, + ReadonlyAll141, + NullableAll141, + TypeNames141, + Action141, + AllPerms141, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts new file mode 100644 index 00000000..7d1954dd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-42 (seed 142) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord142 { + a142: { x: number; y: string; z: boolean }; + b142: { p: string[]; q: Record }; + c142: { nested: { deep: { deeper: { deepest: string } } } }; + d142: number; + e142: string; + f142: boolean; + g142: null; + h142: undefined; + i142: bigint; + j142: symbol; +} + +type PartialBig142 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten142 = T extends Array ? Flatten142 : T; +type Nested142 = number[][][][][][][][][][]; +type Flat142 = Flatten142; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly142 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly142 : T[K]; +}; +type DeepRequired142 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired142 : T[K]; +}; +type FR142 = DeepReadonly142>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion142 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha142 = Extract; +type ExcludeZulu142 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA142 { width: number; height: number; depth: number } +interface ShapeB142 { color: string; opacity: number; blend: string } +interface ShapeC142 { x: number; y: number; z: number; w: number } +interface ShapeD142 { label: string; title: string; summary: string } + +type Combined142 = ShapeA142 & ShapeB142 & ShapeC142 & ShapeD142; +type OptionalAll142 = { [K in keyof Combined142]?: Combined142[K] }; +type RequiredAll142 = { [K in keyof Combined142]-?: Combined142[K] }; +type ReadonlyAll142 = { readonly [K in keyof Combined142]: Combined142[K] }; +type NullableAll142 = { [K in keyof Combined142]: Combined142[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString142 = T extends string ? true : false; +type IsNumber142 = T extends number ? true : false; +type TypeName142 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames142 = { + [K in keyof BigRecord142]: TypeName142; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb142 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource142 = "user" | "post" | "comment" | "tag" | "category"; +type Action142 = `${Verb142}_${Resource142}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise142 = T extends Promise ? UnwrapPromise142 : T; +type UnwrapArray142 = T extends (infer U)[] ? UnwrapArray142 : T; +type Head142 = T extends [infer H, ...infer _] ? H : never; +type Tail142 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation142 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation142>] + : never; + +type SmallUnion142 = "a" | "b" | "c" | "d"; +type AllPerms142 = Permutation142; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig142, + Flat142, + FR142, + BigUnion142, + ExtractAlpha142, + ExcludeZulu142, + OptionalAll142, + RequiredAll142, + ReadonlyAll142, + NullableAll142, + TypeNames142, + Action142, + AllPerms142, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts new file mode 100644 index 00000000..c1ea43f5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-43 (seed 143) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord143 { + a143: { x: number; y: string; z: boolean }; + b143: { p: string[]; q: Record }; + c143: { nested: { deep: { deeper: { deepest: string } } } }; + d143: number; + e143: string; + f143: boolean; + g143: null; + h143: undefined; + i143: bigint; + j143: symbol; +} + +type PartialBig143 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten143 = T extends Array ? Flatten143 : T; +type Nested143 = number[][][][][][][][][][]; +type Flat143 = Flatten143; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly143 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly143 : T[K]; +}; +type DeepRequired143 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired143 : T[K]; +}; +type FR143 = DeepReadonly143>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion143 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha143 = Extract; +type ExcludeZulu143 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA143 { width: number; height: number; depth: number } +interface ShapeB143 { color: string; opacity: number; blend: string } +interface ShapeC143 { x: number; y: number; z: number; w: number } +interface ShapeD143 { label: string; title: string; summary: string } + +type Combined143 = ShapeA143 & ShapeB143 & ShapeC143 & ShapeD143; +type OptionalAll143 = { [K in keyof Combined143]?: Combined143[K] }; +type RequiredAll143 = { [K in keyof Combined143]-?: Combined143[K] }; +type ReadonlyAll143 = { readonly [K in keyof Combined143]: Combined143[K] }; +type NullableAll143 = { [K in keyof Combined143]: Combined143[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString143 = T extends string ? true : false; +type IsNumber143 = T extends number ? true : false; +type TypeName143 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames143 = { + [K in keyof BigRecord143]: TypeName143; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb143 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource143 = "user" | "post" | "comment" | "tag" | "category"; +type Action143 = `${Verb143}_${Resource143}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise143 = T extends Promise ? UnwrapPromise143 : T; +type UnwrapArray143 = T extends (infer U)[] ? UnwrapArray143 : T; +type Head143 = T extends [infer H, ...infer _] ? H : never; +type Tail143 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation143 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation143>] + : never; + +type SmallUnion143 = "a" | "b" | "c" | "d"; +type AllPerms143 = Permutation143; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig143, + Flat143, + FR143, + BigUnion143, + ExtractAlpha143, + ExcludeZulu143, + OptionalAll143, + RequiredAll143, + ReadonlyAll143, + NullableAll143, + TypeNames143, + Action143, + AllPerms143, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts new file mode 100644 index 00000000..a570a45b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-44 (seed 144) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord144 { + a144: { x: number; y: string; z: boolean }; + b144: { p: string[]; q: Record }; + c144: { nested: { deep: { deeper: { deepest: string } } } }; + d144: number; + e144: string; + f144: boolean; + g144: null; + h144: undefined; + i144: bigint; + j144: symbol; +} + +type PartialBig144 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten144 = T extends Array ? Flatten144 : T; +type Nested144 = number[][][][][][][][][][]; +type Flat144 = Flatten144; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly144 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly144 : T[K]; +}; +type DeepRequired144 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired144 : T[K]; +}; +type FR144 = DeepReadonly144>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion144 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha144 = Extract; +type ExcludeZulu144 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA144 { width: number; height: number; depth: number } +interface ShapeB144 { color: string; opacity: number; blend: string } +interface ShapeC144 { x: number; y: number; z: number; w: number } +interface ShapeD144 { label: string; title: string; summary: string } + +type Combined144 = ShapeA144 & ShapeB144 & ShapeC144 & ShapeD144; +type OptionalAll144 = { [K in keyof Combined144]?: Combined144[K] }; +type RequiredAll144 = { [K in keyof Combined144]-?: Combined144[K] }; +type ReadonlyAll144 = { readonly [K in keyof Combined144]: Combined144[K] }; +type NullableAll144 = { [K in keyof Combined144]: Combined144[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString144 = T extends string ? true : false; +type IsNumber144 = T extends number ? true : false; +type TypeName144 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames144 = { + [K in keyof BigRecord144]: TypeName144; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb144 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource144 = "user" | "post" | "comment" | "tag" | "category"; +type Action144 = `${Verb144}_${Resource144}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise144 = T extends Promise ? UnwrapPromise144 : T; +type UnwrapArray144 = T extends (infer U)[] ? UnwrapArray144 : T; +type Head144 = T extends [infer H, ...infer _] ? H : never; +type Tail144 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation144 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation144>] + : never; + +type SmallUnion144 = "a" | "b" | "c" | "d"; +type AllPerms144 = Permutation144; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig144, + Flat144, + FR144, + BigUnion144, + ExtractAlpha144, + ExcludeZulu144, + OptionalAll144, + RequiredAll144, + ReadonlyAll144, + NullableAll144, + TypeNames144, + Action144, + AllPerms144, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts new file mode 100644 index 00000000..a0540011 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-45 (seed 145) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord145 { + a145: { x: number; y: string; z: boolean }; + b145: { p: string[]; q: Record }; + c145: { nested: { deep: { deeper: { deepest: string } } } }; + d145: number; + e145: string; + f145: boolean; + g145: null; + h145: undefined; + i145: bigint; + j145: symbol; +} + +type PartialBig145 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten145 = T extends Array ? Flatten145 : T; +type Nested145 = number[][][][][][][][][][]; +type Flat145 = Flatten145; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly145 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly145 : T[K]; +}; +type DeepRequired145 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired145 : T[K]; +}; +type FR145 = DeepReadonly145>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion145 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha145 = Extract; +type ExcludeZulu145 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA145 { width: number; height: number; depth: number } +interface ShapeB145 { color: string; opacity: number; blend: string } +interface ShapeC145 { x: number; y: number; z: number; w: number } +interface ShapeD145 { label: string; title: string; summary: string } + +type Combined145 = ShapeA145 & ShapeB145 & ShapeC145 & ShapeD145; +type OptionalAll145 = { [K in keyof Combined145]?: Combined145[K] }; +type RequiredAll145 = { [K in keyof Combined145]-?: Combined145[K] }; +type ReadonlyAll145 = { readonly [K in keyof Combined145]: Combined145[K] }; +type NullableAll145 = { [K in keyof Combined145]: Combined145[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString145 = T extends string ? true : false; +type IsNumber145 = T extends number ? true : false; +type TypeName145 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames145 = { + [K in keyof BigRecord145]: TypeName145; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb145 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource145 = "user" | "post" | "comment" | "tag" | "category"; +type Action145 = `${Verb145}_${Resource145}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise145 = T extends Promise ? UnwrapPromise145 : T; +type UnwrapArray145 = T extends (infer U)[] ? UnwrapArray145 : T; +type Head145 = T extends [infer H, ...infer _] ? H : never; +type Tail145 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation145 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation145>] + : never; + +type SmallUnion145 = "a" | "b" | "c" | "d"; +type AllPerms145 = Permutation145; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig145, + Flat145, + FR145, + BigUnion145, + ExtractAlpha145, + ExcludeZulu145, + OptionalAll145, + RequiredAll145, + ReadonlyAll145, + NullableAll145, + TypeNames145, + Action145, + AllPerms145, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts new file mode 100644 index 00000000..40a1ab5a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-46 (seed 146) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord146 { + a146: { x: number; y: string; z: boolean }; + b146: { p: string[]; q: Record }; + c146: { nested: { deep: { deeper: { deepest: string } } } }; + d146: number; + e146: string; + f146: boolean; + g146: null; + h146: undefined; + i146: bigint; + j146: symbol; +} + +type PartialBig146 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten146 = T extends Array ? Flatten146 : T; +type Nested146 = number[][][][][][][][][][]; +type Flat146 = Flatten146; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly146 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly146 : T[K]; +}; +type DeepRequired146 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired146 : T[K]; +}; +type FR146 = DeepReadonly146>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion146 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha146 = Extract; +type ExcludeZulu146 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA146 { width: number; height: number; depth: number } +interface ShapeB146 { color: string; opacity: number; blend: string } +interface ShapeC146 { x: number; y: number; z: number; w: number } +interface ShapeD146 { label: string; title: string; summary: string } + +type Combined146 = ShapeA146 & ShapeB146 & ShapeC146 & ShapeD146; +type OptionalAll146 = { [K in keyof Combined146]?: Combined146[K] }; +type RequiredAll146 = { [K in keyof Combined146]-?: Combined146[K] }; +type ReadonlyAll146 = { readonly [K in keyof Combined146]: Combined146[K] }; +type NullableAll146 = { [K in keyof Combined146]: Combined146[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString146 = T extends string ? true : false; +type IsNumber146 = T extends number ? true : false; +type TypeName146 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames146 = { + [K in keyof BigRecord146]: TypeName146; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb146 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource146 = "user" | "post" | "comment" | "tag" | "category"; +type Action146 = `${Verb146}_${Resource146}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise146 = T extends Promise ? UnwrapPromise146 : T; +type UnwrapArray146 = T extends (infer U)[] ? UnwrapArray146 : T; +type Head146 = T extends [infer H, ...infer _] ? H : never; +type Tail146 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation146 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation146>] + : never; + +type SmallUnion146 = "a" | "b" | "c" | "d"; +type AllPerms146 = Permutation146; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig146, + Flat146, + FR146, + BigUnion146, + ExtractAlpha146, + ExcludeZulu146, + OptionalAll146, + RequiredAll146, + ReadonlyAll146, + NullableAll146, + TypeNames146, + Action146, + AllPerms146, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts new file mode 100644 index 00000000..3e2ec82b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-47 (seed 147) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord147 { + a147: { x: number; y: string; z: boolean }; + b147: { p: string[]; q: Record }; + c147: { nested: { deep: { deeper: { deepest: string } } } }; + d147: number; + e147: string; + f147: boolean; + g147: null; + h147: undefined; + i147: bigint; + j147: symbol; +} + +type PartialBig147 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten147 = T extends Array ? Flatten147 : T; +type Nested147 = number[][][][][][][][][][]; +type Flat147 = Flatten147; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly147 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly147 : T[K]; +}; +type DeepRequired147 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired147 : T[K]; +}; +type FR147 = DeepReadonly147>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion147 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha147 = Extract; +type ExcludeZulu147 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA147 { width: number; height: number; depth: number } +interface ShapeB147 { color: string; opacity: number; blend: string } +interface ShapeC147 { x: number; y: number; z: number; w: number } +interface ShapeD147 { label: string; title: string; summary: string } + +type Combined147 = ShapeA147 & ShapeB147 & ShapeC147 & ShapeD147; +type OptionalAll147 = { [K in keyof Combined147]?: Combined147[K] }; +type RequiredAll147 = { [K in keyof Combined147]-?: Combined147[K] }; +type ReadonlyAll147 = { readonly [K in keyof Combined147]: Combined147[K] }; +type NullableAll147 = { [K in keyof Combined147]: Combined147[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString147 = T extends string ? true : false; +type IsNumber147 = T extends number ? true : false; +type TypeName147 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames147 = { + [K in keyof BigRecord147]: TypeName147; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb147 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource147 = "user" | "post" | "comment" | "tag" | "category"; +type Action147 = `${Verb147}_${Resource147}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise147 = T extends Promise ? UnwrapPromise147 : T; +type UnwrapArray147 = T extends (infer U)[] ? UnwrapArray147 : T; +type Head147 = T extends [infer H, ...infer _] ? H : never; +type Tail147 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation147 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation147>] + : never; + +type SmallUnion147 = "a" | "b" | "c" | "d"; +type AllPerms147 = Permutation147; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig147, + Flat147, + FR147, + BigUnion147, + ExtractAlpha147, + ExcludeZulu147, + OptionalAll147, + RequiredAll147, + ReadonlyAll147, + NullableAll147, + TypeNames147, + Action147, + AllPerms147, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts new file mode 100644 index 00000000..f09b17c8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-48 (seed 148) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord148 { + a148: { x: number; y: string; z: boolean }; + b148: { p: string[]; q: Record }; + c148: { nested: { deep: { deeper: { deepest: string } } } }; + d148: number; + e148: string; + f148: boolean; + g148: null; + h148: undefined; + i148: bigint; + j148: symbol; +} + +type PartialBig148 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten148 = T extends Array ? Flatten148 : T; +type Nested148 = number[][][][][][][][][][]; +type Flat148 = Flatten148; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly148 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly148 : T[K]; +}; +type DeepRequired148 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired148 : T[K]; +}; +type FR148 = DeepReadonly148>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion148 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha148 = Extract; +type ExcludeZulu148 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA148 { width: number; height: number; depth: number } +interface ShapeB148 { color: string; opacity: number; blend: string } +interface ShapeC148 { x: number; y: number; z: number; w: number } +interface ShapeD148 { label: string; title: string; summary: string } + +type Combined148 = ShapeA148 & ShapeB148 & ShapeC148 & ShapeD148; +type OptionalAll148 = { [K in keyof Combined148]?: Combined148[K] }; +type RequiredAll148 = { [K in keyof Combined148]-?: Combined148[K] }; +type ReadonlyAll148 = { readonly [K in keyof Combined148]: Combined148[K] }; +type NullableAll148 = { [K in keyof Combined148]: Combined148[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString148 = T extends string ? true : false; +type IsNumber148 = T extends number ? true : false; +type TypeName148 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames148 = { + [K in keyof BigRecord148]: TypeName148; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb148 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource148 = "user" | "post" | "comment" | "tag" | "category"; +type Action148 = `${Verb148}_${Resource148}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise148 = T extends Promise ? UnwrapPromise148 : T; +type UnwrapArray148 = T extends (infer U)[] ? UnwrapArray148 : T; +type Head148 = T extends [infer H, ...infer _] ? H : never; +type Tail148 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation148 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation148>] + : never; + +type SmallUnion148 = "a" | "b" | "c" | "d"; +type AllPerms148 = Permutation148; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig148, + Flat148, + FR148, + BigUnion148, + ExtractAlpha148, + ExcludeZulu148, + OptionalAll148, + RequiredAll148, + ReadonlyAll148, + NullableAll148, + TypeNames148, + Action148, + AllPerms148, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts new file mode 100644 index 00000000..e4d0cf1e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-49 (seed 149) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord149 { + a149: { x: number; y: string; z: boolean }; + b149: { p: string[]; q: Record }; + c149: { nested: { deep: { deeper: { deepest: string } } } }; + d149: number; + e149: string; + f149: boolean; + g149: null; + h149: undefined; + i149: bigint; + j149: symbol; +} + +type PartialBig149 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten149 = T extends Array ? Flatten149 : T; +type Nested149 = number[][][][][][][][][][]; +type Flat149 = Flatten149; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly149 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly149 : T[K]; +}; +type DeepRequired149 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired149 : T[K]; +}; +type FR149 = DeepReadonly149>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion149 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha149 = Extract; +type ExcludeZulu149 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA149 { width: number; height: number; depth: number } +interface ShapeB149 { color: string; opacity: number; blend: string } +interface ShapeC149 { x: number; y: number; z: number; w: number } +interface ShapeD149 { label: string; title: string; summary: string } + +type Combined149 = ShapeA149 & ShapeB149 & ShapeC149 & ShapeD149; +type OptionalAll149 = { [K in keyof Combined149]?: Combined149[K] }; +type RequiredAll149 = { [K in keyof Combined149]-?: Combined149[K] }; +type ReadonlyAll149 = { readonly [K in keyof Combined149]: Combined149[K] }; +type NullableAll149 = { [K in keyof Combined149]: Combined149[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString149 = T extends string ? true : false; +type IsNumber149 = T extends number ? true : false; +type TypeName149 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames149 = { + [K in keyof BigRecord149]: TypeName149; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb149 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource149 = "user" | "post" | "comment" | "tag" | "category"; +type Action149 = `${Verb149}_${Resource149}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise149 = T extends Promise ? UnwrapPromise149 : T; +type UnwrapArray149 = T extends (infer U)[] ? UnwrapArray149 : T; +type Head149 = T extends [infer H, ...infer _] ? H : never; +type Tail149 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation149 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation149>] + : never; + +type SmallUnion149 = "a" | "b" | "c" | "d"; +type AllPerms149 = Permutation149; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig149, + Flat149, + FR149, + BigUnion149, + ExtractAlpha149, + ExcludeZulu149, + OptionalAll149, + RequiredAll149, + ReadonlyAll149, + NullableAll149, + TypeNames149, + Action149, + AllPerms149, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts new file mode 100644 index 00000000..2169d98c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts @@ -0,0 +1,125 @@ +// pkg-01 / types-50 (seed 150) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord150 { + a150: { x: number; y: string; z: boolean }; + b150: { p: string[]; q: Record }; + c150: { nested: { deep: { deeper: { deepest: string } } } }; + d150: number; + e150: string; + f150: boolean; + g150: null; + h150: undefined; + i150: bigint; + j150: symbol; +} + +type PartialBig150 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten150 = T extends Array ? Flatten150 : T; +type Nested150 = number[][][][][][][][][][]; +type Flat150 = Flatten150; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly150 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly150 : T[K]; +}; +type DeepRequired150 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired150 : T[K]; +}; +type FR150 = DeepReadonly150>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion150 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha150 = Extract; +type ExcludeZulu150 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA150 { width: number; height: number; depth: number } +interface ShapeB150 { color: string; opacity: number; blend: string } +interface ShapeC150 { x: number; y: number; z: number; w: number } +interface ShapeD150 { label: string; title: string; summary: string } + +type Combined150 = ShapeA150 & ShapeB150 & ShapeC150 & ShapeD150; +type OptionalAll150 = { [K in keyof Combined150]?: Combined150[K] }; +type RequiredAll150 = { [K in keyof Combined150]-?: Combined150[K] }; +type ReadonlyAll150 = { readonly [K in keyof Combined150]: Combined150[K] }; +type NullableAll150 = { [K in keyof Combined150]: Combined150[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString150 = T extends string ? true : false; +type IsNumber150 = T extends number ? true : false; +type TypeName150 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames150 = { + [K in keyof BigRecord150]: TypeName150; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb150 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource150 = "user" | "post" | "comment" | "tag" | "category"; +type Action150 = `${Verb150}_${Resource150}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise150 = T extends Promise ? UnwrapPromise150 : T; +type UnwrapArray150 = T extends (infer U)[] ? UnwrapArray150 : T; +type Head150 = T extends [infer H, ...infer _] ? H : never; +type Tail150 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation150 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation150>] + : never; + +type SmallUnion150 = "a" | "b" | "c" | "d"; +type AllPerms150 = Permutation150; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig150, + Flat150, + FR150, + BigUnion150, + ExtractAlpha150, + ExcludeZulu150, + OptionalAll150, + RequiredAll150, + ReadonlyAll150, + NullableAll150, + TypeNames150, + Action150, + AllPerms150, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts new file mode 100644 index 00000000..1abe096f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-01 (seed 201) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord201 { + a201: { x: number; y: string; z: boolean }; + b201: { p: string[]; q: Record }; + c201: { nested: { deep: { deeper: { deepest: string } } } }; + d201: number; + e201: string; + f201: boolean; + g201: null; + h201: undefined; + i201: bigint; + j201: symbol; +} + +type PartialBig201 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten201 = T extends Array ? Flatten201 : T; +type Nested201 = number[][][][][][][][][][]; +type Flat201 = Flatten201; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly201 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly201 : T[K]; +}; +type DeepRequired201 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired201 : T[K]; +}; +type FR201 = DeepReadonly201>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion201 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha201 = Extract; +type ExcludeZulu201 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA201 { width: number; height: number; depth: number } +interface ShapeB201 { color: string; opacity: number; blend: string } +interface ShapeC201 { x: number; y: number; z: number; w: number } +interface ShapeD201 { label: string; title: string; summary: string } + +type Combined201 = ShapeA201 & ShapeB201 & ShapeC201 & ShapeD201; +type OptionalAll201 = { [K in keyof Combined201]?: Combined201[K] }; +type RequiredAll201 = { [K in keyof Combined201]-?: Combined201[K] }; +type ReadonlyAll201 = { readonly [K in keyof Combined201]: Combined201[K] }; +type NullableAll201 = { [K in keyof Combined201]: Combined201[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString201 = T extends string ? true : false; +type IsNumber201 = T extends number ? true : false; +type TypeName201 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames201 = { + [K in keyof BigRecord201]: TypeName201; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb201 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource201 = "user" | "post" | "comment" | "tag" | "category"; +type Action201 = `${Verb201}_${Resource201}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise201 = T extends Promise ? UnwrapPromise201 : T; +type UnwrapArray201 = T extends (infer U)[] ? UnwrapArray201 : T; +type Head201 = T extends [infer H, ...infer _] ? H : never; +type Tail201 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation201 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation201>] + : never; + +type SmallUnion201 = "a" | "b" | "c" | "d"; +type AllPerms201 = Permutation201; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig201, + Flat201, + FR201, + BigUnion201, + ExtractAlpha201, + ExcludeZulu201, + OptionalAll201, + RequiredAll201, + ReadonlyAll201, + NullableAll201, + TypeNames201, + Action201, + AllPerms201, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts new file mode 100644 index 00000000..10cdf85a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-02 (seed 202) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord202 { + a202: { x: number; y: string; z: boolean }; + b202: { p: string[]; q: Record }; + c202: { nested: { deep: { deeper: { deepest: string } } } }; + d202: number; + e202: string; + f202: boolean; + g202: null; + h202: undefined; + i202: bigint; + j202: symbol; +} + +type PartialBig202 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten202 = T extends Array ? Flatten202 : T; +type Nested202 = number[][][][][][][][][][]; +type Flat202 = Flatten202; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly202 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly202 : T[K]; +}; +type DeepRequired202 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired202 : T[K]; +}; +type FR202 = DeepReadonly202>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion202 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha202 = Extract; +type ExcludeZulu202 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA202 { width: number; height: number; depth: number } +interface ShapeB202 { color: string; opacity: number; blend: string } +interface ShapeC202 { x: number; y: number; z: number; w: number } +interface ShapeD202 { label: string; title: string; summary: string } + +type Combined202 = ShapeA202 & ShapeB202 & ShapeC202 & ShapeD202; +type OptionalAll202 = { [K in keyof Combined202]?: Combined202[K] }; +type RequiredAll202 = { [K in keyof Combined202]-?: Combined202[K] }; +type ReadonlyAll202 = { readonly [K in keyof Combined202]: Combined202[K] }; +type NullableAll202 = { [K in keyof Combined202]: Combined202[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString202 = T extends string ? true : false; +type IsNumber202 = T extends number ? true : false; +type TypeName202 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames202 = { + [K in keyof BigRecord202]: TypeName202; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb202 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource202 = "user" | "post" | "comment" | "tag" | "category"; +type Action202 = `${Verb202}_${Resource202}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise202 = T extends Promise ? UnwrapPromise202 : T; +type UnwrapArray202 = T extends (infer U)[] ? UnwrapArray202 : T; +type Head202 = T extends [infer H, ...infer _] ? H : never; +type Tail202 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation202 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation202>] + : never; + +type SmallUnion202 = "a" | "b" | "c" | "d"; +type AllPerms202 = Permutation202; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig202, + Flat202, + FR202, + BigUnion202, + ExtractAlpha202, + ExcludeZulu202, + OptionalAll202, + RequiredAll202, + ReadonlyAll202, + NullableAll202, + TypeNames202, + Action202, + AllPerms202, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts new file mode 100644 index 00000000..b41cbdd5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-03 (seed 203) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord203 { + a203: { x: number; y: string; z: boolean }; + b203: { p: string[]; q: Record }; + c203: { nested: { deep: { deeper: { deepest: string } } } }; + d203: number; + e203: string; + f203: boolean; + g203: null; + h203: undefined; + i203: bigint; + j203: symbol; +} + +type PartialBig203 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten203 = T extends Array ? Flatten203 : T; +type Nested203 = number[][][][][][][][][][]; +type Flat203 = Flatten203; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly203 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly203 : T[K]; +}; +type DeepRequired203 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired203 : T[K]; +}; +type FR203 = DeepReadonly203>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion203 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha203 = Extract; +type ExcludeZulu203 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA203 { width: number; height: number; depth: number } +interface ShapeB203 { color: string; opacity: number; blend: string } +interface ShapeC203 { x: number; y: number; z: number; w: number } +interface ShapeD203 { label: string; title: string; summary: string } + +type Combined203 = ShapeA203 & ShapeB203 & ShapeC203 & ShapeD203; +type OptionalAll203 = { [K in keyof Combined203]?: Combined203[K] }; +type RequiredAll203 = { [K in keyof Combined203]-?: Combined203[K] }; +type ReadonlyAll203 = { readonly [K in keyof Combined203]: Combined203[K] }; +type NullableAll203 = { [K in keyof Combined203]: Combined203[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString203 = T extends string ? true : false; +type IsNumber203 = T extends number ? true : false; +type TypeName203 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames203 = { + [K in keyof BigRecord203]: TypeName203; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb203 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource203 = "user" | "post" | "comment" | "tag" | "category"; +type Action203 = `${Verb203}_${Resource203}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise203 = T extends Promise ? UnwrapPromise203 : T; +type UnwrapArray203 = T extends (infer U)[] ? UnwrapArray203 : T; +type Head203 = T extends [infer H, ...infer _] ? H : never; +type Tail203 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation203 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation203>] + : never; + +type SmallUnion203 = "a" | "b" | "c" | "d"; +type AllPerms203 = Permutation203; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig203, + Flat203, + FR203, + BigUnion203, + ExtractAlpha203, + ExcludeZulu203, + OptionalAll203, + RequiredAll203, + ReadonlyAll203, + NullableAll203, + TypeNames203, + Action203, + AllPerms203, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts new file mode 100644 index 00000000..ea34b40d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-04 (seed 204) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord204 { + a204: { x: number; y: string; z: boolean }; + b204: { p: string[]; q: Record }; + c204: { nested: { deep: { deeper: { deepest: string } } } }; + d204: number; + e204: string; + f204: boolean; + g204: null; + h204: undefined; + i204: bigint; + j204: symbol; +} + +type PartialBig204 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten204 = T extends Array ? Flatten204 : T; +type Nested204 = number[][][][][][][][][][]; +type Flat204 = Flatten204; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly204 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly204 : T[K]; +}; +type DeepRequired204 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired204 : T[K]; +}; +type FR204 = DeepReadonly204>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion204 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha204 = Extract; +type ExcludeZulu204 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA204 { width: number; height: number; depth: number } +interface ShapeB204 { color: string; opacity: number; blend: string } +interface ShapeC204 { x: number; y: number; z: number; w: number } +interface ShapeD204 { label: string; title: string; summary: string } + +type Combined204 = ShapeA204 & ShapeB204 & ShapeC204 & ShapeD204; +type OptionalAll204 = { [K in keyof Combined204]?: Combined204[K] }; +type RequiredAll204 = { [K in keyof Combined204]-?: Combined204[K] }; +type ReadonlyAll204 = { readonly [K in keyof Combined204]: Combined204[K] }; +type NullableAll204 = { [K in keyof Combined204]: Combined204[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString204 = T extends string ? true : false; +type IsNumber204 = T extends number ? true : false; +type TypeName204 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames204 = { + [K in keyof BigRecord204]: TypeName204; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb204 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource204 = "user" | "post" | "comment" | "tag" | "category"; +type Action204 = `${Verb204}_${Resource204}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise204 = T extends Promise ? UnwrapPromise204 : T; +type UnwrapArray204 = T extends (infer U)[] ? UnwrapArray204 : T; +type Head204 = T extends [infer H, ...infer _] ? H : never; +type Tail204 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation204 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation204>] + : never; + +type SmallUnion204 = "a" | "b" | "c" | "d"; +type AllPerms204 = Permutation204; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig204, + Flat204, + FR204, + BigUnion204, + ExtractAlpha204, + ExcludeZulu204, + OptionalAll204, + RequiredAll204, + ReadonlyAll204, + NullableAll204, + TypeNames204, + Action204, + AllPerms204, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts new file mode 100644 index 00000000..dbd10512 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-05 (seed 205) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord205 { + a205: { x: number; y: string; z: boolean }; + b205: { p: string[]; q: Record }; + c205: { nested: { deep: { deeper: { deepest: string } } } }; + d205: number; + e205: string; + f205: boolean; + g205: null; + h205: undefined; + i205: bigint; + j205: symbol; +} + +type PartialBig205 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten205 = T extends Array ? Flatten205 : T; +type Nested205 = number[][][][][][][][][][]; +type Flat205 = Flatten205; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly205 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly205 : T[K]; +}; +type DeepRequired205 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired205 : T[K]; +}; +type FR205 = DeepReadonly205>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion205 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha205 = Extract; +type ExcludeZulu205 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA205 { width: number; height: number; depth: number } +interface ShapeB205 { color: string; opacity: number; blend: string } +interface ShapeC205 { x: number; y: number; z: number; w: number } +interface ShapeD205 { label: string; title: string; summary: string } + +type Combined205 = ShapeA205 & ShapeB205 & ShapeC205 & ShapeD205; +type OptionalAll205 = { [K in keyof Combined205]?: Combined205[K] }; +type RequiredAll205 = { [K in keyof Combined205]-?: Combined205[K] }; +type ReadonlyAll205 = { readonly [K in keyof Combined205]: Combined205[K] }; +type NullableAll205 = { [K in keyof Combined205]: Combined205[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString205 = T extends string ? true : false; +type IsNumber205 = T extends number ? true : false; +type TypeName205 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames205 = { + [K in keyof BigRecord205]: TypeName205; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb205 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource205 = "user" | "post" | "comment" | "tag" | "category"; +type Action205 = `${Verb205}_${Resource205}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise205 = T extends Promise ? UnwrapPromise205 : T; +type UnwrapArray205 = T extends (infer U)[] ? UnwrapArray205 : T; +type Head205 = T extends [infer H, ...infer _] ? H : never; +type Tail205 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation205 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation205>] + : never; + +type SmallUnion205 = "a" | "b" | "c" | "d"; +type AllPerms205 = Permutation205; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig205, + Flat205, + FR205, + BigUnion205, + ExtractAlpha205, + ExcludeZulu205, + OptionalAll205, + RequiredAll205, + ReadonlyAll205, + NullableAll205, + TypeNames205, + Action205, + AllPerms205, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts new file mode 100644 index 00000000..ab0a1df3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-06 (seed 206) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord206 { + a206: { x: number; y: string; z: boolean }; + b206: { p: string[]; q: Record }; + c206: { nested: { deep: { deeper: { deepest: string } } } }; + d206: number; + e206: string; + f206: boolean; + g206: null; + h206: undefined; + i206: bigint; + j206: symbol; +} + +type PartialBig206 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten206 = T extends Array ? Flatten206 : T; +type Nested206 = number[][][][][][][][][][]; +type Flat206 = Flatten206; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly206 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly206 : T[K]; +}; +type DeepRequired206 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired206 : T[K]; +}; +type FR206 = DeepReadonly206>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion206 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha206 = Extract; +type ExcludeZulu206 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA206 { width: number; height: number; depth: number } +interface ShapeB206 { color: string; opacity: number; blend: string } +interface ShapeC206 { x: number; y: number; z: number; w: number } +interface ShapeD206 { label: string; title: string; summary: string } + +type Combined206 = ShapeA206 & ShapeB206 & ShapeC206 & ShapeD206; +type OptionalAll206 = { [K in keyof Combined206]?: Combined206[K] }; +type RequiredAll206 = { [K in keyof Combined206]-?: Combined206[K] }; +type ReadonlyAll206 = { readonly [K in keyof Combined206]: Combined206[K] }; +type NullableAll206 = { [K in keyof Combined206]: Combined206[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString206 = T extends string ? true : false; +type IsNumber206 = T extends number ? true : false; +type TypeName206 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames206 = { + [K in keyof BigRecord206]: TypeName206; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb206 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource206 = "user" | "post" | "comment" | "tag" | "category"; +type Action206 = `${Verb206}_${Resource206}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise206 = T extends Promise ? UnwrapPromise206 : T; +type UnwrapArray206 = T extends (infer U)[] ? UnwrapArray206 : T; +type Head206 = T extends [infer H, ...infer _] ? H : never; +type Tail206 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation206 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation206>] + : never; + +type SmallUnion206 = "a" | "b" | "c" | "d"; +type AllPerms206 = Permutation206; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig206, + Flat206, + FR206, + BigUnion206, + ExtractAlpha206, + ExcludeZulu206, + OptionalAll206, + RequiredAll206, + ReadonlyAll206, + NullableAll206, + TypeNames206, + Action206, + AllPerms206, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts new file mode 100644 index 00000000..73600641 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-07 (seed 207) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord207 { + a207: { x: number; y: string; z: boolean }; + b207: { p: string[]; q: Record }; + c207: { nested: { deep: { deeper: { deepest: string } } } }; + d207: number; + e207: string; + f207: boolean; + g207: null; + h207: undefined; + i207: bigint; + j207: symbol; +} + +type PartialBig207 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten207 = T extends Array ? Flatten207 : T; +type Nested207 = number[][][][][][][][][][]; +type Flat207 = Flatten207; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly207 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly207 : T[K]; +}; +type DeepRequired207 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired207 : T[K]; +}; +type FR207 = DeepReadonly207>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion207 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha207 = Extract; +type ExcludeZulu207 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA207 { width: number; height: number; depth: number } +interface ShapeB207 { color: string; opacity: number; blend: string } +interface ShapeC207 { x: number; y: number; z: number; w: number } +interface ShapeD207 { label: string; title: string; summary: string } + +type Combined207 = ShapeA207 & ShapeB207 & ShapeC207 & ShapeD207; +type OptionalAll207 = { [K in keyof Combined207]?: Combined207[K] }; +type RequiredAll207 = { [K in keyof Combined207]-?: Combined207[K] }; +type ReadonlyAll207 = { readonly [K in keyof Combined207]: Combined207[K] }; +type NullableAll207 = { [K in keyof Combined207]: Combined207[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString207 = T extends string ? true : false; +type IsNumber207 = T extends number ? true : false; +type TypeName207 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames207 = { + [K in keyof BigRecord207]: TypeName207; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb207 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource207 = "user" | "post" | "comment" | "tag" | "category"; +type Action207 = `${Verb207}_${Resource207}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise207 = T extends Promise ? UnwrapPromise207 : T; +type UnwrapArray207 = T extends (infer U)[] ? UnwrapArray207 : T; +type Head207 = T extends [infer H, ...infer _] ? H : never; +type Tail207 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation207 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation207>] + : never; + +type SmallUnion207 = "a" | "b" | "c" | "d"; +type AllPerms207 = Permutation207; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig207, + Flat207, + FR207, + BigUnion207, + ExtractAlpha207, + ExcludeZulu207, + OptionalAll207, + RequiredAll207, + ReadonlyAll207, + NullableAll207, + TypeNames207, + Action207, + AllPerms207, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts new file mode 100644 index 00000000..3ee5b4c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-08 (seed 208) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord208 { + a208: { x: number; y: string; z: boolean }; + b208: { p: string[]; q: Record }; + c208: { nested: { deep: { deeper: { deepest: string } } } }; + d208: number; + e208: string; + f208: boolean; + g208: null; + h208: undefined; + i208: bigint; + j208: symbol; +} + +type PartialBig208 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten208 = T extends Array ? Flatten208 : T; +type Nested208 = number[][][][][][][][][][]; +type Flat208 = Flatten208; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly208 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly208 : T[K]; +}; +type DeepRequired208 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired208 : T[K]; +}; +type FR208 = DeepReadonly208>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion208 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha208 = Extract; +type ExcludeZulu208 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA208 { width: number; height: number; depth: number } +interface ShapeB208 { color: string; opacity: number; blend: string } +interface ShapeC208 { x: number; y: number; z: number; w: number } +interface ShapeD208 { label: string; title: string; summary: string } + +type Combined208 = ShapeA208 & ShapeB208 & ShapeC208 & ShapeD208; +type OptionalAll208 = { [K in keyof Combined208]?: Combined208[K] }; +type RequiredAll208 = { [K in keyof Combined208]-?: Combined208[K] }; +type ReadonlyAll208 = { readonly [K in keyof Combined208]: Combined208[K] }; +type NullableAll208 = { [K in keyof Combined208]: Combined208[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString208 = T extends string ? true : false; +type IsNumber208 = T extends number ? true : false; +type TypeName208 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames208 = { + [K in keyof BigRecord208]: TypeName208; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb208 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource208 = "user" | "post" | "comment" | "tag" | "category"; +type Action208 = `${Verb208}_${Resource208}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise208 = T extends Promise ? UnwrapPromise208 : T; +type UnwrapArray208 = T extends (infer U)[] ? UnwrapArray208 : T; +type Head208 = T extends [infer H, ...infer _] ? H : never; +type Tail208 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation208 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation208>] + : never; + +type SmallUnion208 = "a" | "b" | "c" | "d"; +type AllPerms208 = Permutation208; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig208, + Flat208, + FR208, + BigUnion208, + ExtractAlpha208, + ExcludeZulu208, + OptionalAll208, + RequiredAll208, + ReadonlyAll208, + NullableAll208, + TypeNames208, + Action208, + AllPerms208, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts new file mode 100644 index 00000000..647704e1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-09 (seed 209) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord209 { + a209: { x: number; y: string; z: boolean }; + b209: { p: string[]; q: Record }; + c209: { nested: { deep: { deeper: { deepest: string } } } }; + d209: number; + e209: string; + f209: boolean; + g209: null; + h209: undefined; + i209: bigint; + j209: symbol; +} + +type PartialBig209 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten209 = T extends Array ? Flatten209 : T; +type Nested209 = number[][][][][][][][][][]; +type Flat209 = Flatten209; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly209 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly209 : T[K]; +}; +type DeepRequired209 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired209 : T[K]; +}; +type FR209 = DeepReadonly209>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion209 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha209 = Extract; +type ExcludeZulu209 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA209 { width: number; height: number; depth: number } +interface ShapeB209 { color: string; opacity: number; blend: string } +interface ShapeC209 { x: number; y: number; z: number; w: number } +interface ShapeD209 { label: string; title: string; summary: string } + +type Combined209 = ShapeA209 & ShapeB209 & ShapeC209 & ShapeD209; +type OptionalAll209 = { [K in keyof Combined209]?: Combined209[K] }; +type RequiredAll209 = { [K in keyof Combined209]-?: Combined209[K] }; +type ReadonlyAll209 = { readonly [K in keyof Combined209]: Combined209[K] }; +type NullableAll209 = { [K in keyof Combined209]: Combined209[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString209 = T extends string ? true : false; +type IsNumber209 = T extends number ? true : false; +type TypeName209 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames209 = { + [K in keyof BigRecord209]: TypeName209; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb209 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource209 = "user" | "post" | "comment" | "tag" | "category"; +type Action209 = `${Verb209}_${Resource209}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise209 = T extends Promise ? UnwrapPromise209 : T; +type UnwrapArray209 = T extends (infer U)[] ? UnwrapArray209 : T; +type Head209 = T extends [infer H, ...infer _] ? H : never; +type Tail209 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation209 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation209>] + : never; + +type SmallUnion209 = "a" | "b" | "c" | "d"; +type AllPerms209 = Permutation209; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig209, + Flat209, + FR209, + BigUnion209, + ExtractAlpha209, + ExcludeZulu209, + OptionalAll209, + RequiredAll209, + ReadonlyAll209, + NullableAll209, + TypeNames209, + Action209, + AllPerms209, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts new file mode 100644 index 00000000..67b02961 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-10 (seed 210) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord210 { + a210: { x: number; y: string; z: boolean }; + b210: { p: string[]; q: Record }; + c210: { nested: { deep: { deeper: { deepest: string } } } }; + d210: number; + e210: string; + f210: boolean; + g210: null; + h210: undefined; + i210: bigint; + j210: symbol; +} + +type PartialBig210 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten210 = T extends Array ? Flatten210 : T; +type Nested210 = number[][][][][][][][][][]; +type Flat210 = Flatten210; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly210 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly210 : T[K]; +}; +type DeepRequired210 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired210 : T[K]; +}; +type FR210 = DeepReadonly210>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion210 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha210 = Extract; +type ExcludeZulu210 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA210 { width: number; height: number; depth: number } +interface ShapeB210 { color: string; opacity: number; blend: string } +interface ShapeC210 { x: number; y: number; z: number; w: number } +interface ShapeD210 { label: string; title: string; summary: string } + +type Combined210 = ShapeA210 & ShapeB210 & ShapeC210 & ShapeD210; +type OptionalAll210 = { [K in keyof Combined210]?: Combined210[K] }; +type RequiredAll210 = { [K in keyof Combined210]-?: Combined210[K] }; +type ReadonlyAll210 = { readonly [K in keyof Combined210]: Combined210[K] }; +type NullableAll210 = { [K in keyof Combined210]: Combined210[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString210 = T extends string ? true : false; +type IsNumber210 = T extends number ? true : false; +type TypeName210 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames210 = { + [K in keyof BigRecord210]: TypeName210; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb210 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource210 = "user" | "post" | "comment" | "tag" | "category"; +type Action210 = `${Verb210}_${Resource210}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise210 = T extends Promise ? UnwrapPromise210 : T; +type UnwrapArray210 = T extends (infer U)[] ? UnwrapArray210 : T; +type Head210 = T extends [infer H, ...infer _] ? H : never; +type Tail210 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation210 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation210>] + : never; + +type SmallUnion210 = "a" | "b" | "c" | "d"; +type AllPerms210 = Permutation210; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig210, + Flat210, + FR210, + BigUnion210, + ExtractAlpha210, + ExcludeZulu210, + OptionalAll210, + RequiredAll210, + ReadonlyAll210, + NullableAll210, + TypeNames210, + Action210, + AllPerms210, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts new file mode 100644 index 00000000..67bac546 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-11 (seed 211) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord211 { + a211: { x: number; y: string; z: boolean }; + b211: { p: string[]; q: Record }; + c211: { nested: { deep: { deeper: { deepest: string } } } }; + d211: number; + e211: string; + f211: boolean; + g211: null; + h211: undefined; + i211: bigint; + j211: symbol; +} + +type PartialBig211 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten211 = T extends Array ? Flatten211 : T; +type Nested211 = number[][][][][][][][][][]; +type Flat211 = Flatten211; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly211 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly211 : T[K]; +}; +type DeepRequired211 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired211 : T[K]; +}; +type FR211 = DeepReadonly211>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion211 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha211 = Extract; +type ExcludeZulu211 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA211 { width: number; height: number; depth: number } +interface ShapeB211 { color: string; opacity: number; blend: string } +interface ShapeC211 { x: number; y: number; z: number; w: number } +interface ShapeD211 { label: string; title: string; summary: string } + +type Combined211 = ShapeA211 & ShapeB211 & ShapeC211 & ShapeD211; +type OptionalAll211 = { [K in keyof Combined211]?: Combined211[K] }; +type RequiredAll211 = { [K in keyof Combined211]-?: Combined211[K] }; +type ReadonlyAll211 = { readonly [K in keyof Combined211]: Combined211[K] }; +type NullableAll211 = { [K in keyof Combined211]: Combined211[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString211 = T extends string ? true : false; +type IsNumber211 = T extends number ? true : false; +type TypeName211 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames211 = { + [K in keyof BigRecord211]: TypeName211; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb211 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource211 = "user" | "post" | "comment" | "tag" | "category"; +type Action211 = `${Verb211}_${Resource211}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise211 = T extends Promise ? UnwrapPromise211 : T; +type UnwrapArray211 = T extends (infer U)[] ? UnwrapArray211 : T; +type Head211 = T extends [infer H, ...infer _] ? H : never; +type Tail211 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation211 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation211>] + : never; + +type SmallUnion211 = "a" | "b" | "c" | "d"; +type AllPerms211 = Permutation211; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig211, + Flat211, + FR211, + BigUnion211, + ExtractAlpha211, + ExcludeZulu211, + OptionalAll211, + RequiredAll211, + ReadonlyAll211, + NullableAll211, + TypeNames211, + Action211, + AllPerms211, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts new file mode 100644 index 00000000..6e93c442 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-12 (seed 212) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord212 { + a212: { x: number; y: string; z: boolean }; + b212: { p: string[]; q: Record }; + c212: { nested: { deep: { deeper: { deepest: string } } } }; + d212: number; + e212: string; + f212: boolean; + g212: null; + h212: undefined; + i212: bigint; + j212: symbol; +} + +type PartialBig212 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten212 = T extends Array ? Flatten212 : T; +type Nested212 = number[][][][][][][][][][]; +type Flat212 = Flatten212; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly212 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly212 : T[K]; +}; +type DeepRequired212 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired212 : T[K]; +}; +type FR212 = DeepReadonly212>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion212 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha212 = Extract; +type ExcludeZulu212 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA212 { width: number; height: number; depth: number } +interface ShapeB212 { color: string; opacity: number; blend: string } +interface ShapeC212 { x: number; y: number; z: number; w: number } +interface ShapeD212 { label: string; title: string; summary: string } + +type Combined212 = ShapeA212 & ShapeB212 & ShapeC212 & ShapeD212; +type OptionalAll212 = { [K in keyof Combined212]?: Combined212[K] }; +type RequiredAll212 = { [K in keyof Combined212]-?: Combined212[K] }; +type ReadonlyAll212 = { readonly [K in keyof Combined212]: Combined212[K] }; +type NullableAll212 = { [K in keyof Combined212]: Combined212[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString212 = T extends string ? true : false; +type IsNumber212 = T extends number ? true : false; +type TypeName212 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames212 = { + [K in keyof BigRecord212]: TypeName212; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb212 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource212 = "user" | "post" | "comment" | "tag" | "category"; +type Action212 = `${Verb212}_${Resource212}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise212 = T extends Promise ? UnwrapPromise212 : T; +type UnwrapArray212 = T extends (infer U)[] ? UnwrapArray212 : T; +type Head212 = T extends [infer H, ...infer _] ? H : never; +type Tail212 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation212 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation212>] + : never; + +type SmallUnion212 = "a" | "b" | "c" | "d"; +type AllPerms212 = Permutation212; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig212, + Flat212, + FR212, + BigUnion212, + ExtractAlpha212, + ExcludeZulu212, + OptionalAll212, + RequiredAll212, + ReadonlyAll212, + NullableAll212, + TypeNames212, + Action212, + AllPerms212, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts new file mode 100644 index 00000000..06af3123 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-13 (seed 213) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord213 { + a213: { x: number; y: string; z: boolean }; + b213: { p: string[]; q: Record }; + c213: { nested: { deep: { deeper: { deepest: string } } } }; + d213: number; + e213: string; + f213: boolean; + g213: null; + h213: undefined; + i213: bigint; + j213: symbol; +} + +type PartialBig213 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten213 = T extends Array ? Flatten213 : T; +type Nested213 = number[][][][][][][][][][]; +type Flat213 = Flatten213; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly213 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly213 : T[K]; +}; +type DeepRequired213 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired213 : T[K]; +}; +type FR213 = DeepReadonly213>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion213 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha213 = Extract; +type ExcludeZulu213 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA213 { width: number; height: number; depth: number } +interface ShapeB213 { color: string; opacity: number; blend: string } +interface ShapeC213 { x: number; y: number; z: number; w: number } +interface ShapeD213 { label: string; title: string; summary: string } + +type Combined213 = ShapeA213 & ShapeB213 & ShapeC213 & ShapeD213; +type OptionalAll213 = { [K in keyof Combined213]?: Combined213[K] }; +type RequiredAll213 = { [K in keyof Combined213]-?: Combined213[K] }; +type ReadonlyAll213 = { readonly [K in keyof Combined213]: Combined213[K] }; +type NullableAll213 = { [K in keyof Combined213]: Combined213[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString213 = T extends string ? true : false; +type IsNumber213 = T extends number ? true : false; +type TypeName213 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames213 = { + [K in keyof BigRecord213]: TypeName213; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb213 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource213 = "user" | "post" | "comment" | "tag" | "category"; +type Action213 = `${Verb213}_${Resource213}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise213 = T extends Promise ? UnwrapPromise213 : T; +type UnwrapArray213 = T extends (infer U)[] ? UnwrapArray213 : T; +type Head213 = T extends [infer H, ...infer _] ? H : never; +type Tail213 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation213 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation213>] + : never; + +type SmallUnion213 = "a" | "b" | "c" | "d"; +type AllPerms213 = Permutation213; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig213, + Flat213, + FR213, + BigUnion213, + ExtractAlpha213, + ExcludeZulu213, + OptionalAll213, + RequiredAll213, + ReadonlyAll213, + NullableAll213, + TypeNames213, + Action213, + AllPerms213, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts new file mode 100644 index 00000000..71947186 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-14 (seed 214) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord214 { + a214: { x: number; y: string; z: boolean }; + b214: { p: string[]; q: Record }; + c214: { nested: { deep: { deeper: { deepest: string } } } }; + d214: number; + e214: string; + f214: boolean; + g214: null; + h214: undefined; + i214: bigint; + j214: symbol; +} + +type PartialBig214 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten214 = T extends Array ? Flatten214 : T; +type Nested214 = number[][][][][][][][][][]; +type Flat214 = Flatten214; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly214 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly214 : T[K]; +}; +type DeepRequired214 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired214 : T[K]; +}; +type FR214 = DeepReadonly214>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion214 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha214 = Extract; +type ExcludeZulu214 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA214 { width: number; height: number; depth: number } +interface ShapeB214 { color: string; opacity: number; blend: string } +interface ShapeC214 { x: number; y: number; z: number; w: number } +interface ShapeD214 { label: string; title: string; summary: string } + +type Combined214 = ShapeA214 & ShapeB214 & ShapeC214 & ShapeD214; +type OptionalAll214 = { [K in keyof Combined214]?: Combined214[K] }; +type RequiredAll214 = { [K in keyof Combined214]-?: Combined214[K] }; +type ReadonlyAll214 = { readonly [K in keyof Combined214]: Combined214[K] }; +type NullableAll214 = { [K in keyof Combined214]: Combined214[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString214 = T extends string ? true : false; +type IsNumber214 = T extends number ? true : false; +type TypeName214 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames214 = { + [K in keyof BigRecord214]: TypeName214; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb214 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource214 = "user" | "post" | "comment" | "tag" | "category"; +type Action214 = `${Verb214}_${Resource214}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise214 = T extends Promise ? UnwrapPromise214 : T; +type UnwrapArray214 = T extends (infer U)[] ? UnwrapArray214 : T; +type Head214 = T extends [infer H, ...infer _] ? H : never; +type Tail214 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation214 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation214>] + : never; + +type SmallUnion214 = "a" | "b" | "c" | "d"; +type AllPerms214 = Permutation214; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig214, + Flat214, + FR214, + BigUnion214, + ExtractAlpha214, + ExcludeZulu214, + OptionalAll214, + RequiredAll214, + ReadonlyAll214, + NullableAll214, + TypeNames214, + Action214, + AllPerms214, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts new file mode 100644 index 00000000..a3db7909 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-15 (seed 215) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord215 { + a215: { x: number; y: string; z: boolean }; + b215: { p: string[]; q: Record }; + c215: { nested: { deep: { deeper: { deepest: string } } } }; + d215: number; + e215: string; + f215: boolean; + g215: null; + h215: undefined; + i215: bigint; + j215: symbol; +} + +type PartialBig215 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten215 = T extends Array ? Flatten215 : T; +type Nested215 = number[][][][][][][][][][]; +type Flat215 = Flatten215; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly215 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly215 : T[K]; +}; +type DeepRequired215 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired215 : T[K]; +}; +type FR215 = DeepReadonly215>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion215 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha215 = Extract; +type ExcludeZulu215 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA215 { width: number; height: number; depth: number } +interface ShapeB215 { color: string; opacity: number; blend: string } +interface ShapeC215 { x: number; y: number; z: number; w: number } +interface ShapeD215 { label: string; title: string; summary: string } + +type Combined215 = ShapeA215 & ShapeB215 & ShapeC215 & ShapeD215; +type OptionalAll215 = { [K in keyof Combined215]?: Combined215[K] }; +type RequiredAll215 = { [K in keyof Combined215]-?: Combined215[K] }; +type ReadonlyAll215 = { readonly [K in keyof Combined215]: Combined215[K] }; +type NullableAll215 = { [K in keyof Combined215]: Combined215[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString215 = T extends string ? true : false; +type IsNumber215 = T extends number ? true : false; +type TypeName215 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames215 = { + [K in keyof BigRecord215]: TypeName215; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb215 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource215 = "user" | "post" | "comment" | "tag" | "category"; +type Action215 = `${Verb215}_${Resource215}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise215 = T extends Promise ? UnwrapPromise215 : T; +type UnwrapArray215 = T extends (infer U)[] ? UnwrapArray215 : T; +type Head215 = T extends [infer H, ...infer _] ? H : never; +type Tail215 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation215 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation215>] + : never; + +type SmallUnion215 = "a" | "b" | "c" | "d"; +type AllPerms215 = Permutation215; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig215, + Flat215, + FR215, + BigUnion215, + ExtractAlpha215, + ExcludeZulu215, + OptionalAll215, + RequiredAll215, + ReadonlyAll215, + NullableAll215, + TypeNames215, + Action215, + AllPerms215, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts new file mode 100644 index 00000000..13ceef3a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-16 (seed 216) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord216 { + a216: { x: number; y: string; z: boolean }; + b216: { p: string[]; q: Record }; + c216: { nested: { deep: { deeper: { deepest: string } } } }; + d216: number; + e216: string; + f216: boolean; + g216: null; + h216: undefined; + i216: bigint; + j216: symbol; +} + +type PartialBig216 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten216 = T extends Array ? Flatten216 : T; +type Nested216 = number[][][][][][][][][][]; +type Flat216 = Flatten216; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly216 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly216 : T[K]; +}; +type DeepRequired216 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired216 : T[K]; +}; +type FR216 = DeepReadonly216>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion216 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha216 = Extract; +type ExcludeZulu216 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA216 { width: number; height: number; depth: number } +interface ShapeB216 { color: string; opacity: number; blend: string } +interface ShapeC216 { x: number; y: number; z: number; w: number } +interface ShapeD216 { label: string; title: string; summary: string } + +type Combined216 = ShapeA216 & ShapeB216 & ShapeC216 & ShapeD216; +type OptionalAll216 = { [K in keyof Combined216]?: Combined216[K] }; +type RequiredAll216 = { [K in keyof Combined216]-?: Combined216[K] }; +type ReadonlyAll216 = { readonly [K in keyof Combined216]: Combined216[K] }; +type NullableAll216 = { [K in keyof Combined216]: Combined216[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString216 = T extends string ? true : false; +type IsNumber216 = T extends number ? true : false; +type TypeName216 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames216 = { + [K in keyof BigRecord216]: TypeName216; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb216 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource216 = "user" | "post" | "comment" | "tag" | "category"; +type Action216 = `${Verb216}_${Resource216}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise216 = T extends Promise ? UnwrapPromise216 : T; +type UnwrapArray216 = T extends (infer U)[] ? UnwrapArray216 : T; +type Head216 = T extends [infer H, ...infer _] ? H : never; +type Tail216 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation216 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation216>] + : never; + +type SmallUnion216 = "a" | "b" | "c" | "d"; +type AllPerms216 = Permutation216; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig216, + Flat216, + FR216, + BigUnion216, + ExtractAlpha216, + ExcludeZulu216, + OptionalAll216, + RequiredAll216, + ReadonlyAll216, + NullableAll216, + TypeNames216, + Action216, + AllPerms216, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts new file mode 100644 index 00000000..fdc1e00a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-17 (seed 217) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord217 { + a217: { x: number; y: string; z: boolean }; + b217: { p: string[]; q: Record }; + c217: { nested: { deep: { deeper: { deepest: string } } } }; + d217: number; + e217: string; + f217: boolean; + g217: null; + h217: undefined; + i217: bigint; + j217: symbol; +} + +type PartialBig217 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten217 = T extends Array ? Flatten217 : T; +type Nested217 = number[][][][][][][][][][]; +type Flat217 = Flatten217; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly217 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly217 : T[K]; +}; +type DeepRequired217 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired217 : T[K]; +}; +type FR217 = DeepReadonly217>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion217 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha217 = Extract; +type ExcludeZulu217 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA217 { width: number; height: number; depth: number } +interface ShapeB217 { color: string; opacity: number; blend: string } +interface ShapeC217 { x: number; y: number; z: number; w: number } +interface ShapeD217 { label: string; title: string; summary: string } + +type Combined217 = ShapeA217 & ShapeB217 & ShapeC217 & ShapeD217; +type OptionalAll217 = { [K in keyof Combined217]?: Combined217[K] }; +type RequiredAll217 = { [K in keyof Combined217]-?: Combined217[K] }; +type ReadonlyAll217 = { readonly [K in keyof Combined217]: Combined217[K] }; +type NullableAll217 = { [K in keyof Combined217]: Combined217[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString217 = T extends string ? true : false; +type IsNumber217 = T extends number ? true : false; +type TypeName217 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames217 = { + [K in keyof BigRecord217]: TypeName217; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb217 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource217 = "user" | "post" | "comment" | "tag" | "category"; +type Action217 = `${Verb217}_${Resource217}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise217 = T extends Promise ? UnwrapPromise217 : T; +type UnwrapArray217 = T extends (infer U)[] ? UnwrapArray217 : T; +type Head217 = T extends [infer H, ...infer _] ? H : never; +type Tail217 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation217 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation217>] + : never; + +type SmallUnion217 = "a" | "b" | "c" | "d"; +type AllPerms217 = Permutation217; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig217, + Flat217, + FR217, + BigUnion217, + ExtractAlpha217, + ExcludeZulu217, + OptionalAll217, + RequiredAll217, + ReadonlyAll217, + NullableAll217, + TypeNames217, + Action217, + AllPerms217, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts new file mode 100644 index 00000000..4cca6e46 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-18 (seed 218) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord218 { + a218: { x: number; y: string; z: boolean }; + b218: { p: string[]; q: Record }; + c218: { nested: { deep: { deeper: { deepest: string } } } }; + d218: number; + e218: string; + f218: boolean; + g218: null; + h218: undefined; + i218: bigint; + j218: symbol; +} + +type PartialBig218 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten218 = T extends Array ? Flatten218 : T; +type Nested218 = number[][][][][][][][][][]; +type Flat218 = Flatten218; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly218 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly218 : T[K]; +}; +type DeepRequired218 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired218 : T[K]; +}; +type FR218 = DeepReadonly218>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion218 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha218 = Extract; +type ExcludeZulu218 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA218 { width: number; height: number; depth: number } +interface ShapeB218 { color: string; opacity: number; blend: string } +interface ShapeC218 { x: number; y: number; z: number; w: number } +interface ShapeD218 { label: string; title: string; summary: string } + +type Combined218 = ShapeA218 & ShapeB218 & ShapeC218 & ShapeD218; +type OptionalAll218 = { [K in keyof Combined218]?: Combined218[K] }; +type RequiredAll218 = { [K in keyof Combined218]-?: Combined218[K] }; +type ReadonlyAll218 = { readonly [K in keyof Combined218]: Combined218[K] }; +type NullableAll218 = { [K in keyof Combined218]: Combined218[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString218 = T extends string ? true : false; +type IsNumber218 = T extends number ? true : false; +type TypeName218 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames218 = { + [K in keyof BigRecord218]: TypeName218; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb218 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource218 = "user" | "post" | "comment" | "tag" | "category"; +type Action218 = `${Verb218}_${Resource218}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise218 = T extends Promise ? UnwrapPromise218 : T; +type UnwrapArray218 = T extends (infer U)[] ? UnwrapArray218 : T; +type Head218 = T extends [infer H, ...infer _] ? H : never; +type Tail218 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation218 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation218>] + : never; + +type SmallUnion218 = "a" | "b" | "c" | "d"; +type AllPerms218 = Permutation218; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig218, + Flat218, + FR218, + BigUnion218, + ExtractAlpha218, + ExcludeZulu218, + OptionalAll218, + RequiredAll218, + ReadonlyAll218, + NullableAll218, + TypeNames218, + Action218, + AllPerms218, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts new file mode 100644 index 00000000..cb7377e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-19 (seed 219) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord219 { + a219: { x: number; y: string; z: boolean }; + b219: { p: string[]; q: Record }; + c219: { nested: { deep: { deeper: { deepest: string } } } }; + d219: number; + e219: string; + f219: boolean; + g219: null; + h219: undefined; + i219: bigint; + j219: symbol; +} + +type PartialBig219 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten219 = T extends Array ? Flatten219 : T; +type Nested219 = number[][][][][][][][][][]; +type Flat219 = Flatten219; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly219 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly219 : T[K]; +}; +type DeepRequired219 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired219 : T[K]; +}; +type FR219 = DeepReadonly219>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion219 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha219 = Extract; +type ExcludeZulu219 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA219 { width: number; height: number; depth: number } +interface ShapeB219 { color: string; opacity: number; blend: string } +interface ShapeC219 { x: number; y: number; z: number; w: number } +interface ShapeD219 { label: string; title: string; summary: string } + +type Combined219 = ShapeA219 & ShapeB219 & ShapeC219 & ShapeD219; +type OptionalAll219 = { [K in keyof Combined219]?: Combined219[K] }; +type RequiredAll219 = { [K in keyof Combined219]-?: Combined219[K] }; +type ReadonlyAll219 = { readonly [K in keyof Combined219]: Combined219[K] }; +type NullableAll219 = { [K in keyof Combined219]: Combined219[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString219 = T extends string ? true : false; +type IsNumber219 = T extends number ? true : false; +type TypeName219 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames219 = { + [K in keyof BigRecord219]: TypeName219; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb219 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource219 = "user" | "post" | "comment" | "tag" | "category"; +type Action219 = `${Verb219}_${Resource219}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise219 = T extends Promise ? UnwrapPromise219 : T; +type UnwrapArray219 = T extends (infer U)[] ? UnwrapArray219 : T; +type Head219 = T extends [infer H, ...infer _] ? H : never; +type Tail219 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation219 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation219>] + : never; + +type SmallUnion219 = "a" | "b" | "c" | "d"; +type AllPerms219 = Permutation219; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig219, + Flat219, + FR219, + BigUnion219, + ExtractAlpha219, + ExcludeZulu219, + OptionalAll219, + RequiredAll219, + ReadonlyAll219, + NullableAll219, + TypeNames219, + Action219, + AllPerms219, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts new file mode 100644 index 00000000..e3babe25 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-20 (seed 220) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord220 { + a220: { x: number; y: string; z: boolean }; + b220: { p: string[]; q: Record }; + c220: { nested: { deep: { deeper: { deepest: string } } } }; + d220: number; + e220: string; + f220: boolean; + g220: null; + h220: undefined; + i220: bigint; + j220: symbol; +} + +type PartialBig220 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten220 = T extends Array ? Flatten220 : T; +type Nested220 = number[][][][][][][][][][]; +type Flat220 = Flatten220; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly220 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly220 : T[K]; +}; +type DeepRequired220 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired220 : T[K]; +}; +type FR220 = DeepReadonly220>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion220 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha220 = Extract; +type ExcludeZulu220 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA220 { width: number; height: number; depth: number } +interface ShapeB220 { color: string; opacity: number; blend: string } +interface ShapeC220 { x: number; y: number; z: number; w: number } +interface ShapeD220 { label: string; title: string; summary: string } + +type Combined220 = ShapeA220 & ShapeB220 & ShapeC220 & ShapeD220; +type OptionalAll220 = { [K in keyof Combined220]?: Combined220[K] }; +type RequiredAll220 = { [K in keyof Combined220]-?: Combined220[K] }; +type ReadonlyAll220 = { readonly [K in keyof Combined220]: Combined220[K] }; +type NullableAll220 = { [K in keyof Combined220]: Combined220[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString220 = T extends string ? true : false; +type IsNumber220 = T extends number ? true : false; +type TypeName220 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames220 = { + [K in keyof BigRecord220]: TypeName220; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb220 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource220 = "user" | "post" | "comment" | "tag" | "category"; +type Action220 = `${Verb220}_${Resource220}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise220 = T extends Promise ? UnwrapPromise220 : T; +type UnwrapArray220 = T extends (infer U)[] ? UnwrapArray220 : T; +type Head220 = T extends [infer H, ...infer _] ? H : never; +type Tail220 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation220 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation220>] + : never; + +type SmallUnion220 = "a" | "b" | "c" | "d"; +type AllPerms220 = Permutation220; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig220, + Flat220, + FR220, + BigUnion220, + ExtractAlpha220, + ExcludeZulu220, + OptionalAll220, + RequiredAll220, + ReadonlyAll220, + NullableAll220, + TypeNames220, + Action220, + AllPerms220, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts new file mode 100644 index 00000000..c98707d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-21 (seed 221) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord221 { + a221: { x: number; y: string; z: boolean }; + b221: { p: string[]; q: Record }; + c221: { nested: { deep: { deeper: { deepest: string } } } }; + d221: number; + e221: string; + f221: boolean; + g221: null; + h221: undefined; + i221: bigint; + j221: symbol; +} + +type PartialBig221 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten221 = T extends Array ? Flatten221 : T; +type Nested221 = number[][][][][][][][][][]; +type Flat221 = Flatten221; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly221 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly221 : T[K]; +}; +type DeepRequired221 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired221 : T[K]; +}; +type FR221 = DeepReadonly221>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion221 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha221 = Extract; +type ExcludeZulu221 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA221 { width: number; height: number; depth: number } +interface ShapeB221 { color: string; opacity: number; blend: string } +interface ShapeC221 { x: number; y: number; z: number; w: number } +interface ShapeD221 { label: string; title: string; summary: string } + +type Combined221 = ShapeA221 & ShapeB221 & ShapeC221 & ShapeD221; +type OptionalAll221 = { [K in keyof Combined221]?: Combined221[K] }; +type RequiredAll221 = { [K in keyof Combined221]-?: Combined221[K] }; +type ReadonlyAll221 = { readonly [K in keyof Combined221]: Combined221[K] }; +type NullableAll221 = { [K in keyof Combined221]: Combined221[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString221 = T extends string ? true : false; +type IsNumber221 = T extends number ? true : false; +type TypeName221 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames221 = { + [K in keyof BigRecord221]: TypeName221; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb221 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource221 = "user" | "post" | "comment" | "tag" | "category"; +type Action221 = `${Verb221}_${Resource221}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise221 = T extends Promise ? UnwrapPromise221 : T; +type UnwrapArray221 = T extends (infer U)[] ? UnwrapArray221 : T; +type Head221 = T extends [infer H, ...infer _] ? H : never; +type Tail221 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation221 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation221>] + : never; + +type SmallUnion221 = "a" | "b" | "c" | "d"; +type AllPerms221 = Permutation221; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig221, + Flat221, + FR221, + BigUnion221, + ExtractAlpha221, + ExcludeZulu221, + OptionalAll221, + RequiredAll221, + ReadonlyAll221, + NullableAll221, + TypeNames221, + Action221, + AllPerms221, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts new file mode 100644 index 00000000..c34bea6a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-22 (seed 222) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord222 { + a222: { x: number; y: string; z: boolean }; + b222: { p: string[]; q: Record }; + c222: { nested: { deep: { deeper: { deepest: string } } } }; + d222: number; + e222: string; + f222: boolean; + g222: null; + h222: undefined; + i222: bigint; + j222: symbol; +} + +type PartialBig222 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten222 = T extends Array ? Flatten222 : T; +type Nested222 = number[][][][][][][][][][]; +type Flat222 = Flatten222; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly222 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly222 : T[K]; +}; +type DeepRequired222 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired222 : T[K]; +}; +type FR222 = DeepReadonly222>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion222 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha222 = Extract; +type ExcludeZulu222 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA222 { width: number; height: number; depth: number } +interface ShapeB222 { color: string; opacity: number; blend: string } +interface ShapeC222 { x: number; y: number; z: number; w: number } +interface ShapeD222 { label: string; title: string; summary: string } + +type Combined222 = ShapeA222 & ShapeB222 & ShapeC222 & ShapeD222; +type OptionalAll222 = { [K in keyof Combined222]?: Combined222[K] }; +type RequiredAll222 = { [K in keyof Combined222]-?: Combined222[K] }; +type ReadonlyAll222 = { readonly [K in keyof Combined222]: Combined222[K] }; +type NullableAll222 = { [K in keyof Combined222]: Combined222[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString222 = T extends string ? true : false; +type IsNumber222 = T extends number ? true : false; +type TypeName222 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames222 = { + [K in keyof BigRecord222]: TypeName222; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb222 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource222 = "user" | "post" | "comment" | "tag" | "category"; +type Action222 = `${Verb222}_${Resource222}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise222 = T extends Promise ? UnwrapPromise222 : T; +type UnwrapArray222 = T extends (infer U)[] ? UnwrapArray222 : T; +type Head222 = T extends [infer H, ...infer _] ? H : never; +type Tail222 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation222 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation222>] + : never; + +type SmallUnion222 = "a" | "b" | "c" | "d"; +type AllPerms222 = Permutation222; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig222, + Flat222, + FR222, + BigUnion222, + ExtractAlpha222, + ExcludeZulu222, + OptionalAll222, + RequiredAll222, + ReadonlyAll222, + NullableAll222, + TypeNames222, + Action222, + AllPerms222, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts new file mode 100644 index 00000000..a37c054a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-23 (seed 223) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord223 { + a223: { x: number; y: string; z: boolean }; + b223: { p: string[]; q: Record }; + c223: { nested: { deep: { deeper: { deepest: string } } } }; + d223: number; + e223: string; + f223: boolean; + g223: null; + h223: undefined; + i223: bigint; + j223: symbol; +} + +type PartialBig223 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten223 = T extends Array ? Flatten223 : T; +type Nested223 = number[][][][][][][][][][]; +type Flat223 = Flatten223; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly223 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly223 : T[K]; +}; +type DeepRequired223 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired223 : T[K]; +}; +type FR223 = DeepReadonly223>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion223 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha223 = Extract; +type ExcludeZulu223 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA223 { width: number; height: number; depth: number } +interface ShapeB223 { color: string; opacity: number; blend: string } +interface ShapeC223 { x: number; y: number; z: number; w: number } +interface ShapeD223 { label: string; title: string; summary: string } + +type Combined223 = ShapeA223 & ShapeB223 & ShapeC223 & ShapeD223; +type OptionalAll223 = { [K in keyof Combined223]?: Combined223[K] }; +type RequiredAll223 = { [K in keyof Combined223]-?: Combined223[K] }; +type ReadonlyAll223 = { readonly [K in keyof Combined223]: Combined223[K] }; +type NullableAll223 = { [K in keyof Combined223]: Combined223[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString223 = T extends string ? true : false; +type IsNumber223 = T extends number ? true : false; +type TypeName223 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames223 = { + [K in keyof BigRecord223]: TypeName223; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb223 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource223 = "user" | "post" | "comment" | "tag" | "category"; +type Action223 = `${Verb223}_${Resource223}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise223 = T extends Promise ? UnwrapPromise223 : T; +type UnwrapArray223 = T extends (infer U)[] ? UnwrapArray223 : T; +type Head223 = T extends [infer H, ...infer _] ? H : never; +type Tail223 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation223 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation223>] + : never; + +type SmallUnion223 = "a" | "b" | "c" | "d"; +type AllPerms223 = Permutation223; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig223, + Flat223, + FR223, + BigUnion223, + ExtractAlpha223, + ExcludeZulu223, + OptionalAll223, + RequiredAll223, + ReadonlyAll223, + NullableAll223, + TypeNames223, + Action223, + AllPerms223, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts new file mode 100644 index 00000000..e029ffbd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-24 (seed 224) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord224 { + a224: { x: number; y: string; z: boolean }; + b224: { p: string[]; q: Record }; + c224: { nested: { deep: { deeper: { deepest: string } } } }; + d224: number; + e224: string; + f224: boolean; + g224: null; + h224: undefined; + i224: bigint; + j224: symbol; +} + +type PartialBig224 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten224 = T extends Array ? Flatten224 : T; +type Nested224 = number[][][][][][][][][][]; +type Flat224 = Flatten224; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly224 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly224 : T[K]; +}; +type DeepRequired224 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired224 : T[K]; +}; +type FR224 = DeepReadonly224>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion224 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha224 = Extract; +type ExcludeZulu224 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA224 { width: number; height: number; depth: number } +interface ShapeB224 { color: string; opacity: number; blend: string } +interface ShapeC224 { x: number; y: number; z: number; w: number } +interface ShapeD224 { label: string; title: string; summary: string } + +type Combined224 = ShapeA224 & ShapeB224 & ShapeC224 & ShapeD224; +type OptionalAll224 = { [K in keyof Combined224]?: Combined224[K] }; +type RequiredAll224 = { [K in keyof Combined224]-?: Combined224[K] }; +type ReadonlyAll224 = { readonly [K in keyof Combined224]: Combined224[K] }; +type NullableAll224 = { [K in keyof Combined224]: Combined224[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString224 = T extends string ? true : false; +type IsNumber224 = T extends number ? true : false; +type TypeName224 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames224 = { + [K in keyof BigRecord224]: TypeName224; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb224 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource224 = "user" | "post" | "comment" | "tag" | "category"; +type Action224 = `${Verb224}_${Resource224}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise224 = T extends Promise ? UnwrapPromise224 : T; +type UnwrapArray224 = T extends (infer U)[] ? UnwrapArray224 : T; +type Head224 = T extends [infer H, ...infer _] ? H : never; +type Tail224 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation224 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation224>] + : never; + +type SmallUnion224 = "a" | "b" | "c" | "d"; +type AllPerms224 = Permutation224; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig224, + Flat224, + FR224, + BigUnion224, + ExtractAlpha224, + ExcludeZulu224, + OptionalAll224, + RequiredAll224, + ReadonlyAll224, + NullableAll224, + TypeNames224, + Action224, + AllPerms224, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts new file mode 100644 index 00000000..90a47d2c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-25 (seed 225) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord225 { + a225: { x: number; y: string; z: boolean }; + b225: { p: string[]; q: Record }; + c225: { nested: { deep: { deeper: { deepest: string } } } }; + d225: number; + e225: string; + f225: boolean; + g225: null; + h225: undefined; + i225: bigint; + j225: symbol; +} + +type PartialBig225 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten225 = T extends Array ? Flatten225 : T; +type Nested225 = number[][][][][][][][][][]; +type Flat225 = Flatten225; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly225 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly225 : T[K]; +}; +type DeepRequired225 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired225 : T[K]; +}; +type FR225 = DeepReadonly225>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion225 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha225 = Extract; +type ExcludeZulu225 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA225 { width: number; height: number; depth: number } +interface ShapeB225 { color: string; opacity: number; blend: string } +interface ShapeC225 { x: number; y: number; z: number; w: number } +interface ShapeD225 { label: string; title: string; summary: string } + +type Combined225 = ShapeA225 & ShapeB225 & ShapeC225 & ShapeD225; +type OptionalAll225 = { [K in keyof Combined225]?: Combined225[K] }; +type RequiredAll225 = { [K in keyof Combined225]-?: Combined225[K] }; +type ReadonlyAll225 = { readonly [K in keyof Combined225]: Combined225[K] }; +type NullableAll225 = { [K in keyof Combined225]: Combined225[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString225 = T extends string ? true : false; +type IsNumber225 = T extends number ? true : false; +type TypeName225 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames225 = { + [K in keyof BigRecord225]: TypeName225; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb225 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource225 = "user" | "post" | "comment" | "tag" | "category"; +type Action225 = `${Verb225}_${Resource225}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise225 = T extends Promise ? UnwrapPromise225 : T; +type UnwrapArray225 = T extends (infer U)[] ? UnwrapArray225 : T; +type Head225 = T extends [infer H, ...infer _] ? H : never; +type Tail225 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation225 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation225>] + : never; + +type SmallUnion225 = "a" | "b" | "c" | "d"; +type AllPerms225 = Permutation225; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig225, + Flat225, + FR225, + BigUnion225, + ExtractAlpha225, + ExcludeZulu225, + OptionalAll225, + RequiredAll225, + ReadonlyAll225, + NullableAll225, + TypeNames225, + Action225, + AllPerms225, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts new file mode 100644 index 00000000..294ae423 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-26 (seed 226) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord226 { + a226: { x: number; y: string; z: boolean }; + b226: { p: string[]; q: Record }; + c226: { nested: { deep: { deeper: { deepest: string } } } }; + d226: number; + e226: string; + f226: boolean; + g226: null; + h226: undefined; + i226: bigint; + j226: symbol; +} + +type PartialBig226 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten226 = T extends Array ? Flatten226 : T; +type Nested226 = number[][][][][][][][][][]; +type Flat226 = Flatten226; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly226 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly226 : T[K]; +}; +type DeepRequired226 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired226 : T[K]; +}; +type FR226 = DeepReadonly226>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion226 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha226 = Extract; +type ExcludeZulu226 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA226 { width: number; height: number; depth: number } +interface ShapeB226 { color: string; opacity: number; blend: string } +interface ShapeC226 { x: number; y: number; z: number; w: number } +interface ShapeD226 { label: string; title: string; summary: string } + +type Combined226 = ShapeA226 & ShapeB226 & ShapeC226 & ShapeD226; +type OptionalAll226 = { [K in keyof Combined226]?: Combined226[K] }; +type RequiredAll226 = { [K in keyof Combined226]-?: Combined226[K] }; +type ReadonlyAll226 = { readonly [K in keyof Combined226]: Combined226[K] }; +type NullableAll226 = { [K in keyof Combined226]: Combined226[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString226 = T extends string ? true : false; +type IsNumber226 = T extends number ? true : false; +type TypeName226 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames226 = { + [K in keyof BigRecord226]: TypeName226; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb226 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource226 = "user" | "post" | "comment" | "tag" | "category"; +type Action226 = `${Verb226}_${Resource226}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise226 = T extends Promise ? UnwrapPromise226 : T; +type UnwrapArray226 = T extends (infer U)[] ? UnwrapArray226 : T; +type Head226 = T extends [infer H, ...infer _] ? H : never; +type Tail226 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation226 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation226>] + : never; + +type SmallUnion226 = "a" | "b" | "c" | "d"; +type AllPerms226 = Permutation226; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig226, + Flat226, + FR226, + BigUnion226, + ExtractAlpha226, + ExcludeZulu226, + OptionalAll226, + RequiredAll226, + ReadonlyAll226, + NullableAll226, + TypeNames226, + Action226, + AllPerms226, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts new file mode 100644 index 00000000..be2870aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-27 (seed 227) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord227 { + a227: { x: number; y: string; z: boolean }; + b227: { p: string[]; q: Record }; + c227: { nested: { deep: { deeper: { deepest: string } } } }; + d227: number; + e227: string; + f227: boolean; + g227: null; + h227: undefined; + i227: bigint; + j227: symbol; +} + +type PartialBig227 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten227 = T extends Array ? Flatten227 : T; +type Nested227 = number[][][][][][][][][][]; +type Flat227 = Flatten227; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly227 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly227 : T[K]; +}; +type DeepRequired227 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired227 : T[K]; +}; +type FR227 = DeepReadonly227>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion227 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha227 = Extract; +type ExcludeZulu227 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA227 { width: number; height: number; depth: number } +interface ShapeB227 { color: string; opacity: number; blend: string } +interface ShapeC227 { x: number; y: number; z: number; w: number } +interface ShapeD227 { label: string; title: string; summary: string } + +type Combined227 = ShapeA227 & ShapeB227 & ShapeC227 & ShapeD227; +type OptionalAll227 = { [K in keyof Combined227]?: Combined227[K] }; +type RequiredAll227 = { [K in keyof Combined227]-?: Combined227[K] }; +type ReadonlyAll227 = { readonly [K in keyof Combined227]: Combined227[K] }; +type NullableAll227 = { [K in keyof Combined227]: Combined227[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString227 = T extends string ? true : false; +type IsNumber227 = T extends number ? true : false; +type TypeName227 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames227 = { + [K in keyof BigRecord227]: TypeName227; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb227 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource227 = "user" | "post" | "comment" | "tag" | "category"; +type Action227 = `${Verb227}_${Resource227}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise227 = T extends Promise ? UnwrapPromise227 : T; +type UnwrapArray227 = T extends (infer U)[] ? UnwrapArray227 : T; +type Head227 = T extends [infer H, ...infer _] ? H : never; +type Tail227 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation227 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation227>] + : never; + +type SmallUnion227 = "a" | "b" | "c" | "d"; +type AllPerms227 = Permutation227; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig227, + Flat227, + FR227, + BigUnion227, + ExtractAlpha227, + ExcludeZulu227, + OptionalAll227, + RequiredAll227, + ReadonlyAll227, + NullableAll227, + TypeNames227, + Action227, + AllPerms227, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts new file mode 100644 index 00000000..8a80955b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-28 (seed 228) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord228 { + a228: { x: number; y: string; z: boolean }; + b228: { p: string[]; q: Record }; + c228: { nested: { deep: { deeper: { deepest: string } } } }; + d228: number; + e228: string; + f228: boolean; + g228: null; + h228: undefined; + i228: bigint; + j228: symbol; +} + +type PartialBig228 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten228 = T extends Array ? Flatten228 : T; +type Nested228 = number[][][][][][][][][][]; +type Flat228 = Flatten228; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly228 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly228 : T[K]; +}; +type DeepRequired228 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired228 : T[K]; +}; +type FR228 = DeepReadonly228>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion228 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha228 = Extract; +type ExcludeZulu228 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA228 { width: number; height: number; depth: number } +interface ShapeB228 { color: string; opacity: number; blend: string } +interface ShapeC228 { x: number; y: number; z: number; w: number } +interface ShapeD228 { label: string; title: string; summary: string } + +type Combined228 = ShapeA228 & ShapeB228 & ShapeC228 & ShapeD228; +type OptionalAll228 = { [K in keyof Combined228]?: Combined228[K] }; +type RequiredAll228 = { [K in keyof Combined228]-?: Combined228[K] }; +type ReadonlyAll228 = { readonly [K in keyof Combined228]: Combined228[K] }; +type NullableAll228 = { [K in keyof Combined228]: Combined228[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString228 = T extends string ? true : false; +type IsNumber228 = T extends number ? true : false; +type TypeName228 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames228 = { + [K in keyof BigRecord228]: TypeName228; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb228 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource228 = "user" | "post" | "comment" | "tag" | "category"; +type Action228 = `${Verb228}_${Resource228}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise228 = T extends Promise ? UnwrapPromise228 : T; +type UnwrapArray228 = T extends (infer U)[] ? UnwrapArray228 : T; +type Head228 = T extends [infer H, ...infer _] ? H : never; +type Tail228 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation228 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation228>] + : never; + +type SmallUnion228 = "a" | "b" | "c" | "d"; +type AllPerms228 = Permutation228; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig228, + Flat228, + FR228, + BigUnion228, + ExtractAlpha228, + ExcludeZulu228, + OptionalAll228, + RequiredAll228, + ReadonlyAll228, + NullableAll228, + TypeNames228, + Action228, + AllPerms228, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts new file mode 100644 index 00000000..fe0f4203 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-29 (seed 229) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord229 { + a229: { x: number; y: string; z: boolean }; + b229: { p: string[]; q: Record }; + c229: { nested: { deep: { deeper: { deepest: string } } } }; + d229: number; + e229: string; + f229: boolean; + g229: null; + h229: undefined; + i229: bigint; + j229: symbol; +} + +type PartialBig229 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten229 = T extends Array ? Flatten229 : T; +type Nested229 = number[][][][][][][][][][]; +type Flat229 = Flatten229; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly229 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly229 : T[K]; +}; +type DeepRequired229 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired229 : T[K]; +}; +type FR229 = DeepReadonly229>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion229 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha229 = Extract; +type ExcludeZulu229 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA229 { width: number; height: number; depth: number } +interface ShapeB229 { color: string; opacity: number; blend: string } +interface ShapeC229 { x: number; y: number; z: number; w: number } +interface ShapeD229 { label: string; title: string; summary: string } + +type Combined229 = ShapeA229 & ShapeB229 & ShapeC229 & ShapeD229; +type OptionalAll229 = { [K in keyof Combined229]?: Combined229[K] }; +type RequiredAll229 = { [K in keyof Combined229]-?: Combined229[K] }; +type ReadonlyAll229 = { readonly [K in keyof Combined229]: Combined229[K] }; +type NullableAll229 = { [K in keyof Combined229]: Combined229[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString229 = T extends string ? true : false; +type IsNumber229 = T extends number ? true : false; +type TypeName229 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames229 = { + [K in keyof BigRecord229]: TypeName229; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb229 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource229 = "user" | "post" | "comment" | "tag" | "category"; +type Action229 = `${Verb229}_${Resource229}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise229 = T extends Promise ? UnwrapPromise229 : T; +type UnwrapArray229 = T extends (infer U)[] ? UnwrapArray229 : T; +type Head229 = T extends [infer H, ...infer _] ? H : never; +type Tail229 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation229 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation229>] + : never; + +type SmallUnion229 = "a" | "b" | "c" | "d"; +type AllPerms229 = Permutation229; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig229, + Flat229, + FR229, + BigUnion229, + ExtractAlpha229, + ExcludeZulu229, + OptionalAll229, + RequiredAll229, + ReadonlyAll229, + NullableAll229, + TypeNames229, + Action229, + AllPerms229, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts new file mode 100644 index 00000000..15bf5470 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-30 (seed 230) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord230 { + a230: { x: number; y: string; z: boolean }; + b230: { p: string[]; q: Record }; + c230: { nested: { deep: { deeper: { deepest: string } } } }; + d230: number; + e230: string; + f230: boolean; + g230: null; + h230: undefined; + i230: bigint; + j230: symbol; +} + +type PartialBig230 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten230 = T extends Array ? Flatten230 : T; +type Nested230 = number[][][][][][][][][][]; +type Flat230 = Flatten230; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly230 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly230 : T[K]; +}; +type DeepRequired230 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired230 : T[K]; +}; +type FR230 = DeepReadonly230>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion230 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha230 = Extract; +type ExcludeZulu230 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA230 { width: number; height: number; depth: number } +interface ShapeB230 { color: string; opacity: number; blend: string } +interface ShapeC230 { x: number; y: number; z: number; w: number } +interface ShapeD230 { label: string; title: string; summary: string } + +type Combined230 = ShapeA230 & ShapeB230 & ShapeC230 & ShapeD230; +type OptionalAll230 = { [K in keyof Combined230]?: Combined230[K] }; +type RequiredAll230 = { [K in keyof Combined230]-?: Combined230[K] }; +type ReadonlyAll230 = { readonly [K in keyof Combined230]: Combined230[K] }; +type NullableAll230 = { [K in keyof Combined230]: Combined230[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString230 = T extends string ? true : false; +type IsNumber230 = T extends number ? true : false; +type TypeName230 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames230 = { + [K in keyof BigRecord230]: TypeName230; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb230 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource230 = "user" | "post" | "comment" | "tag" | "category"; +type Action230 = `${Verb230}_${Resource230}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise230 = T extends Promise ? UnwrapPromise230 : T; +type UnwrapArray230 = T extends (infer U)[] ? UnwrapArray230 : T; +type Head230 = T extends [infer H, ...infer _] ? H : never; +type Tail230 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation230 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation230>] + : never; + +type SmallUnion230 = "a" | "b" | "c" | "d"; +type AllPerms230 = Permutation230; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig230, + Flat230, + FR230, + BigUnion230, + ExtractAlpha230, + ExcludeZulu230, + OptionalAll230, + RequiredAll230, + ReadonlyAll230, + NullableAll230, + TypeNames230, + Action230, + AllPerms230, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts new file mode 100644 index 00000000..3064f603 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-31 (seed 231) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord231 { + a231: { x: number; y: string; z: boolean }; + b231: { p: string[]; q: Record }; + c231: { nested: { deep: { deeper: { deepest: string } } } }; + d231: number; + e231: string; + f231: boolean; + g231: null; + h231: undefined; + i231: bigint; + j231: symbol; +} + +type PartialBig231 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten231 = T extends Array ? Flatten231 : T; +type Nested231 = number[][][][][][][][][][]; +type Flat231 = Flatten231; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly231 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly231 : T[K]; +}; +type DeepRequired231 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired231 : T[K]; +}; +type FR231 = DeepReadonly231>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion231 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha231 = Extract; +type ExcludeZulu231 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA231 { width: number; height: number; depth: number } +interface ShapeB231 { color: string; opacity: number; blend: string } +interface ShapeC231 { x: number; y: number; z: number; w: number } +interface ShapeD231 { label: string; title: string; summary: string } + +type Combined231 = ShapeA231 & ShapeB231 & ShapeC231 & ShapeD231; +type OptionalAll231 = { [K in keyof Combined231]?: Combined231[K] }; +type RequiredAll231 = { [K in keyof Combined231]-?: Combined231[K] }; +type ReadonlyAll231 = { readonly [K in keyof Combined231]: Combined231[K] }; +type NullableAll231 = { [K in keyof Combined231]: Combined231[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString231 = T extends string ? true : false; +type IsNumber231 = T extends number ? true : false; +type TypeName231 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames231 = { + [K in keyof BigRecord231]: TypeName231; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb231 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource231 = "user" | "post" | "comment" | "tag" | "category"; +type Action231 = `${Verb231}_${Resource231}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise231 = T extends Promise ? UnwrapPromise231 : T; +type UnwrapArray231 = T extends (infer U)[] ? UnwrapArray231 : T; +type Head231 = T extends [infer H, ...infer _] ? H : never; +type Tail231 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation231 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation231>] + : never; + +type SmallUnion231 = "a" | "b" | "c" | "d"; +type AllPerms231 = Permutation231; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig231, + Flat231, + FR231, + BigUnion231, + ExtractAlpha231, + ExcludeZulu231, + OptionalAll231, + RequiredAll231, + ReadonlyAll231, + NullableAll231, + TypeNames231, + Action231, + AllPerms231, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts new file mode 100644 index 00000000..2700fd4b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-32 (seed 232) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord232 { + a232: { x: number; y: string; z: boolean }; + b232: { p: string[]; q: Record }; + c232: { nested: { deep: { deeper: { deepest: string } } } }; + d232: number; + e232: string; + f232: boolean; + g232: null; + h232: undefined; + i232: bigint; + j232: symbol; +} + +type PartialBig232 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten232 = T extends Array ? Flatten232 : T; +type Nested232 = number[][][][][][][][][][]; +type Flat232 = Flatten232; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly232 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly232 : T[K]; +}; +type DeepRequired232 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired232 : T[K]; +}; +type FR232 = DeepReadonly232>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion232 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha232 = Extract; +type ExcludeZulu232 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA232 { width: number; height: number; depth: number } +interface ShapeB232 { color: string; opacity: number; blend: string } +interface ShapeC232 { x: number; y: number; z: number; w: number } +interface ShapeD232 { label: string; title: string; summary: string } + +type Combined232 = ShapeA232 & ShapeB232 & ShapeC232 & ShapeD232; +type OptionalAll232 = { [K in keyof Combined232]?: Combined232[K] }; +type RequiredAll232 = { [K in keyof Combined232]-?: Combined232[K] }; +type ReadonlyAll232 = { readonly [K in keyof Combined232]: Combined232[K] }; +type NullableAll232 = { [K in keyof Combined232]: Combined232[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString232 = T extends string ? true : false; +type IsNumber232 = T extends number ? true : false; +type TypeName232 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames232 = { + [K in keyof BigRecord232]: TypeName232; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb232 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource232 = "user" | "post" | "comment" | "tag" | "category"; +type Action232 = `${Verb232}_${Resource232}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise232 = T extends Promise ? UnwrapPromise232 : T; +type UnwrapArray232 = T extends (infer U)[] ? UnwrapArray232 : T; +type Head232 = T extends [infer H, ...infer _] ? H : never; +type Tail232 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation232 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation232>] + : never; + +type SmallUnion232 = "a" | "b" | "c" | "d"; +type AllPerms232 = Permutation232; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig232, + Flat232, + FR232, + BigUnion232, + ExtractAlpha232, + ExcludeZulu232, + OptionalAll232, + RequiredAll232, + ReadonlyAll232, + NullableAll232, + TypeNames232, + Action232, + AllPerms232, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts new file mode 100644 index 00000000..bf1cf79d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-33 (seed 233) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord233 { + a233: { x: number; y: string; z: boolean }; + b233: { p: string[]; q: Record }; + c233: { nested: { deep: { deeper: { deepest: string } } } }; + d233: number; + e233: string; + f233: boolean; + g233: null; + h233: undefined; + i233: bigint; + j233: symbol; +} + +type PartialBig233 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten233 = T extends Array ? Flatten233 : T; +type Nested233 = number[][][][][][][][][][]; +type Flat233 = Flatten233; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly233 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly233 : T[K]; +}; +type DeepRequired233 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired233 : T[K]; +}; +type FR233 = DeepReadonly233>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion233 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha233 = Extract; +type ExcludeZulu233 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA233 { width: number; height: number; depth: number } +interface ShapeB233 { color: string; opacity: number; blend: string } +interface ShapeC233 { x: number; y: number; z: number; w: number } +interface ShapeD233 { label: string; title: string; summary: string } + +type Combined233 = ShapeA233 & ShapeB233 & ShapeC233 & ShapeD233; +type OptionalAll233 = { [K in keyof Combined233]?: Combined233[K] }; +type RequiredAll233 = { [K in keyof Combined233]-?: Combined233[K] }; +type ReadonlyAll233 = { readonly [K in keyof Combined233]: Combined233[K] }; +type NullableAll233 = { [K in keyof Combined233]: Combined233[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString233 = T extends string ? true : false; +type IsNumber233 = T extends number ? true : false; +type TypeName233 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames233 = { + [K in keyof BigRecord233]: TypeName233; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb233 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource233 = "user" | "post" | "comment" | "tag" | "category"; +type Action233 = `${Verb233}_${Resource233}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise233 = T extends Promise ? UnwrapPromise233 : T; +type UnwrapArray233 = T extends (infer U)[] ? UnwrapArray233 : T; +type Head233 = T extends [infer H, ...infer _] ? H : never; +type Tail233 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation233 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation233>] + : never; + +type SmallUnion233 = "a" | "b" | "c" | "d"; +type AllPerms233 = Permutation233; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig233, + Flat233, + FR233, + BigUnion233, + ExtractAlpha233, + ExcludeZulu233, + OptionalAll233, + RequiredAll233, + ReadonlyAll233, + NullableAll233, + TypeNames233, + Action233, + AllPerms233, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts new file mode 100644 index 00000000..3de600ae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-34 (seed 234) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord234 { + a234: { x: number; y: string; z: boolean }; + b234: { p: string[]; q: Record }; + c234: { nested: { deep: { deeper: { deepest: string } } } }; + d234: number; + e234: string; + f234: boolean; + g234: null; + h234: undefined; + i234: bigint; + j234: symbol; +} + +type PartialBig234 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten234 = T extends Array ? Flatten234 : T; +type Nested234 = number[][][][][][][][][][]; +type Flat234 = Flatten234; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly234 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly234 : T[K]; +}; +type DeepRequired234 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired234 : T[K]; +}; +type FR234 = DeepReadonly234>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion234 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha234 = Extract; +type ExcludeZulu234 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA234 { width: number; height: number; depth: number } +interface ShapeB234 { color: string; opacity: number; blend: string } +interface ShapeC234 { x: number; y: number; z: number; w: number } +interface ShapeD234 { label: string; title: string; summary: string } + +type Combined234 = ShapeA234 & ShapeB234 & ShapeC234 & ShapeD234; +type OptionalAll234 = { [K in keyof Combined234]?: Combined234[K] }; +type RequiredAll234 = { [K in keyof Combined234]-?: Combined234[K] }; +type ReadonlyAll234 = { readonly [K in keyof Combined234]: Combined234[K] }; +type NullableAll234 = { [K in keyof Combined234]: Combined234[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString234 = T extends string ? true : false; +type IsNumber234 = T extends number ? true : false; +type TypeName234 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames234 = { + [K in keyof BigRecord234]: TypeName234; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb234 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource234 = "user" | "post" | "comment" | "tag" | "category"; +type Action234 = `${Verb234}_${Resource234}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise234 = T extends Promise ? UnwrapPromise234 : T; +type UnwrapArray234 = T extends (infer U)[] ? UnwrapArray234 : T; +type Head234 = T extends [infer H, ...infer _] ? H : never; +type Tail234 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation234 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation234>] + : never; + +type SmallUnion234 = "a" | "b" | "c" | "d"; +type AllPerms234 = Permutation234; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig234, + Flat234, + FR234, + BigUnion234, + ExtractAlpha234, + ExcludeZulu234, + OptionalAll234, + RequiredAll234, + ReadonlyAll234, + NullableAll234, + TypeNames234, + Action234, + AllPerms234, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts new file mode 100644 index 00000000..1fe8c82c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-35 (seed 235) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord235 { + a235: { x: number; y: string; z: boolean }; + b235: { p: string[]; q: Record }; + c235: { nested: { deep: { deeper: { deepest: string } } } }; + d235: number; + e235: string; + f235: boolean; + g235: null; + h235: undefined; + i235: bigint; + j235: symbol; +} + +type PartialBig235 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten235 = T extends Array ? Flatten235 : T; +type Nested235 = number[][][][][][][][][][]; +type Flat235 = Flatten235; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly235 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly235 : T[K]; +}; +type DeepRequired235 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired235 : T[K]; +}; +type FR235 = DeepReadonly235>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion235 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha235 = Extract; +type ExcludeZulu235 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA235 { width: number; height: number; depth: number } +interface ShapeB235 { color: string; opacity: number; blend: string } +interface ShapeC235 { x: number; y: number; z: number; w: number } +interface ShapeD235 { label: string; title: string; summary: string } + +type Combined235 = ShapeA235 & ShapeB235 & ShapeC235 & ShapeD235; +type OptionalAll235 = { [K in keyof Combined235]?: Combined235[K] }; +type RequiredAll235 = { [K in keyof Combined235]-?: Combined235[K] }; +type ReadonlyAll235 = { readonly [K in keyof Combined235]: Combined235[K] }; +type NullableAll235 = { [K in keyof Combined235]: Combined235[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString235 = T extends string ? true : false; +type IsNumber235 = T extends number ? true : false; +type TypeName235 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames235 = { + [K in keyof BigRecord235]: TypeName235; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb235 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource235 = "user" | "post" | "comment" | "tag" | "category"; +type Action235 = `${Verb235}_${Resource235}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise235 = T extends Promise ? UnwrapPromise235 : T; +type UnwrapArray235 = T extends (infer U)[] ? UnwrapArray235 : T; +type Head235 = T extends [infer H, ...infer _] ? H : never; +type Tail235 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation235 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation235>] + : never; + +type SmallUnion235 = "a" | "b" | "c" | "d"; +type AllPerms235 = Permutation235; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig235, + Flat235, + FR235, + BigUnion235, + ExtractAlpha235, + ExcludeZulu235, + OptionalAll235, + RequiredAll235, + ReadonlyAll235, + NullableAll235, + TypeNames235, + Action235, + AllPerms235, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts new file mode 100644 index 00000000..936a3248 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-36 (seed 236) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord236 { + a236: { x: number; y: string; z: boolean }; + b236: { p: string[]; q: Record }; + c236: { nested: { deep: { deeper: { deepest: string } } } }; + d236: number; + e236: string; + f236: boolean; + g236: null; + h236: undefined; + i236: bigint; + j236: symbol; +} + +type PartialBig236 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten236 = T extends Array ? Flatten236 : T; +type Nested236 = number[][][][][][][][][][]; +type Flat236 = Flatten236; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly236 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly236 : T[K]; +}; +type DeepRequired236 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired236 : T[K]; +}; +type FR236 = DeepReadonly236>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion236 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha236 = Extract; +type ExcludeZulu236 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA236 { width: number; height: number; depth: number } +interface ShapeB236 { color: string; opacity: number; blend: string } +interface ShapeC236 { x: number; y: number; z: number; w: number } +interface ShapeD236 { label: string; title: string; summary: string } + +type Combined236 = ShapeA236 & ShapeB236 & ShapeC236 & ShapeD236; +type OptionalAll236 = { [K in keyof Combined236]?: Combined236[K] }; +type RequiredAll236 = { [K in keyof Combined236]-?: Combined236[K] }; +type ReadonlyAll236 = { readonly [K in keyof Combined236]: Combined236[K] }; +type NullableAll236 = { [K in keyof Combined236]: Combined236[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString236 = T extends string ? true : false; +type IsNumber236 = T extends number ? true : false; +type TypeName236 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames236 = { + [K in keyof BigRecord236]: TypeName236; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb236 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource236 = "user" | "post" | "comment" | "tag" | "category"; +type Action236 = `${Verb236}_${Resource236}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise236 = T extends Promise ? UnwrapPromise236 : T; +type UnwrapArray236 = T extends (infer U)[] ? UnwrapArray236 : T; +type Head236 = T extends [infer H, ...infer _] ? H : never; +type Tail236 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation236 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation236>] + : never; + +type SmallUnion236 = "a" | "b" | "c" | "d"; +type AllPerms236 = Permutation236; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig236, + Flat236, + FR236, + BigUnion236, + ExtractAlpha236, + ExcludeZulu236, + OptionalAll236, + RequiredAll236, + ReadonlyAll236, + NullableAll236, + TypeNames236, + Action236, + AllPerms236, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts new file mode 100644 index 00000000..2c84ddc9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-37 (seed 237) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord237 { + a237: { x: number; y: string; z: boolean }; + b237: { p: string[]; q: Record }; + c237: { nested: { deep: { deeper: { deepest: string } } } }; + d237: number; + e237: string; + f237: boolean; + g237: null; + h237: undefined; + i237: bigint; + j237: symbol; +} + +type PartialBig237 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten237 = T extends Array ? Flatten237 : T; +type Nested237 = number[][][][][][][][][][]; +type Flat237 = Flatten237; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly237 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly237 : T[K]; +}; +type DeepRequired237 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired237 : T[K]; +}; +type FR237 = DeepReadonly237>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion237 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha237 = Extract; +type ExcludeZulu237 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA237 { width: number; height: number; depth: number } +interface ShapeB237 { color: string; opacity: number; blend: string } +interface ShapeC237 { x: number; y: number; z: number; w: number } +interface ShapeD237 { label: string; title: string; summary: string } + +type Combined237 = ShapeA237 & ShapeB237 & ShapeC237 & ShapeD237; +type OptionalAll237 = { [K in keyof Combined237]?: Combined237[K] }; +type RequiredAll237 = { [K in keyof Combined237]-?: Combined237[K] }; +type ReadonlyAll237 = { readonly [K in keyof Combined237]: Combined237[K] }; +type NullableAll237 = { [K in keyof Combined237]: Combined237[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString237 = T extends string ? true : false; +type IsNumber237 = T extends number ? true : false; +type TypeName237 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames237 = { + [K in keyof BigRecord237]: TypeName237; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb237 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource237 = "user" | "post" | "comment" | "tag" | "category"; +type Action237 = `${Verb237}_${Resource237}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise237 = T extends Promise ? UnwrapPromise237 : T; +type UnwrapArray237 = T extends (infer U)[] ? UnwrapArray237 : T; +type Head237 = T extends [infer H, ...infer _] ? H : never; +type Tail237 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation237 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation237>] + : never; + +type SmallUnion237 = "a" | "b" | "c" | "d"; +type AllPerms237 = Permutation237; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig237, + Flat237, + FR237, + BigUnion237, + ExtractAlpha237, + ExcludeZulu237, + OptionalAll237, + RequiredAll237, + ReadonlyAll237, + NullableAll237, + TypeNames237, + Action237, + AllPerms237, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts new file mode 100644 index 00000000..ff813dae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-38 (seed 238) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord238 { + a238: { x: number; y: string; z: boolean }; + b238: { p: string[]; q: Record }; + c238: { nested: { deep: { deeper: { deepest: string } } } }; + d238: number; + e238: string; + f238: boolean; + g238: null; + h238: undefined; + i238: bigint; + j238: symbol; +} + +type PartialBig238 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten238 = T extends Array ? Flatten238 : T; +type Nested238 = number[][][][][][][][][][]; +type Flat238 = Flatten238; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly238 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly238 : T[K]; +}; +type DeepRequired238 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired238 : T[K]; +}; +type FR238 = DeepReadonly238>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion238 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha238 = Extract; +type ExcludeZulu238 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA238 { width: number; height: number; depth: number } +interface ShapeB238 { color: string; opacity: number; blend: string } +interface ShapeC238 { x: number; y: number; z: number; w: number } +interface ShapeD238 { label: string; title: string; summary: string } + +type Combined238 = ShapeA238 & ShapeB238 & ShapeC238 & ShapeD238; +type OptionalAll238 = { [K in keyof Combined238]?: Combined238[K] }; +type RequiredAll238 = { [K in keyof Combined238]-?: Combined238[K] }; +type ReadonlyAll238 = { readonly [K in keyof Combined238]: Combined238[K] }; +type NullableAll238 = { [K in keyof Combined238]: Combined238[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString238 = T extends string ? true : false; +type IsNumber238 = T extends number ? true : false; +type TypeName238 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames238 = { + [K in keyof BigRecord238]: TypeName238; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb238 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource238 = "user" | "post" | "comment" | "tag" | "category"; +type Action238 = `${Verb238}_${Resource238}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise238 = T extends Promise ? UnwrapPromise238 : T; +type UnwrapArray238 = T extends (infer U)[] ? UnwrapArray238 : T; +type Head238 = T extends [infer H, ...infer _] ? H : never; +type Tail238 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation238 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation238>] + : never; + +type SmallUnion238 = "a" | "b" | "c" | "d"; +type AllPerms238 = Permutation238; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig238, + Flat238, + FR238, + BigUnion238, + ExtractAlpha238, + ExcludeZulu238, + OptionalAll238, + RequiredAll238, + ReadonlyAll238, + NullableAll238, + TypeNames238, + Action238, + AllPerms238, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts new file mode 100644 index 00000000..8009ffde --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-39 (seed 239) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord239 { + a239: { x: number; y: string; z: boolean }; + b239: { p: string[]; q: Record }; + c239: { nested: { deep: { deeper: { deepest: string } } } }; + d239: number; + e239: string; + f239: boolean; + g239: null; + h239: undefined; + i239: bigint; + j239: symbol; +} + +type PartialBig239 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten239 = T extends Array ? Flatten239 : T; +type Nested239 = number[][][][][][][][][][]; +type Flat239 = Flatten239; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly239 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly239 : T[K]; +}; +type DeepRequired239 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired239 : T[K]; +}; +type FR239 = DeepReadonly239>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion239 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha239 = Extract; +type ExcludeZulu239 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA239 { width: number; height: number; depth: number } +interface ShapeB239 { color: string; opacity: number; blend: string } +interface ShapeC239 { x: number; y: number; z: number; w: number } +interface ShapeD239 { label: string; title: string; summary: string } + +type Combined239 = ShapeA239 & ShapeB239 & ShapeC239 & ShapeD239; +type OptionalAll239 = { [K in keyof Combined239]?: Combined239[K] }; +type RequiredAll239 = { [K in keyof Combined239]-?: Combined239[K] }; +type ReadonlyAll239 = { readonly [K in keyof Combined239]: Combined239[K] }; +type NullableAll239 = { [K in keyof Combined239]: Combined239[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString239 = T extends string ? true : false; +type IsNumber239 = T extends number ? true : false; +type TypeName239 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames239 = { + [K in keyof BigRecord239]: TypeName239; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb239 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource239 = "user" | "post" | "comment" | "tag" | "category"; +type Action239 = `${Verb239}_${Resource239}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise239 = T extends Promise ? UnwrapPromise239 : T; +type UnwrapArray239 = T extends (infer U)[] ? UnwrapArray239 : T; +type Head239 = T extends [infer H, ...infer _] ? H : never; +type Tail239 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation239 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation239>] + : never; + +type SmallUnion239 = "a" | "b" | "c" | "d"; +type AllPerms239 = Permutation239; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig239, + Flat239, + FR239, + BigUnion239, + ExtractAlpha239, + ExcludeZulu239, + OptionalAll239, + RequiredAll239, + ReadonlyAll239, + NullableAll239, + TypeNames239, + Action239, + AllPerms239, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts new file mode 100644 index 00000000..75a22e30 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-40 (seed 240) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord240 { + a240: { x: number; y: string; z: boolean }; + b240: { p: string[]; q: Record }; + c240: { nested: { deep: { deeper: { deepest: string } } } }; + d240: number; + e240: string; + f240: boolean; + g240: null; + h240: undefined; + i240: bigint; + j240: symbol; +} + +type PartialBig240 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten240 = T extends Array ? Flatten240 : T; +type Nested240 = number[][][][][][][][][][]; +type Flat240 = Flatten240; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly240 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly240 : T[K]; +}; +type DeepRequired240 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired240 : T[K]; +}; +type FR240 = DeepReadonly240>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion240 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha240 = Extract; +type ExcludeZulu240 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA240 { width: number; height: number; depth: number } +interface ShapeB240 { color: string; opacity: number; blend: string } +interface ShapeC240 { x: number; y: number; z: number; w: number } +interface ShapeD240 { label: string; title: string; summary: string } + +type Combined240 = ShapeA240 & ShapeB240 & ShapeC240 & ShapeD240; +type OptionalAll240 = { [K in keyof Combined240]?: Combined240[K] }; +type RequiredAll240 = { [K in keyof Combined240]-?: Combined240[K] }; +type ReadonlyAll240 = { readonly [K in keyof Combined240]: Combined240[K] }; +type NullableAll240 = { [K in keyof Combined240]: Combined240[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString240 = T extends string ? true : false; +type IsNumber240 = T extends number ? true : false; +type TypeName240 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames240 = { + [K in keyof BigRecord240]: TypeName240; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb240 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource240 = "user" | "post" | "comment" | "tag" | "category"; +type Action240 = `${Verb240}_${Resource240}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise240 = T extends Promise ? UnwrapPromise240 : T; +type UnwrapArray240 = T extends (infer U)[] ? UnwrapArray240 : T; +type Head240 = T extends [infer H, ...infer _] ? H : never; +type Tail240 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation240 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation240>] + : never; + +type SmallUnion240 = "a" | "b" | "c" | "d"; +type AllPerms240 = Permutation240; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig240, + Flat240, + FR240, + BigUnion240, + ExtractAlpha240, + ExcludeZulu240, + OptionalAll240, + RequiredAll240, + ReadonlyAll240, + NullableAll240, + TypeNames240, + Action240, + AllPerms240, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts new file mode 100644 index 00000000..51f33da3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-41 (seed 241) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord241 { + a241: { x: number; y: string; z: boolean }; + b241: { p: string[]; q: Record }; + c241: { nested: { deep: { deeper: { deepest: string } } } }; + d241: number; + e241: string; + f241: boolean; + g241: null; + h241: undefined; + i241: bigint; + j241: symbol; +} + +type PartialBig241 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten241 = T extends Array ? Flatten241 : T; +type Nested241 = number[][][][][][][][][][]; +type Flat241 = Flatten241; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly241 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly241 : T[K]; +}; +type DeepRequired241 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired241 : T[K]; +}; +type FR241 = DeepReadonly241>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion241 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha241 = Extract; +type ExcludeZulu241 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA241 { width: number; height: number; depth: number } +interface ShapeB241 { color: string; opacity: number; blend: string } +interface ShapeC241 { x: number; y: number; z: number; w: number } +interface ShapeD241 { label: string; title: string; summary: string } + +type Combined241 = ShapeA241 & ShapeB241 & ShapeC241 & ShapeD241; +type OptionalAll241 = { [K in keyof Combined241]?: Combined241[K] }; +type RequiredAll241 = { [K in keyof Combined241]-?: Combined241[K] }; +type ReadonlyAll241 = { readonly [K in keyof Combined241]: Combined241[K] }; +type NullableAll241 = { [K in keyof Combined241]: Combined241[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString241 = T extends string ? true : false; +type IsNumber241 = T extends number ? true : false; +type TypeName241 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames241 = { + [K in keyof BigRecord241]: TypeName241; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb241 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource241 = "user" | "post" | "comment" | "tag" | "category"; +type Action241 = `${Verb241}_${Resource241}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise241 = T extends Promise ? UnwrapPromise241 : T; +type UnwrapArray241 = T extends (infer U)[] ? UnwrapArray241 : T; +type Head241 = T extends [infer H, ...infer _] ? H : never; +type Tail241 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation241 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation241>] + : never; + +type SmallUnion241 = "a" | "b" | "c" | "d"; +type AllPerms241 = Permutation241; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig241, + Flat241, + FR241, + BigUnion241, + ExtractAlpha241, + ExcludeZulu241, + OptionalAll241, + RequiredAll241, + ReadonlyAll241, + NullableAll241, + TypeNames241, + Action241, + AllPerms241, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts new file mode 100644 index 00000000..440958cb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-42 (seed 242) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord242 { + a242: { x: number; y: string; z: boolean }; + b242: { p: string[]; q: Record }; + c242: { nested: { deep: { deeper: { deepest: string } } } }; + d242: number; + e242: string; + f242: boolean; + g242: null; + h242: undefined; + i242: bigint; + j242: symbol; +} + +type PartialBig242 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten242 = T extends Array ? Flatten242 : T; +type Nested242 = number[][][][][][][][][][]; +type Flat242 = Flatten242; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly242 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly242 : T[K]; +}; +type DeepRequired242 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired242 : T[K]; +}; +type FR242 = DeepReadonly242>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion242 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha242 = Extract; +type ExcludeZulu242 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA242 { width: number; height: number; depth: number } +interface ShapeB242 { color: string; opacity: number; blend: string } +interface ShapeC242 { x: number; y: number; z: number; w: number } +interface ShapeD242 { label: string; title: string; summary: string } + +type Combined242 = ShapeA242 & ShapeB242 & ShapeC242 & ShapeD242; +type OptionalAll242 = { [K in keyof Combined242]?: Combined242[K] }; +type RequiredAll242 = { [K in keyof Combined242]-?: Combined242[K] }; +type ReadonlyAll242 = { readonly [K in keyof Combined242]: Combined242[K] }; +type NullableAll242 = { [K in keyof Combined242]: Combined242[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString242 = T extends string ? true : false; +type IsNumber242 = T extends number ? true : false; +type TypeName242 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames242 = { + [K in keyof BigRecord242]: TypeName242; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb242 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource242 = "user" | "post" | "comment" | "tag" | "category"; +type Action242 = `${Verb242}_${Resource242}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise242 = T extends Promise ? UnwrapPromise242 : T; +type UnwrapArray242 = T extends (infer U)[] ? UnwrapArray242 : T; +type Head242 = T extends [infer H, ...infer _] ? H : never; +type Tail242 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation242 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation242>] + : never; + +type SmallUnion242 = "a" | "b" | "c" | "d"; +type AllPerms242 = Permutation242; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig242, + Flat242, + FR242, + BigUnion242, + ExtractAlpha242, + ExcludeZulu242, + OptionalAll242, + RequiredAll242, + ReadonlyAll242, + NullableAll242, + TypeNames242, + Action242, + AllPerms242, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts new file mode 100644 index 00000000..11ce64e0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-43 (seed 243) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord243 { + a243: { x: number; y: string; z: boolean }; + b243: { p: string[]; q: Record }; + c243: { nested: { deep: { deeper: { deepest: string } } } }; + d243: number; + e243: string; + f243: boolean; + g243: null; + h243: undefined; + i243: bigint; + j243: symbol; +} + +type PartialBig243 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten243 = T extends Array ? Flatten243 : T; +type Nested243 = number[][][][][][][][][][]; +type Flat243 = Flatten243; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly243 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly243 : T[K]; +}; +type DeepRequired243 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired243 : T[K]; +}; +type FR243 = DeepReadonly243>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion243 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha243 = Extract; +type ExcludeZulu243 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA243 { width: number; height: number; depth: number } +interface ShapeB243 { color: string; opacity: number; blend: string } +interface ShapeC243 { x: number; y: number; z: number; w: number } +interface ShapeD243 { label: string; title: string; summary: string } + +type Combined243 = ShapeA243 & ShapeB243 & ShapeC243 & ShapeD243; +type OptionalAll243 = { [K in keyof Combined243]?: Combined243[K] }; +type RequiredAll243 = { [K in keyof Combined243]-?: Combined243[K] }; +type ReadonlyAll243 = { readonly [K in keyof Combined243]: Combined243[K] }; +type NullableAll243 = { [K in keyof Combined243]: Combined243[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString243 = T extends string ? true : false; +type IsNumber243 = T extends number ? true : false; +type TypeName243 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames243 = { + [K in keyof BigRecord243]: TypeName243; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb243 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource243 = "user" | "post" | "comment" | "tag" | "category"; +type Action243 = `${Verb243}_${Resource243}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise243 = T extends Promise ? UnwrapPromise243 : T; +type UnwrapArray243 = T extends (infer U)[] ? UnwrapArray243 : T; +type Head243 = T extends [infer H, ...infer _] ? H : never; +type Tail243 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation243 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation243>] + : never; + +type SmallUnion243 = "a" | "b" | "c" | "d"; +type AllPerms243 = Permutation243; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig243, + Flat243, + FR243, + BigUnion243, + ExtractAlpha243, + ExcludeZulu243, + OptionalAll243, + RequiredAll243, + ReadonlyAll243, + NullableAll243, + TypeNames243, + Action243, + AllPerms243, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts new file mode 100644 index 00000000..83068fc1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-44 (seed 244) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord244 { + a244: { x: number; y: string; z: boolean }; + b244: { p: string[]; q: Record }; + c244: { nested: { deep: { deeper: { deepest: string } } } }; + d244: number; + e244: string; + f244: boolean; + g244: null; + h244: undefined; + i244: bigint; + j244: symbol; +} + +type PartialBig244 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten244 = T extends Array ? Flatten244 : T; +type Nested244 = number[][][][][][][][][][]; +type Flat244 = Flatten244; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly244 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly244 : T[K]; +}; +type DeepRequired244 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired244 : T[K]; +}; +type FR244 = DeepReadonly244>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion244 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha244 = Extract; +type ExcludeZulu244 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA244 { width: number; height: number; depth: number } +interface ShapeB244 { color: string; opacity: number; blend: string } +interface ShapeC244 { x: number; y: number; z: number; w: number } +interface ShapeD244 { label: string; title: string; summary: string } + +type Combined244 = ShapeA244 & ShapeB244 & ShapeC244 & ShapeD244; +type OptionalAll244 = { [K in keyof Combined244]?: Combined244[K] }; +type RequiredAll244 = { [K in keyof Combined244]-?: Combined244[K] }; +type ReadonlyAll244 = { readonly [K in keyof Combined244]: Combined244[K] }; +type NullableAll244 = { [K in keyof Combined244]: Combined244[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString244 = T extends string ? true : false; +type IsNumber244 = T extends number ? true : false; +type TypeName244 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames244 = { + [K in keyof BigRecord244]: TypeName244; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb244 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource244 = "user" | "post" | "comment" | "tag" | "category"; +type Action244 = `${Verb244}_${Resource244}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise244 = T extends Promise ? UnwrapPromise244 : T; +type UnwrapArray244 = T extends (infer U)[] ? UnwrapArray244 : T; +type Head244 = T extends [infer H, ...infer _] ? H : never; +type Tail244 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation244 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation244>] + : never; + +type SmallUnion244 = "a" | "b" | "c" | "d"; +type AllPerms244 = Permutation244; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig244, + Flat244, + FR244, + BigUnion244, + ExtractAlpha244, + ExcludeZulu244, + OptionalAll244, + RequiredAll244, + ReadonlyAll244, + NullableAll244, + TypeNames244, + Action244, + AllPerms244, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts new file mode 100644 index 00000000..2c6b308f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-45 (seed 245) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord245 { + a245: { x: number; y: string; z: boolean }; + b245: { p: string[]; q: Record }; + c245: { nested: { deep: { deeper: { deepest: string } } } }; + d245: number; + e245: string; + f245: boolean; + g245: null; + h245: undefined; + i245: bigint; + j245: symbol; +} + +type PartialBig245 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten245 = T extends Array ? Flatten245 : T; +type Nested245 = number[][][][][][][][][][]; +type Flat245 = Flatten245; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly245 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly245 : T[K]; +}; +type DeepRequired245 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired245 : T[K]; +}; +type FR245 = DeepReadonly245>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion245 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha245 = Extract; +type ExcludeZulu245 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA245 { width: number; height: number; depth: number } +interface ShapeB245 { color: string; opacity: number; blend: string } +interface ShapeC245 { x: number; y: number; z: number; w: number } +interface ShapeD245 { label: string; title: string; summary: string } + +type Combined245 = ShapeA245 & ShapeB245 & ShapeC245 & ShapeD245; +type OptionalAll245 = { [K in keyof Combined245]?: Combined245[K] }; +type RequiredAll245 = { [K in keyof Combined245]-?: Combined245[K] }; +type ReadonlyAll245 = { readonly [K in keyof Combined245]: Combined245[K] }; +type NullableAll245 = { [K in keyof Combined245]: Combined245[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString245 = T extends string ? true : false; +type IsNumber245 = T extends number ? true : false; +type TypeName245 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames245 = { + [K in keyof BigRecord245]: TypeName245; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb245 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource245 = "user" | "post" | "comment" | "tag" | "category"; +type Action245 = `${Verb245}_${Resource245}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise245 = T extends Promise ? UnwrapPromise245 : T; +type UnwrapArray245 = T extends (infer U)[] ? UnwrapArray245 : T; +type Head245 = T extends [infer H, ...infer _] ? H : never; +type Tail245 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation245 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation245>] + : never; + +type SmallUnion245 = "a" | "b" | "c" | "d"; +type AllPerms245 = Permutation245; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig245, + Flat245, + FR245, + BigUnion245, + ExtractAlpha245, + ExcludeZulu245, + OptionalAll245, + RequiredAll245, + ReadonlyAll245, + NullableAll245, + TypeNames245, + Action245, + AllPerms245, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts new file mode 100644 index 00000000..88d97626 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-46 (seed 246) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord246 { + a246: { x: number; y: string; z: boolean }; + b246: { p: string[]; q: Record }; + c246: { nested: { deep: { deeper: { deepest: string } } } }; + d246: number; + e246: string; + f246: boolean; + g246: null; + h246: undefined; + i246: bigint; + j246: symbol; +} + +type PartialBig246 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten246 = T extends Array ? Flatten246 : T; +type Nested246 = number[][][][][][][][][][]; +type Flat246 = Flatten246; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly246 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly246 : T[K]; +}; +type DeepRequired246 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired246 : T[K]; +}; +type FR246 = DeepReadonly246>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion246 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha246 = Extract; +type ExcludeZulu246 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA246 { width: number; height: number; depth: number } +interface ShapeB246 { color: string; opacity: number; blend: string } +interface ShapeC246 { x: number; y: number; z: number; w: number } +interface ShapeD246 { label: string; title: string; summary: string } + +type Combined246 = ShapeA246 & ShapeB246 & ShapeC246 & ShapeD246; +type OptionalAll246 = { [K in keyof Combined246]?: Combined246[K] }; +type RequiredAll246 = { [K in keyof Combined246]-?: Combined246[K] }; +type ReadonlyAll246 = { readonly [K in keyof Combined246]: Combined246[K] }; +type NullableAll246 = { [K in keyof Combined246]: Combined246[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString246 = T extends string ? true : false; +type IsNumber246 = T extends number ? true : false; +type TypeName246 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames246 = { + [K in keyof BigRecord246]: TypeName246; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb246 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource246 = "user" | "post" | "comment" | "tag" | "category"; +type Action246 = `${Verb246}_${Resource246}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise246 = T extends Promise ? UnwrapPromise246 : T; +type UnwrapArray246 = T extends (infer U)[] ? UnwrapArray246 : T; +type Head246 = T extends [infer H, ...infer _] ? H : never; +type Tail246 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation246 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation246>] + : never; + +type SmallUnion246 = "a" | "b" | "c" | "d"; +type AllPerms246 = Permutation246; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig246, + Flat246, + FR246, + BigUnion246, + ExtractAlpha246, + ExcludeZulu246, + OptionalAll246, + RequiredAll246, + ReadonlyAll246, + NullableAll246, + TypeNames246, + Action246, + AllPerms246, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts new file mode 100644 index 00000000..880ba43c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-47 (seed 247) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord247 { + a247: { x: number; y: string; z: boolean }; + b247: { p: string[]; q: Record }; + c247: { nested: { deep: { deeper: { deepest: string } } } }; + d247: number; + e247: string; + f247: boolean; + g247: null; + h247: undefined; + i247: bigint; + j247: symbol; +} + +type PartialBig247 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten247 = T extends Array ? Flatten247 : T; +type Nested247 = number[][][][][][][][][][]; +type Flat247 = Flatten247; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly247 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly247 : T[K]; +}; +type DeepRequired247 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired247 : T[K]; +}; +type FR247 = DeepReadonly247>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion247 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha247 = Extract; +type ExcludeZulu247 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA247 { width: number; height: number; depth: number } +interface ShapeB247 { color: string; opacity: number; blend: string } +interface ShapeC247 { x: number; y: number; z: number; w: number } +interface ShapeD247 { label: string; title: string; summary: string } + +type Combined247 = ShapeA247 & ShapeB247 & ShapeC247 & ShapeD247; +type OptionalAll247 = { [K in keyof Combined247]?: Combined247[K] }; +type RequiredAll247 = { [K in keyof Combined247]-?: Combined247[K] }; +type ReadonlyAll247 = { readonly [K in keyof Combined247]: Combined247[K] }; +type NullableAll247 = { [K in keyof Combined247]: Combined247[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString247 = T extends string ? true : false; +type IsNumber247 = T extends number ? true : false; +type TypeName247 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames247 = { + [K in keyof BigRecord247]: TypeName247; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb247 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource247 = "user" | "post" | "comment" | "tag" | "category"; +type Action247 = `${Verb247}_${Resource247}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise247 = T extends Promise ? UnwrapPromise247 : T; +type UnwrapArray247 = T extends (infer U)[] ? UnwrapArray247 : T; +type Head247 = T extends [infer H, ...infer _] ? H : never; +type Tail247 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation247 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation247>] + : never; + +type SmallUnion247 = "a" | "b" | "c" | "d"; +type AllPerms247 = Permutation247; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig247, + Flat247, + FR247, + BigUnion247, + ExtractAlpha247, + ExcludeZulu247, + OptionalAll247, + RequiredAll247, + ReadonlyAll247, + NullableAll247, + TypeNames247, + Action247, + AllPerms247, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts new file mode 100644 index 00000000..64acca12 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-48 (seed 248) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord248 { + a248: { x: number; y: string; z: boolean }; + b248: { p: string[]; q: Record }; + c248: { nested: { deep: { deeper: { deepest: string } } } }; + d248: number; + e248: string; + f248: boolean; + g248: null; + h248: undefined; + i248: bigint; + j248: symbol; +} + +type PartialBig248 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten248 = T extends Array ? Flatten248 : T; +type Nested248 = number[][][][][][][][][][]; +type Flat248 = Flatten248; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly248 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly248 : T[K]; +}; +type DeepRequired248 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired248 : T[K]; +}; +type FR248 = DeepReadonly248>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion248 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha248 = Extract; +type ExcludeZulu248 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA248 { width: number; height: number; depth: number } +interface ShapeB248 { color: string; opacity: number; blend: string } +interface ShapeC248 { x: number; y: number; z: number; w: number } +interface ShapeD248 { label: string; title: string; summary: string } + +type Combined248 = ShapeA248 & ShapeB248 & ShapeC248 & ShapeD248; +type OptionalAll248 = { [K in keyof Combined248]?: Combined248[K] }; +type RequiredAll248 = { [K in keyof Combined248]-?: Combined248[K] }; +type ReadonlyAll248 = { readonly [K in keyof Combined248]: Combined248[K] }; +type NullableAll248 = { [K in keyof Combined248]: Combined248[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString248 = T extends string ? true : false; +type IsNumber248 = T extends number ? true : false; +type TypeName248 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames248 = { + [K in keyof BigRecord248]: TypeName248; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb248 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource248 = "user" | "post" | "comment" | "tag" | "category"; +type Action248 = `${Verb248}_${Resource248}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise248 = T extends Promise ? UnwrapPromise248 : T; +type UnwrapArray248 = T extends (infer U)[] ? UnwrapArray248 : T; +type Head248 = T extends [infer H, ...infer _] ? H : never; +type Tail248 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation248 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation248>] + : never; + +type SmallUnion248 = "a" | "b" | "c" | "d"; +type AllPerms248 = Permutation248; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig248, + Flat248, + FR248, + BigUnion248, + ExtractAlpha248, + ExcludeZulu248, + OptionalAll248, + RequiredAll248, + ReadonlyAll248, + NullableAll248, + TypeNames248, + Action248, + AllPerms248, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts new file mode 100644 index 00000000..8f2f952f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-49 (seed 249) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord249 { + a249: { x: number; y: string; z: boolean }; + b249: { p: string[]; q: Record }; + c249: { nested: { deep: { deeper: { deepest: string } } } }; + d249: number; + e249: string; + f249: boolean; + g249: null; + h249: undefined; + i249: bigint; + j249: symbol; +} + +type PartialBig249 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten249 = T extends Array ? Flatten249 : T; +type Nested249 = number[][][][][][][][][][]; +type Flat249 = Flatten249; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly249 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly249 : T[K]; +}; +type DeepRequired249 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired249 : T[K]; +}; +type FR249 = DeepReadonly249>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion249 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha249 = Extract; +type ExcludeZulu249 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA249 { width: number; height: number; depth: number } +interface ShapeB249 { color: string; opacity: number; blend: string } +interface ShapeC249 { x: number; y: number; z: number; w: number } +interface ShapeD249 { label: string; title: string; summary: string } + +type Combined249 = ShapeA249 & ShapeB249 & ShapeC249 & ShapeD249; +type OptionalAll249 = { [K in keyof Combined249]?: Combined249[K] }; +type RequiredAll249 = { [K in keyof Combined249]-?: Combined249[K] }; +type ReadonlyAll249 = { readonly [K in keyof Combined249]: Combined249[K] }; +type NullableAll249 = { [K in keyof Combined249]: Combined249[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString249 = T extends string ? true : false; +type IsNumber249 = T extends number ? true : false; +type TypeName249 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames249 = { + [K in keyof BigRecord249]: TypeName249; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb249 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource249 = "user" | "post" | "comment" | "tag" | "category"; +type Action249 = `${Verb249}_${Resource249}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise249 = T extends Promise ? UnwrapPromise249 : T; +type UnwrapArray249 = T extends (infer U)[] ? UnwrapArray249 : T; +type Head249 = T extends [infer H, ...infer _] ? H : never; +type Tail249 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation249 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation249>] + : never; + +type SmallUnion249 = "a" | "b" | "c" | "d"; +type AllPerms249 = Permutation249; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig249, + Flat249, + FR249, + BigUnion249, + ExtractAlpha249, + ExcludeZulu249, + OptionalAll249, + RequiredAll249, + ReadonlyAll249, + NullableAll249, + TypeNames249, + Action249, + AllPerms249, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts new file mode 100644 index 00000000..ce0be910 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts @@ -0,0 +1,125 @@ +// pkg-02 / types-50 (seed 250) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord250 { + a250: { x: number; y: string; z: boolean }; + b250: { p: string[]; q: Record }; + c250: { nested: { deep: { deeper: { deepest: string } } } }; + d250: number; + e250: string; + f250: boolean; + g250: null; + h250: undefined; + i250: bigint; + j250: symbol; +} + +type PartialBig250 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten250 = T extends Array ? Flatten250 : T; +type Nested250 = number[][][][][][][][][][]; +type Flat250 = Flatten250; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly250 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly250 : T[K]; +}; +type DeepRequired250 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired250 : T[K]; +}; +type FR250 = DeepReadonly250>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion250 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha250 = Extract; +type ExcludeZulu250 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA250 { width: number; height: number; depth: number } +interface ShapeB250 { color: string; opacity: number; blend: string } +interface ShapeC250 { x: number; y: number; z: number; w: number } +interface ShapeD250 { label: string; title: string; summary: string } + +type Combined250 = ShapeA250 & ShapeB250 & ShapeC250 & ShapeD250; +type OptionalAll250 = { [K in keyof Combined250]?: Combined250[K] }; +type RequiredAll250 = { [K in keyof Combined250]-?: Combined250[K] }; +type ReadonlyAll250 = { readonly [K in keyof Combined250]: Combined250[K] }; +type NullableAll250 = { [K in keyof Combined250]: Combined250[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString250 = T extends string ? true : false; +type IsNumber250 = T extends number ? true : false; +type TypeName250 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames250 = { + [K in keyof BigRecord250]: TypeName250; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb250 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource250 = "user" | "post" | "comment" | "tag" | "category"; +type Action250 = `${Verb250}_${Resource250}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise250 = T extends Promise ? UnwrapPromise250 : T; +type UnwrapArray250 = T extends (infer U)[] ? UnwrapArray250 : T; +type Head250 = T extends [infer H, ...infer _] ? H : never; +type Tail250 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation250 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation250>] + : never; + +type SmallUnion250 = "a" | "b" | "c" | "d"; +type AllPerms250 = Permutation250; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig250, + Flat250, + FR250, + BigUnion250, + ExtractAlpha250, + ExcludeZulu250, + OptionalAll250, + RequiredAll250, + ReadonlyAll250, + NullableAll250, + TypeNames250, + Action250, + AllPerms250, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts new file mode 100644 index 00000000..f3b907b1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-01 (seed 301) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord301 { + a301: { x: number; y: string; z: boolean }; + b301: { p: string[]; q: Record }; + c301: { nested: { deep: { deeper: { deepest: string } } } }; + d301: number; + e301: string; + f301: boolean; + g301: null; + h301: undefined; + i301: bigint; + j301: symbol; +} + +type PartialBig301 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten301 = T extends Array ? Flatten301 : T; +type Nested301 = number[][][][][][][][][][]; +type Flat301 = Flatten301; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly301 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly301 : T[K]; +}; +type DeepRequired301 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired301 : T[K]; +}; +type FR301 = DeepReadonly301>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion301 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha301 = Extract; +type ExcludeZulu301 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA301 { width: number; height: number; depth: number } +interface ShapeB301 { color: string; opacity: number; blend: string } +interface ShapeC301 { x: number; y: number; z: number; w: number } +interface ShapeD301 { label: string; title: string; summary: string } + +type Combined301 = ShapeA301 & ShapeB301 & ShapeC301 & ShapeD301; +type OptionalAll301 = { [K in keyof Combined301]?: Combined301[K] }; +type RequiredAll301 = { [K in keyof Combined301]-?: Combined301[K] }; +type ReadonlyAll301 = { readonly [K in keyof Combined301]: Combined301[K] }; +type NullableAll301 = { [K in keyof Combined301]: Combined301[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString301 = T extends string ? true : false; +type IsNumber301 = T extends number ? true : false; +type TypeName301 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames301 = { + [K in keyof BigRecord301]: TypeName301; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb301 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource301 = "user" | "post" | "comment" | "tag" | "category"; +type Action301 = `${Verb301}_${Resource301}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise301 = T extends Promise ? UnwrapPromise301 : T; +type UnwrapArray301 = T extends (infer U)[] ? UnwrapArray301 : T; +type Head301 = T extends [infer H, ...infer _] ? H : never; +type Tail301 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation301 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation301>] + : never; + +type SmallUnion301 = "a" | "b" | "c" | "d"; +type AllPerms301 = Permutation301; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig301, + Flat301, + FR301, + BigUnion301, + ExtractAlpha301, + ExcludeZulu301, + OptionalAll301, + RequiredAll301, + ReadonlyAll301, + NullableAll301, + TypeNames301, + Action301, + AllPerms301, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts new file mode 100644 index 00000000..c963689f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-02 (seed 302) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord302 { + a302: { x: number; y: string; z: boolean }; + b302: { p: string[]; q: Record }; + c302: { nested: { deep: { deeper: { deepest: string } } } }; + d302: number; + e302: string; + f302: boolean; + g302: null; + h302: undefined; + i302: bigint; + j302: symbol; +} + +type PartialBig302 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten302 = T extends Array ? Flatten302 : T; +type Nested302 = number[][][][][][][][][][]; +type Flat302 = Flatten302; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly302 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly302 : T[K]; +}; +type DeepRequired302 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired302 : T[K]; +}; +type FR302 = DeepReadonly302>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion302 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha302 = Extract; +type ExcludeZulu302 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA302 { width: number; height: number; depth: number } +interface ShapeB302 { color: string; opacity: number; blend: string } +interface ShapeC302 { x: number; y: number; z: number; w: number } +interface ShapeD302 { label: string; title: string; summary: string } + +type Combined302 = ShapeA302 & ShapeB302 & ShapeC302 & ShapeD302; +type OptionalAll302 = { [K in keyof Combined302]?: Combined302[K] }; +type RequiredAll302 = { [K in keyof Combined302]-?: Combined302[K] }; +type ReadonlyAll302 = { readonly [K in keyof Combined302]: Combined302[K] }; +type NullableAll302 = { [K in keyof Combined302]: Combined302[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString302 = T extends string ? true : false; +type IsNumber302 = T extends number ? true : false; +type TypeName302 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames302 = { + [K in keyof BigRecord302]: TypeName302; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb302 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource302 = "user" | "post" | "comment" | "tag" | "category"; +type Action302 = `${Verb302}_${Resource302}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise302 = T extends Promise ? UnwrapPromise302 : T; +type UnwrapArray302 = T extends (infer U)[] ? UnwrapArray302 : T; +type Head302 = T extends [infer H, ...infer _] ? H : never; +type Tail302 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation302 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation302>] + : never; + +type SmallUnion302 = "a" | "b" | "c" | "d"; +type AllPerms302 = Permutation302; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig302, + Flat302, + FR302, + BigUnion302, + ExtractAlpha302, + ExcludeZulu302, + OptionalAll302, + RequiredAll302, + ReadonlyAll302, + NullableAll302, + TypeNames302, + Action302, + AllPerms302, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts new file mode 100644 index 00000000..4e196f0d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-03 (seed 303) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord303 { + a303: { x: number; y: string; z: boolean }; + b303: { p: string[]; q: Record }; + c303: { nested: { deep: { deeper: { deepest: string } } } }; + d303: number; + e303: string; + f303: boolean; + g303: null; + h303: undefined; + i303: bigint; + j303: symbol; +} + +type PartialBig303 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten303 = T extends Array ? Flatten303 : T; +type Nested303 = number[][][][][][][][][][]; +type Flat303 = Flatten303; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly303 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly303 : T[K]; +}; +type DeepRequired303 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired303 : T[K]; +}; +type FR303 = DeepReadonly303>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion303 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha303 = Extract; +type ExcludeZulu303 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA303 { width: number; height: number; depth: number } +interface ShapeB303 { color: string; opacity: number; blend: string } +interface ShapeC303 { x: number; y: number; z: number; w: number } +interface ShapeD303 { label: string; title: string; summary: string } + +type Combined303 = ShapeA303 & ShapeB303 & ShapeC303 & ShapeD303; +type OptionalAll303 = { [K in keyof Combined303]?: Combined303[K] }; +type RequiredAll303 = { [K in keyof Combined303]-?: Combined303[K] }; +type ReadonlyAll303 = { readonly [K in keyof Combined303]: Combined303[K] }; +type NullableAll303 = { [K in keyof Combined303]: Combined303[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString303 = T extends string ? true : false; +type IsNumber303 = T extends number ? true : false; +type TypeName303 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames303 = { + [K in keyof BigRecord303]: TypeName303; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb303 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource303 = "user" | "post" | "comment" | "tag" | "category"; +type Action303 = `${Verb303}_${Resource303}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise303 = T extends Promise ? UnwrapPromise303 : T; +type UnwrapArray303 = T extends (infer U)[] ? UnwrapArray303 : T; +type Head303 = T extends [infer H, ...infer _] ? H : never; +type Tail303 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation303 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation303>] + : never; + +type SmallUnion303 = "a" | "b" | "c" | "d"; +type AllPerms303 = Permutation303; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig303, + Flat303, + FR303, + BigUnion303, + ExtractAlpha303, + ExcludeZulu303, + OptionalAll303, + RequiredAll303, + ReadonlyAll303, + NullableAll303, + TypeNames303, + Action303, + AllPerms303, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts new file mode 100644 index 00000000..80309070 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-04 (seed 304) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord304 { + a304: { x: number; y: string; z: boolean }; + b304: { p: string[]; q: Record }; + c304: { nested: { deep: { deeper: { deepest: string } } } }; + d304: number; + e304: string; + f304: boolean; + g304: null; + h304: undefined; + i304: bigint; + j304: symbol; +} + +type PartialBig304 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten304 = T extends Array ? Flatten304 : T; +type Nested304 = number[][][][][][][][][][]; +type Flat304 = Flatten304; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly304 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly304 : T[K]; +}; +type DeepRequired304 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired304 : T[K]; +}; +type FR304 = DeepReadonly304>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion304 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha304 = Extract; +type ExcludeZulu304 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA304 { width: number; height: number; depth: number } +interface ShapeB304 { color: string; opacity: number; blend: string } +interface ShapeC304 { x: number; y: number; z: number; w: number } +interface ShapeD304 { label: string; title: string; summary: string } + +type Combined304 = ShapeA304 & ShapeB304 & ShapeC304 & ShapeD304; +type OptionalAll304 = { [K in keyof Combined304]?: Combined304[K] }; +type RequiredAll304 = { [K in keyof Combined304]-?: Combined304[K] }; +type ReadonlyAll304 = { readonly [K in keyof Combined304]: Combined304[K] }; +type NullableAll304 = { [K in keyof Combined304]: Combined304[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString304 = T extends string ? true : false; +type IsNumber304 = T extends number ? true : false; +type TypeName304 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames304 = { + [K in keyof BigRecord304]: TypeName304; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb304 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource304 = "user" | "post" | "comment" | "tag" | "category"; +type Action304 = `${Verb304}_${Resource304}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise304 = T extends Promise ? UnwrapPromise304 : T; +type UnwrapArray304 = T extends (infer U)[] ? UnwrapArray304 : T; +type Head304 = T extends [infer H, ...infer _] ? H : never; +type Tail304 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation304 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation304>] + : never; + +type SmallUnion304 = "a" | "b" | "c" | "d"; +type AllPerms304 = Permutation304; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig304, + Flat304, + FR304, + BigUnion304, + ExtractAlpha304, + ExcludeZulu304, + OptionalAll304, + RequiredAll304, + ReadonlyAll304, + NullableAll304, + TypeNames304, + Action304, + AllPerms304, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts new file mode 100644 index 00000000..521b868c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-05 (seed 305) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord305 { + a305: { x: number; y: string; z: boolean }; + b305: { p: string[]; q: Record }; + c305: { nested: { deep: { deeper: { deepest: string } } } }; + d305: number; + e305: string; + f305: boolean; + g305: null; + h305: undefined; + i305: bigint; + j305: symbol; +} + +type PartialBig305 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten305 = T extends Array ? Flatten305 : T; +type Nested305 = number[][][][][][][][][][]; +type Flat305 = Flatten305; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly305 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly305 : T[K]; +}; +type DeepRequired305 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired305 : T[K]; +}; +type FR305 = DeepReadonly305>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion305 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha305 = Extract; +type ExcludeZulu305 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA305 { width: number; height: number; depth: number } +interface ShapeB305 { color: string; opacity: number; blend: string } +interface ShapeC305 { x: number; y: number; z: number; w: number } +interface ShapeD305 { label: string; title: string; summary: string } + +type Combined305 = ShapeA305 & ShapeB305 & ShapeC305 & ShapeD305; +type OptionalAll305 = { [K in keyof Combined305]?: Combined305[K] }; +type RequiredAll305 = { [K in keyof Combined305]-?: Combined305[K] }; +type ReadonlyAll305 = { readonly [K in keyof Combined305]: Combined305[K] }; +type NullableAll305 = { [K in keyof Combined305]: Combined305[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString305 = T extends string ? true : false; +type IsNumber305 = T extends number ? true : false; +type TypeName305 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames305 = { + [K in keyof BigRecord305]: TypeName305; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb305 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource305 = "user" | "post" | "comment" | "tag" | "category"; +type Action305 = `${Verb305}_${Resource305}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise305 = T extends Promise ? UnwrapPromise305 : T; +type UnwrapArray305 = T extends (infer U)[] ? UnwrapArray305 : T; +type Head305 = T extends [infer H, ...infer _] ? H : never; +type Tail305 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation305 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation305>] + : never; + +type SmallUnion305 = "a" | "b" | "c" | "d"; +type AllPerms305 = Permutation305; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig305, + Flat305, + FR305, + BigUnion305, + ExtractAlpha305, + ExcludeZulu305, + OptionalAll305, + RequiredAll305, + ReadonlyAll305, + NullableAll305, + TypeNames305, + Action305, + AllPerms305, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts new file mode 100644 index 00000000..c8a46d10 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-06 (seed 306) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord306 { + a306: { x: number; y: string; z: boolean }; + b306: { p: string[]; q: Record }; + c306: { nested: { deep: { deeper: { deepest: string } } } }; + d306: number; + e306: string; + f306: boolean; + g306: null; + h306: undefined; + i306: bigint; + j306: symbol; +} + +type PartialBig306 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten306 = T extends Array ? Flatten306 : T; +type Nested306 = number[][][][][][][][][][]; +type Flat306 = Flatten306; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly306 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly306 : T[K]; +}; +type DeepRequired306 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired306 : T[K]; +}; +type FR306 = DeepReadonly306>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion306 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha306 = Extract; +type ExcludeZulu306 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA306 { width: number; height: number; depth: number } +interface ShapeB306 { color: string; opacity: number; blend: string } +interface ShapeC306 { x: number; y: number; z: number; w: number } +interface ShapeD306 { label: string; title: string; summary: string } + +type Combined306 = ShapeA306 & ShapeB306 & ShapeC306 & ShapeD306; +type OptionalAll306 = { [K in keyof Combined306]?: Combined306[K] }; +type RequiredAll306 = { [K in keyof Combined306]-?: Combined306[K] }; +type ReadonlyAll306 = { readonly [K in keyof Combined306]: Combined306[K] }; +type NullableAll306 = { [K in keyof Combined306]: Combined306[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString306 = T extends string ? true : false; +type IsNumber306 = T extends number ? true : false; +type TypeName306 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames306 = { + [K in keyof BigRecord306]: TypeName306; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb306 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource306 = "user" | "post" | "comment" | "tag" | "category"; +type Action306 = `${Verb306}_${Resource306}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise306 = T extends Promise ? UnwrapPromise306 : T; +type UnwrapArray306 = T extends (infer U)[] ? UnwrapArray306 : T; +type Head306 = T extends [infer H, ...infer _] ? H : never; +type Tail306 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation306 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation306>] + : never; + +type SmallUnion306 = "a" | "b" | "c" | "d"; +type AllPerms306 = Permutation306; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig306, + Flat306, + FR306, + BigUnion306, + ExtractAlpha306, + ExcludeZulu306, + OptionalAll306, + RequiredAll306, + ReadonlyAll306, + NullableAll306, + TypeNames306, + Action306, + AllPerms306, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts new file mode 100644 index 00000000..6a0b77db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-07 (seed 307) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord307 { + a307: { x: number; y: string; z: boolean }; + b307: { p: string[]; q: Record }; + c307: { nested: { deep: { deeper: { deepest: string } } } }; + d307: number; + e307: string; + f307: boolean; + g307: null; + h307: undefined; + i307: bigint; + j307: symbol; +} + +type PartialBig307 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten307 = T extends Array ? Flatten307 : T; +type Nested307 = number[][][][][][][][][][]; +type Flat307 = Flatten307; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly307 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly307 : T[K]; +}; +type DeepRequired307 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired307 : T[K]; +}; +type FR307 = DeepReadonly307>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion307 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha307 = Extract; +type ExcludeZulu307 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA307 { width: number; height: number; depth: number } +interface ShapeB307 { color: string; opacity: number; blend: string } +interface ShapeC307 { x: number; y: number; z: number; w: number } +interface ShapeD307 { label: string; title: string; summary: string } + +type Combined307 = ShapeA307 & ShapeB307 & ShapeC307 & ShapeD307; +type OptionalAll307 = { [K in keyof Combined307]?: Combined307[K] }; +type RequiredAll307 = { [K in keyof Combined307]-?: Combined307[K] }; +type ReadonlyAll307 = { readonly [K in keyof Combined307]: Combined307[K] }; +type NullableAll307 = { [K in keyof Combined307]: Combined307[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString307 = T extends string ? true : false; +type IsNumber307 = T extends number ? true : false; +type TypeName307 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames307 = { + [K in keyof BigRecord307]: TypeName307; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb307 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource307 = "user" | "post" | "comment" | "tag" | "category"; +type Action307 = `${Verb307}_${Resource307}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise307 = T extends Promise ? UnwrapPromise307 : T; +type UnwrapArray307 = T extends (infer U)[] ? UnwrapArray307 : T; +type Head307 = T extends [infer H, ...infer _] ? H : never; +type Tail307 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation307 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation307>] + : never; + +type SmallUnion307 = "a" | "b" | "c" | "d"; +type AllPerms307 = Permutation307; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig307, + Flat307, + FR307, + BigUnion307, + ExtractAlpha307, + ExcludeZulu307, + OptionalAll307, + RequiredAll307, + ReadonlyAll307, + NullableAll307, + TypeNames307, + Action307, + AllPerms307, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts new file mode 100644 index 00000000..dccf408c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-08 (seed 308) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord308 { + a308: { x: number; y: string; z: boolean }; + b308: { p: string[]; q: Record }; + c308: { nested: { deep: { deeper: { deepest: string } } } }; + d308: number; + e308: string; + f308: boolean; + g308: null; + h308: undefined; + i308: bigint; + j308: symbol; +} + +type PartialBig308 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten308 = T extends Array ? Flatten308 : T; +type Nested308 = number[][][][][][][][][][]; +type Flat308 = Flatten308; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly308 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly308 : T[K]; +}; +type DeepRequired308 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired308 : T[K]; +}; +type FR308 = DeepReadonly308>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion308 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha308 = Extract; +type ExcludeZulu308 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA308 { width: number; height: number; depth: number } +interface ShapeB308 { color: string; opacity: number; blend: string } +interface ShapeC308 { x: number; y: number; z: number; w: number } +interface ShapeD308 { label: string; title: string; summary: string } + +type Combined308 = ShapeA308 & ShapeB308 & ShapeC308 & ShapeD308; +type OptionalAll308 = { [K in keyof Combined308]?: Combined308[K] }; +type RequiredAll308 = { [K in keyof Combined308]-?: Combined308[K] }; +type ReadonlyAll308 = { readonly [K in keyof Combined308]: Combined308[K] }; +type NullableAll308 = { [K in keyof Combined308]: Combined308[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString308 = T extends string ? true : false; +type IsNumber308 = T extends number ? true : false; +type TypeName308 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames308 = { + [K in keyof BigRecord308]: TypeName308; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb308 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource308 = "user" | "post" | "comment" | "tag" | "category"; +type Action308 = `${Verb308}_${Resource308}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise308 = T extends Promise ? UnwrapPromise308 : T; +type UnwrapArray308 = T extends (infer U)[] ? UnwrapArray308 : T; +type Head308 = T extends [infer H, ...infer _] ? H : never; +type Tail308 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation308 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation308>] + : never; + +type SmallUnion308 = "a" | "b" | "c" | "d"; +type AllPerms308 = Permutation308; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig308, + Flat308, + FR308, + BigUnion308, + ExtractAlpha308, + ExcludeZulu308, + OptionalAll308, + RequiredAll308, + ReadonlyAll308, + NullableAll308, + TypeNames308, + Action308, + AllPerms308, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts new file mode 100644 index 00000000..37cc41b7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-09 (seed 309) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord309 { + a309: { x: number; y: string; z: boolean }; + b309: { p: string[]; q: Record }; + c309: { nested: { deep: { deeper: { deepest: string } } } }; + d309: number; + e309: string; + f309: boolean; + g309: null; + h309: undefined; + i309: bigint; + j309: symbol; +} + +type PartialBig309 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten309 = T extends Array ? Flatten309 : T; +type Nested309 = number[][][][][][][][][][]; +type Flat309 = Flatten309; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly309 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly309 : T[K]; +}; +type DeepRequired309 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired309 : T[K]; +}; +type FR309 = DeepReadonly309>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion309 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha309 = Extract; +type ExcludeZulu309 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA309 { width: number; height: number; depth: number } +interface ShapeB309 { color: string; opacity: number; blend: string } +interface ShapeC309 { x: number; y: number; z: number; w: number } +interface ShapeD309 { label: string; title: string; summary: string } + +type Combined309 = ShapeA309 & ShapeB309 & ShapeC309 & ShapeD309; +type OptionalAll309 = { [K in keyof Combined309]?: Combined309[K] }; +type RequiredAll309 = { [K in keyof Combined309]-?: Combined309[K] }; +type ReadonlyAll309 = { readonly [K in keyof Combined309]: Combined309[K] }; +type NullableAll309 = { [K in keyof Combined309]: Combined309[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString309 = T extends string ? true : false; +type IsNumber309 = T extends number ? true : false; +type TypeName309 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames309 = { + [K in keyof BigRecord309]: TypeName309; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb309 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource309 = "user" | "post" | "comment" | "tag" | "category"; +type Action309 = `${Verb309}_${Resource309}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise309 = T extends Promise ? UnwrapPromise309 : T; +type UnwrapArray309 = T extends (infer U)[] ? UnwrapArray309 : T; +type Head309 = T extends [infer H, ...infer _] ? H : never; +type Tail309 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation309 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation309>] + : never; + +type SmallUnion309 = "a" | "b" | "c" | "d"; +type AllPerms309 = Permutation309; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig309, + Flat309, + FR309, + BigUnion309, + ExtractAlpha309, + ExcludeZulu309, + OptionalAll309, + RequiredAll309, + ReadonlyAll309, + NullableAll309, + TypeNames309, + Action309, + AllPerms309, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts new file mode 100644 index 00000000..5bf5ae12 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-10 (seed 310) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord310 { + a310: { x: number; y: string; z: boolean }; + b310: { p: string[]; q: Record }; + c310: { nested: { deep: { deeper: { deepest: string } } } }; + d310: number; + e310: string; + f310: boolean; + g310: null; + h310: undefined; + i310: bigint; + j310: symbol; +} + +type PartialBig310 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten310 = T extends Array ? Flatten310 : T; +type Nested310 = number[][][][][][][][][][]; +type Flat310 = Flatten310; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly310 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly310 : T[K]; +}; +type DeepRequired310 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired310 : T[K]; +}; +type FR310 = DeepReadonly310>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion310 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha310 = Extract; +type ExcludeZulu310 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA310 { width: number; height: number; depth: number } +interface ShapeB310 { color: string; opacity: number; blend: string } +interface ShapeC310 { x: number; y: number; z: number; w: number } +interface ShapeD310 { label: string; title: string; summary: string } + +type Combined310 = ShapeA310 & ShapeB310 & ShapeC310 & ShapeD310; +type OptionalAll310 = { [K in keyof Combined310]?: Combined310[K] }; +type RequiredAll310 = { [K in keyof Combined310]-?: Combined310[K] }; +type ReadonlyAll310 = { readonly [K in keyof Combined310]: Combined310[K] }; +type NullableAll310 = { [K in keyof Combined310]: Combined310[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString310 = T extends string ? true : false; +type IsNumber310 = T extends number ? true : false; +type TypeName310 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames310 = { + [K in keyof BigRecord310]: TypeName310; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb310 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource310 = "user" | "post" | "comment" | "tag" | "category"; +type Action310 = `${Verb310}_${Resource310}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise310 = T extends Promise ? UnwrapPromise310 : T; +type UnwrapArray310 = T extends (infer U)[] ? UnwrapArray310 : T; +type Head310 = T extends [infer H, ...infer _] ? H : never; +type Tail310 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation310 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation310>] + : never; + +type SmallUnion310 = "a" | "b" | "c" | "d"; +type AllPerms310 = Permutation310; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig310, + Flat310, + FR310, + BigUnion310, + ExtractAlpha310, + ExcludeZulu310, + OptionalAll310, + RequiredAll310, + ReadonlyAll310, + NullableAll310, + TypeNames310, + Action310, + AllPerms310, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts new file mode 100644 index 00000000..a4f9e1b4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-11 (seed 311) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord311 { + a311: { x: number; y: string; z: boolean }; + b311: { p: string[]; q: Record }; + c311: { nested: { deep: { deeper: { deepest: string } } } }; + d311: number; + e311: string; + f311: boolean; + g311: null; + h311: undefined; + i311: bigint; + j311: symbol; +} + +type PartialBig311 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten311 = T extends Array ? Flatten311 : T; +type Nested311 = number[][][][][][][][][][]; +type Flat311 = Flatten311; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly311 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly311 : T[K]; +}; +type DeepRequired311 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired311 : T[K]; +}; +type FR311 = DeepReadonly311>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion311 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha311 = Extract; +type ExcludeZulu311 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA311 { width: number; height: number; depth: number } +interface ShapeB311 { color: string; opacity: number; blend: string } +interface ShapeC311 { x: number; y: number; z: number; w: number } +interface ShapeD311 { label: string; title: string; summary: string } + +type Combined311 = ShapeA311 & ShapeB311 & ShapeC311 & ShapeD311; +type OptionalAll311 = { [K in keyof Combined311]?: Combined311[K] }; +type RequiredAll311 = { [K in keyof Combined311]-?: Combined311[K] }; +type ReadonlyAll311 = { readonly [K in keyof Combined311]: Combined311[K] }; +type NullableAll311 = { [K in keyof Combined311]: Combined311[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString311 = T extends string ? true : false; +type IsNumber311 = T extends number ? true : false; +type TypeName311 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames311 = { + [K in keyof BigRecord311]: TypeName311; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb311 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource311 = "user" | "post" | "comment" | "tag" | "category"; +type Action311 = `${Verb311}_${Resource311}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise311 = T extends Promise ? UnwrapPromise311 : T; +type UnwrapArray311 = T extends (infer U)[] ? UnwrapArray311 : T; +type Head311 = T extends [infer H, ...infer _] ? H : never; +type Tail311 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation311 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation311>] + : never; + +type SmallUnion311 = "a" | "b" | "c" | "d"; +type AllPerms311 = Permutation311; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig311, + Flat311, + FR311, + BigUnion311, + ExtractAlpha311, + ExcludeZulu311, + OptionalAll311, + RequiredAll311, + ReadonlyAll311, + NullableAll311, + TypeNames311, + Action311, + AllPerms311, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts new file mode 100644 index 00000000..80fc058b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-12 (seed 312) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord312 { + a312: { x: number; y: string; z: boolean }; + b312: { p: string[]; q: Record }; + c312: { nested: { deep: { deeper: { deepest: string } } } }; + d312: number; + e312: string; + f312: boolean; + g312: null; + h312: undefined; + i312: bigint; + j312: symbol; +} + +type PartialBig312 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten312 = T extends Array ? Flatten312 : T; +type Nested312 = number[][][][][][][][][][]; +type Flat312 = Flatten312; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly312 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly312 : T[K]; +}; +type DeepRequired312 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired312 : T[K]; +}; +type FR312 = DeepReadonly312>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion312 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha312 = Extract; +type ExcludeZulu312 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA312 { width: number; height: number; depth: number } +interface ShapeB312 { color: string; opacity: number; blend: string } +interface ShapeC312 { x: number; y: number; z: number; w: number } +interface ShapeD312 { label: string; title: string; summary: string } + +type Combined312 = ShapeA312 & ShapeB312 & ShapeC312 & ShapeD312; +type OptionalAll312 = { [K in keyof Combined312]?: Combined312[K] }; +type RequiredAll312 = { [K in keyof Combined312]-?: Combined312[K] }; +type ReadonlyAll312 = { readonly [K in keyof Combined312]: Combined312[K] }; +type NullableAll312 = { [K in keyof Combined312]: Combined312[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString312 = T extends string ? true : false; +type IsNumber312 = T extends number ? true : false; +type TypeName312 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames312 = { + [K in keyof BigRecord312]: TypeName312; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb312 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource312 = "user" | "post" | "comment" | "tag" | "category"; +type Action312 = `${Verb312}_${Resource312}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise312 = T extends Promise ? UnwrapPromise312 : T; +type UnwrapArray312 = T extends (infer U)[] ? UnwrapArray312 : T; +type Head312 = T extends [infer H, ...infer _] ? H : never; +type Tail312 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation312 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation312>] + : never; + +type SmallUnion312 = "a" | "b" | "c" | "d"; +type AllPerms312 = Permutation312; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig312, + Flat312, + FR312, + BigUnion312, + ExtractAlpha312, + ExcludeZulu312, + OptionalAll312, + RequiredAll312, + ReadonlyAll312, + NullableAll312, + TypeNames312, + Action312, + AllPerms312, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts new file mode 100644 index 00000000..905347d5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-13 (seed 313) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord313 { + a313: { x: number; y: string; z: boolean }; + b313: { p: string[]; q: Record }; + c313: { nested: { deep: { deeper: { deepest: string } } } }; + d313: number; + e313: string; + f313: boolean; + g313: null; + h313: undefined; + i313: bigint; + j313: symbol; +} + +type PartialBig313 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten313 = T extends Array ? Flatten313 : T; +type Nested313 = number[][][][][][][][][][]; +type Flat313 = Flatten313; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly313 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly313 : T[K]; +}; +type DeepRequired313 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired313 : T[K]; +}; +type FR313 = DeepReadonly313>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion313 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha313 = Extract; +type ExcludeZulu313 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA313 { width: number; height: number; depth: number } +interface ShapeB313 { color: string; opacity: number; blend: string } +interface ShapeC313 { x: number; y: number; z: number; w: number } +interface ShapeD313 { label: string; title: string; summary: string } + +type Combined313 = ShapeA313 & ShapeB313 & ShapeC313 & ShapeD313; +type OptionalAll313 = { [K in keyof Combined313]?: Combined313[K] }; +type RequiredAll313 = { [K in keyof Combined313]-?: Combined313[K] }; +type ReadonlyAll313 = { readonly [K in keyof Combined313]: Combined313[K] }; +type NullableAll313 = { [K in keyof Combined313]: Combined313[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString313 = T extends string ? true : false; +type IsNumber313 = T extends number ? true : false; +type TypeName313 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames313 = { + [K in keyof BigRecord313]: TypeName313; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb313 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource313 = "user" | "post" | "comment" | "tag" | "category"; +type Action313 = `${Verb313}_${Resource313}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise313 = T extends Promise ? UnwrapPromise313 : T; +type UnwrapArray313 = T extends (infer U)[] ? UnwrapArray313 : T; +type Head313 = T extends [infer H, ...infer _] ? H : never; +type Tail313 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation313 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation313>] + : never; + +type SmallUnion313 = "a" | "b" | "c" | "d"; +type AllPerms313 = Permutation313; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig313, + Flat313, + FR313, + BigUnion313, + ExtractAlpha313, + ExcludeZulu313, + OptionalAll313, + RequiredAll313, + ReadonlyAll313, + NullableAll313, + TypeNames313, + Action313, + AllPerms313, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts new file mode 100644 index 00000000..35f1ade3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-14 (seed 314) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord314 { + a314: { x: number; y: string; z: boolean }; + b314: { p: string[]; q: Record }; + c314: { nested: { deep: { deeper: { deepest: string } } } }; + d314: number; + e314: string; + f314: boolean; + g314: null; + h314: undefined; + i314: bigint; + j314: symbol; +} + +type PartialBig314 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten314 = T extends Array ? Flatten314 : T; +type Nested314 = number[][][][][][][][][][]; +type Flat314 = Flatten314; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly314 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly314 : T[K]; +}; +type DeepRequired314 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired314 : T[K]; +}; +type FR314 = DeepReadonly314>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion314 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha314 = Extract; +type ExcludeZulu314 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA314 { width: number; height: number; depth: number } +interface ShapeB314 { color: string; opacity: number; blend: string } +interface ShapeC314 { x: number; y: number; z: number; w: number } +interface ShapeD314 { label: string; title: string; summary: string } + +type Combined314 = ShapeA314 & ShapeB314 & ShapeC314 & ShapeD314; +type OptionalAll314 = { [K in keyof Combined314]?: Combined314[K] }; +type RequiredAll314 = { [K in keyof Combined314]-?: Combined314[K] }; +type ReadonlyAll314 = { readonly [K in keyof Combined314]: Combined314[K] }; +type NullableAll314 = { [K in keyof Combined314]: Combined314[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString314 = T extends string ? true : false; +type IsNumber314 = T extends number ? true : false; +type TypeName314 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames314 = { + [K in keyof BigRecord314]: TypeName314; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb314 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource314 = "user" | "post" | "comment" | "tag" | "category"; +type Action314 = `${Verb314}_${Resource314}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise314 = T extends Promise ? UnwrapPromise314 : T; +type UnwrapArray314 = T extends (infer U)[] ? UnwrapArray314 : T; +type Head314 = T extends [infer H, ...infer _] ? H : never; +type Tail314 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation314 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation314>] + : never; + +type SmallUnion314 = "a" | "b" | "c" | "d"; +type AllPerms314 = Permutation314; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig314, + Flat314, + FR314, + BigUnion314, + ExtractAlpha314, + ExcludeZulu314, + OptionalAll314, + RequiredAll314, + ReadonlyAll314, + NullableAll314, + TypeNames314, + Action314, + AllPerms314, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts new file mode 100644 index 00000000..a0b3994c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-15 (seed 315) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord315 { + a315: { x: number; y: string; z: boolean }; + b315: { p: string[]; q: Record }; + c315: { nested: { deep: { deeper: { deepest: string } } } }; + d315: number; + e315: string; + f315: boolean; + g315: null; + h315: undefined; + i315: bigint; + j315: symbol; +} + +type PartialBig315 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten315 = T extends Array ? Flatten315 : T; +type Nested315 = number[][][][][][][][][][]; +type Flat315 = Flatten315; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly315 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly315 : T[K]; +}; +type DeepRequired315 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired315 : T[K]; +}; +type FR315 = DeepReadonly315>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion315 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha315 = Extract; +type ExcludeZulu315 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA315 { width: number; height: number; depth: number } +interface ShapeB315 { color: string; opacity: number; blend: string } +interface ShapeC315 { x: number; y: number; z: number; w: number } +interface ShapeD315 { label: string; title: string; summary: string } + +type Combined315 = ShapeA315 & ShapeB315 & ShapeC315 & ShapeD315; +type OptionalAll315 = { [K in keyof Combined315]?: Combined315[K] }; +type RequiredAll315 = { [K in keyof Combined315]-?: Combined315[K] }; +type ReadonlyAll315 = { readonly [K in keyof Combined315]: Combined315[K] }; +type NullableAll315 = { [K in keyof Combined315]: Combined315[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString315 = T extends string ? true : false; +type IsNumber315 = T extends number ? true : false; +type TypeName315 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames315 = { + [K in keyof BigRecord315]: TypeName315; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb315 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource315 = "user" | "post" | "comment" | "tag" | "category"; +type Action315 = `${Verb315}_${Resource315}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise315 = T extends Promise ? UnwrapPromise315 : T; +type UnwrapArray315 = T extends (infer U)[] ? UnwrapArray315 : T; +type Head315 = T extends [infer H, ...infer _] ? H : never; +type Tail315 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation315 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation315>] + : never; + +type SmallUnion315 = "a" | "b" | "c" | "d"; +type AllPerms315 = Permutation315; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig315, + Flat315, + FR315, + BigUnion315, + ExtractAlpha315, + ExcludeZulu315, + OptionalAll315, + RequiredAll315, + ReadonlyAll315, + NullableAll315, + TypeNames315, + Action315, + AllPerms315, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts new file mode 100644 index 00000000..48e8cbd8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-16 (seed 316) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord316 { + a316: { x: number; y: string; z: boolean }; + b316: { p: string[]; q: Record }; + c316: { nested: { deep: { deeper: { deepest: string } } } }; + d316: number; + e316: string; + f316: boolean; + g316: null; + h316: undefined; + i316: bigint; + j316: symbol; +} + +type PartialBig316 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten316 = T extends Array ? Flatten316 : T; +type Nested316 = number[][][][][][][][][][]; +type Flat316 = Flatten316; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly316 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly316 : T[K]; +}; +type DeepRequired316 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired316 : T[K]; +}; +type FR316 = DeepReadonly316>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion316 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha316 = Extract; +type ExcludeZulu316 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA316 { width: number; height: number; depth: number } +interface ShapeB316 { color: string; opacity: number; blend: string } +interface ShapeC316 { x: number; y: number; z: number; w: number } +interface ShapeD316 { label: string; title: string; summary: string } + +type Combined316 = ShapeA316 & ShapeB316 & ShapeC316 & ShapeD316; +type OptionalAll316 = { [K in keyof Combined316]?: Combined316[K] }; +type RequiredAll316 = { [K in keyof Combined316]-?: Combined316[K] }; +type ReadonlyAll316 = { readonly [K in keyof Combined316]: Combined316[K] }; +type NullableAll316 = { [K in keyof Combined316]: Combined316[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString316 = T extends string ? true : false; +type IsNumber316 = T extends number ? true : false; +type TypeName316 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames316 = { + [K in keyof BigRecord316]: TypeName316; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb316 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource316 = "user" | "post" | "comment" | "tag" | "category"; +type Action316 = `${Verb316}_${Resource316}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise316 = T extends Promise ? UnwrapPromise316 : T; +type UnwrapArray316 = T extends (infer U)[] ? UnwrapArray316 : T; +type Head316 = T extends [infer H, ...infer _] ? H : never; +type Tail316 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation316 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation316>] + : never; + +type SmallUnion316 = "a" | "b" | "c" | "d"; +type AllPerms316 = Permutation316; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig316, + Flat316, + FR316, + BigUnion316, + ExtractAlpha316, + ExcludeZulu316, + OptionalAll316, + RequiredAll316, + ReadonlyAll316, + NullableAll316, + TypeNames316, + Action316, + AllPerms316, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts new file mode 100644 index 00000000..45d999c6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-17 (seed 317) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord317 { + a317: { x: number; y: string; z: boolean }; + b317: { p: string[]; q: Record }; + c317: { nested: { deep: { deeper: { deepest: string } } } }; + d317: number; + e317: string; + f317: boolean; + g317: null; + h317: undefined; + i317: bigint; + j317: symbol; +} + +type PartialBig317 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten317 = T extends Array ? Flatten317 : T; +type Nested317 = number[][][][][][][][][][]; +type Flat317 = Flatten317; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly317 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly317 : T[K]; +}; +type DeepRequired317 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired317 : T[K]; +}; +type FR317 = DeepReadonly317>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion317 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha317 = Extract; +type ExcludeZulu317 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA317 { width: number; height: number; depth: number } +interface ShapeB317 { color: string; opacity: number; blend: string } +interface ShapeC317 { x: number; y: number; z: number; w: number } +interface ShapeD317 { label: string; title: string; summary: string } + +type Combined317 = ShapeA317 & ShapeB317 & ShapeC317 & ShapeD317; +type OptionalAll317 = { [K in keyof Combined317]?: Combined317[K] }; +type RequiredAll317 = { [K in keyof Combined317]-?: Combined317[K] }; +type ReadonlyAll317 = { readonly [K in keyof Combined317]: Combined317[K] }; +type NullableAll317 = { [K in keyof Combined317]: Combined317[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString317 = T extends string ? true : false; +type IsNumber317 = T extends number ? true : false; +type TypeName317 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames317 = { + [K in keyof BigRecord317]: TypeName317; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb317 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource317 = "user" | "post" | "comment" | "tag" | "category"; +type Action317 = `${Verb317}_${Resource317}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise317 = T extends Promise ? UnwrapPromise317 : T; +type UnwrapArray317 = T extends (infer U)[] ? UnwrapArray317 : T; +type Head317 = T extends [infer H, ...infer _] ? H : never; +type Tail317 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation317 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation317>] + : never; + +type SmallUnion317 = "a" | "b" | "c" | "d"; +type AllPerms317 = Permutation317; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig317, + Flat317, + FR317, + BigUnion317, + ExtractAlpha317, + ExcludeZulu317, + OptionalAll317, + RequiredAll317, + ReadonlyAll317, + NullableAll317, + TypeNames317, + Action317, + AllPerms317, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts new file mode 100644 index 00000000..9e52641d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-18 (seed 318) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord318 { + a318: { x: number; y: string; z: boolean }; + b318: { p: string[]; q: Record }; + c318: { nested: { deep: { deeper: { deepest: string } } } }; + d318: number; + e318: string; + f318: boolean; + g318: null; + h318: undefined; + i318: bigint; + j318: symbol; +} + +type PartialBig318 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten318 = T extends Array ? Flatten318 : T; +type Nested318 = number[][][][][][][][][][]; +type Flat318 = Flatten318; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly318 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly318 : T[K]; +}; +type DeepRequired318 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired318 : T[K]; +}; +type FR318 = DeepReadonly318>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion318 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha318 = Extract; +type ExcludeZulu318 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA318 { width: number; height: number; depth: number } +interface ShapeB318 { color: string; opacity: number; blend: string } +interface ShapeC318 { x: number; y: number; z: number; w: number } +interface ShapeD318 { label: string; title: string; summary: string } + +type Combined318 = ShapeA318 & ShapeB318 & ShapeC318 & ShapeD318; +type OptionalAll318 = { [K in keyof Combined318]?: Combined318[K] }; +type RequiredAll318 = { [K in keyof Combined318]-?: Combined318[K] }; +type ReadonlyAll318 = { readonly [K in keyof Combined318]: Combined318[K] }; +type NullableAll318 = { [K in keyof Combined318]: Combined318[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString318 = T extends string ? true : false; +type IsNumber318 = T extends number ? true : false; +type TypeName318 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames318 = { + [K in keyof BigRecord318]: TypeName318; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb318 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource318 = "user" | "post" | "comment" | "tag" | "category"; +type Action318 = `${Verb318}_${Resource318}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise318 = T extends Promise ? UnwrapPromise318 : T; +type UnwrapArray318 = T extends (infer U)[] ? UnwrapArray318 : T; +type Head318 = T extends [infer H, ...infer _] ? H : never; +type Tail318 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation318 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation318>] + : never; + +type SmallUnion318 = "a" | "b" | "c" | "d"; +type AllPerms318 = Permutation318; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig318, + Flat318, + FR318, + BigUnion318, + ExtractAlpha318, + ExcludeZulu318, + OptionalAll318, + RequiredAll318, + ReadonlyAll318, + NullableAll318, + TypeNames318, + Action318, + AllPerms318, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts new file mode 100644 index 00000000..49f0fe30 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-19 (seed 319) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord319 { + a319: { x: number; y: string; z: boolean }; + b319: { p: string[]; q: Record }; + c319: { nested: { deep: { deeper: { deepest: string } } } }; + d319: number; + e319: string; + f319: boolean; + g319: null; + h319: undefined; + i319: bigint; + j319: symbol; +} + +type PartialBig319 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten319 = T extends Array ? Flatten319 : T; +type Nested319 = number[][][][][][][][][][]; +type Flat319 = Flatten319; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly319 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly319 : T[K]; +}; +type DeepRequired319 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired319 : T[K]; +}; +type FR319 = DeepReadonly319>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion319 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha319 = Extract; +type ExcludeZulu319 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA319 { width: number; height: number; depth: number } +interface ShapeB319 { color: string; opacity: number; blend: string } +interface ShapeC319 { x: number; y: number; z: number; w: number } +interface ShapeD319 { label: string; title: string; summary: string } + +type Combined319 = ShapeA319 & ShapeB319 & ShapeC319 & ShapeD319; +type OptionalAll319 = { [K in keyof Combined319]?: Combined319[K] }; +type RequiredAll319 = { [K in keyof Combined319]-?: Combined319[K] }; +type ReadonlyAll319 = { readonly [K in keyof Combined319]: Combined319[K] }; +type NullableAll319 = { [K in keyof Combined319]: Combined319[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString319 = T extends string ? true : false; +type IsNumber319 = T extends number ? true : false; +type TypeName319 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames319 = { + [K in keyof BigRecord319]: TypeName319; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb319 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource319 = "user" | "post" | "comment" | "tag" | "category"; +type Action319 = `${Verb319}_${Resource319}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise319 = T extends Promise ? UnwrapPromise319 : T; +type UnwrapArray319 = T extends (infer U)[] ? UnwrapArray319 : T; +type Head319 = T extends [infer H, ...infer _] ? H : never; +type Tail319 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation319 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation319>] + : never; + +type SmallUnion319 = "a" | "b" | "c" | "d"; +type AllPerms319 = Permutation319; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig319, + Flat319, + FR319, + BigUnion319, + ExtractAlpha319, + ExcludeZulu319, + OptionalAll319, + RequiredAll319, + ReadonlyAll319, + NullableAll319, + TypeNames319, + Action319, + AllPerms319, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts new file mode 100644 index 00000000..99ba0cd1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-20 (seed 320) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord320 { + a320: { x: number; y: string; z: boolean }; + b320: { p: string[]; q: Record }; + c320: { nested: { deep: { deeper: { deepest: string } } } }; + d320: number; + e320: string; + f320: boolean; + g320: null; + h320: undefined; + i320: bigint; + j320: symbol; +} + +type PartialBig320 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten320 = T extends Array ? Flatten320 : T; +type Nested320 = number[][][][][][][][][][]; +type Flat320 = Flatten320; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly320 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly320 : T[K]; +}; +type DeepRequired320 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired320 : T[K]; +}; +type FR320 = DeepReadonly320>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion320 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha320 = Extract; +type ExcludeZulu320 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA320 { width: number; height: number; depth: number } +interface ShapeB320 { color: string; opacity: number; blend: string } +interface ShapeC320 { x: number; y: number; z: number; w: number } +interface ShapeD320 { label: string; title: string; summary: string } + +type Combined320 = ShapeA320 & ShapeB320 & ShapeC320 & ShapeD320; +type OptionalAll320 = { [K in keyof Combined320]?: Combined320[K] }; +type RequiredAll320 = { [K in keyof Combined320]-?: Combined320[K] }; +type ReadonlyAll320 = { readonly [K in keyof Combined320]: Combined320[K] }; +type NullableAll320 = { [K in keyof Combined320]: Combined320[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString320 = T extends string ? true : false; +type IsNumber320 = T extends number ? true : false; +type TypeName320 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames320 = { + [K in keyof BigRecord320]: TypeName320; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb320 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource320 = "user" | "post" | "comment" | "tag" | "category"; +type Action320 = `${Verb320}_${Resource320}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise320 = T extends Promise ? UnwrapPromise320 : T; +type UnwrapArray320 = T extends (infer U)[] ? UnwrapArray320 : T; +type Head320 = T extends [infer H, ...infer _] ? H : never; +type Tail320 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation320 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation320>] + : never; + +type SmallUnion320 = "a" | "b" | "c" | "d"; +type AllPerms320 = Permutation320; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig320, + Flat320, + FR320, + BigUnion320, + ExtractAlpha320, + ExcludeZulu320, + OptionalAll320, + RequiredAll320, + ReadonlyAll320, + NullableAll320, + TypeNames320, + Action320, + AllPerms320, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts new file mode 100644 index 00000000..9cb4c1bf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-21 (seed 321) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord321 { + a321: { x: number; y: string; z: boolean }; + b321: { p: string[]; q: Record }; + c321: { nested: { deep: { deeper: { deepest: string } } } }; + d321: number; + e321: string; + f321: boolean; + g321: null; + h321: undefined; + i321: bigint; + j321: symbol; +} + +type PartialBig321 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten321 = T extends Array ? Flatten321 : T; +type Nested321 = number[][][][][][][][][][]; +type Flat321 = Flatten321; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly321 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly321 : T[K]; +}; +type DeepRequired321 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired321 : T[K]; +}; +type FR321 = DeepReadonly321>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion321 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha321 = Extract; +type ExcludeZulu321 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA321 { width: number; height: number; depth: number } +interface ShapeB321 { color: string; opacity: number; blend: string } +interface ShapeC321 { x: number; y: number; z: number; w: number } +interface ShapeD321 { label: string; title: string; summary: string } + +type Combined321 = ShapeA321 & ShapeB321 & ShapeC321 & ShapeD321; +type OptionalAll321 = { [K in keyof Combined321]?: Combined321[K] }; +type RequiredAll321 = { [K in keyof Combined321]-?: Combined321[K] }; +type ReadonlyAll321 = { readonly [K in keyof Combined321]: Combined321[K] }; +type NullableAll321 = { [K in keyof Combined321]: Combined321[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString321 = T extends string ? true : false; +type IsNumber321 = T extends number ? true : false; +type TypeName321 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames321 = { + [K in keyof BigRecord321]: TypeName321; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb321 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource321 = "user" | "post" | "comment" | "tag" | "category"; +type Action321 = `${Verb321}_${Resource321}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise321 = T extends Promise ? UnwrapPromise321 : T; +type UnwrapArray321 = T extends (infer U)[] ? UnwrapArray321 : T; +type Head321 = T extends [infer H, ...infer _] ? H : never; +type Tail321 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation321 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation321>] + : never; + +type SmallUnion321 = "a" | "b" | "c" | "d"; +type AllPerms321 = Permutation321; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig321, + Flat321, + FR321, + BigUnion321, + ExtractAlpha321, + ExcludeZulu321, + OptionalAll321, + RequiredAll321, + ReadonlyAll321, + NullableAll321, + TypeNames321, + Action321, + AllPerms321, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts new file mode 100644 index 00000000..d12eff34 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-22 (seed 322) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord322 { + a322: { x: number; y: string; z: boolean }; + b322: { p: string[]; q: Record }; + c322: { nested: { deep: { deeper: { deepest: string } } } }; + d322: number; + e322: string; + f322: boolean; + g322: null; + h322: undefined; + i322: bigint; + j322: symbol; +} + +type PartialBig322 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten322 = T extends Array ? Flatten322 : T; +type Nested322 = number[][][][][][][][][][]; +type Flat322 = Flatten322; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly322 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly322 : T[K]; +}; +type DeepRequired322 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired322 : T[K]; +}; +type FR322 = DeepReadonly322>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion322 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha322 = Extract; +type ExcludeZulu322 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA322 { width: number; height: number; depth: number } +interface ShapeB322 { color: string; opacity: number; blend: string } +interface ShapeC322 { x: number; y: number; z: number; w: number } +interface ShapeD322 { label: string; title: string; summary: string } + +type Combined322 = ShapeA322 & ShapeB322 & ShapeC322 & ShapeD322; +type OptionalAll322 = { [K in keyof Combined322]?: Combined322[K] }; +type RequiredAll322 = { [K in keyof Combined322]-?: Combined322[K] }; +type ReadonlyAll322 = { readonly [K in keyof Combined322]: Combined322[K] }; +type NullableAll322 = { [K in keyof Combined322]: Combined322[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString322 = T extends string ? true : false; +type IsNumber322 = T extends number ? true : false; +type TypeName322 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames322 = { + [K in keyof BigRecord322]: TypeName322; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb322 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource322 = "user" | "post" | "comment" | "tag" | "category"; +type Action322 = `${Verb322}_${Resource322}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise322 = T extends Promise ? UnwrapPromise322 : T; +type UnwrapArray322 = T extends (infer U)[] ? UnwrapArray322 : T; +type Head322 = T extends [infer H, ...infer _] ? H : never; +type Tail322 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation322 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation322>] + : never; + +type SmallUnion322 = "a" | "b" | "c" | "d"; +type AllPerms322 = Permutation322; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig322, + Flat322, + FR322, + BigUnion322, + ExtractAlpha322, + ExcludeZulu322, + OptionalAll322, + RequiredAll322, + ReadonlyAll322, + NullableAll322, + TypeNames322, + Action322, + AllPerms322, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts new file mode 100644 index 00000000..1aa0daff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-23 (seed 323) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord323 { + a323: { x: number; y: string; z: boolean }; + b323: { p: string[]; q: Record }; + c323: { nested: { deep: { deeper: { deepest: string } } } }; + d323: number; + e323: string; + f323: boolean; + g323: null; + h323: undefined; + i323: bigint; + j323: symbol; +} + +type PartialBig323 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten323 = T extends Array ? Flatten323 : T; +type Nested323 = number[][][][][][][][][][]; +type Flat323 = Flatten323; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly323 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly323 : T[K]; +}; +type DeepRequired323 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired323 : T[K]; +}; +type FR323 = DeepReadonly323>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion323 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha323 = Extract; +type ExcludeZulu323 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA323 { width: number; height: number; depth: number } +interface ShapeB323 { color: string; opacity: number; blend: string } +interface ShapeC323 { x: number; y: number; z: number; w: number } +interface ShapeD323 { label: string; title: string; summary: string } + +type Combined323 = ShapeA323 & ShapeB323 & ShapeC323 & ShapeD323; +type OptionalAll323 = { [K in keyof Combined323]?: Combined323[K] }; +type RequiredAll323 = { [K in keyof Combined323]-?: Combined323[K] }; +type ReadonlyAll323 = { readonly [K in keyof Combined323]: Combined323[K] }; +type NullableAll323 = { [K in keyof Combined323]: Combined323[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString323 = T extends string ? true : false; +type IsNumber323 = T extends number ? true : false; +type TypeName323 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames323 = { + [K in keyof BigRecord323]: TypeName323; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb323 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource323 = "user" | "post" | "comment" | "tag" | "category"; +type Action323 = `${Verb323}_${Resource323}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise323 = T extends Promise ? UnwrapPromise323 : T; +type UnwrapArray323 = T extends (infer U)[] ? UnwrapArray323 : T; +type Head323 = T extends [infer H, ...infer _] ? H : never; +type Tail323 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation323 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation323>] + : never; + +type SmallUnion323 = "a" | "b" | "c" | "d"; +type AllPerms323 = Permutation323; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig323, + Flat323, + FR323, + BigUnion323, + ExtractAlpha323, + ExcludeZulu323, + OptionalAll323, + RequiredAll323, + ReadonlyAll323, + NullableAll323, + TypeNames323, + Action323, + AllPerms323, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts new file mode 100644 index 00000000..d08b92d4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-24 (seed 324) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord324 { + a324: { x: number; y: string; z: boolean }; + b324: { p: string[]; q: Record }; + c324: { nested: { deep: { deeper: { deepest: string } } } }; + d324: number; + e324: string; + f324: boolean; + g324: null; + h324: undefined; + i324: bigint; + j324: symbol; +} + +type PartialBig324 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten324 = T extends Array ? Flatten324 : T; +type Nested324 = number[][][][][][][][][][]; +type Flat324 = Flatten324; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly324 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly324 : T[K]; +}; +type DeepRequired324 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired324 : T[K]; +}; +type FR324 = DeepReadonly324>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion324 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha324 = Extract; +type ExcludeZulu324 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA324 { width: number; height: number; depth: number } +interface ShapeB324 { color: string; opacity: number; blend: string } +interface ShapeC324 { x: number; y: number; z: number; w: number } +interface ShapeD324 { label: string; title: string; summary: string } + +type Combined324 = ShapeA324 & ShapeB324 & ShapeC324 & ShapeD324; +type OptionalAll324 = { [K in keyof Combined324]?: Combined324[K] }; +type RequiredAll324 = { [K in keyof Combined324]-?: Combined324[K] }; +type ReadonlyAll324 = { readonly [K in keyof Combined324]: Combined324[K] }; +type NullableAll324 = { [K in keyof Combined324]: Combined324[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString324 = T extends string ? true : false; +type IsNumber324 = T extends number ? true : false; +type TypeName324 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames324 = { + [K in keyof BigRecord324]: TypeName324; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb324 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource324 = "user" | "post" | "comment" | "tag" | "category"; +type Action324 = `${Verb324}_${Resource324}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise324 = T extends Promise ? UnwrapPromise324 : T; +type UnwrapArray324 = T extends (infer U)[] ? UnwrapArray324 : T; +type Head324 = T extends [infer H, ...infer _] ? H : never; +type Tail324 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation324 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation324>] + : never; + +type SmallUnion324 = "a" | "b" | "c" | "d"; +type AllPerms324 = Permutation324; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig324, + Flat324, + FR324, + BigUnion324, + ExtractAlpha324, + ExcludeZulu324, + OptionalAll324, + RequiredAll324, + ReadonlyAll324, + NullableAll324, + TypeNames324, + Action324, + AllPerms324, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts new file mode 100644 index 00000000..81b1d024 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-25 (seed 325) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord325 { + a325: { x: number; y: string; z: boolean }; + b325: { p: string[]; q: Record }; + c325: { nested: { deep: { deeper: { deepest: string } } } }; + d325: number; + e325: string; + f325: boolean; + g325: null; + h325: undefined; + i325: bigint; + j325: symbol; +} + +type PartialBig325 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten325 = T extends Array ? Flatten325 : T; +type Nested325 = number[][][][][][][][][][]; +type Flat325 = Flatten325; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly325 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly325 : T[K]; +}; +type DeepRequired325 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired325 : T[K]; +}; +type FR325 = DeepReadonly325>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion325 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha325 = Extract; +type ExcludeZulu325 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA325 { width: number; height: number; depth: number } +interface ShapeB325 { color: string; opacity: number; blend: string } +interface ShapeC325 { x: number; y: number; z: number; w: number } +interface ShapeD325 { label: string; title: string; summary: string } + +type Combined325 = ShapeA325 & ShapeB325 & ShapeC325 & ShapeD325; +type OptionalAll325 = { [K in keyof Combined325]?: Combined325[K] }; +type RequiredAll325 = { [K in keyof Combined325]-?: Combined325[K] }; +type ReadonlyAll325 = { readonly [K in keyof Combined325]: Combined325[K] }; +type NullableAll325 = { [K in keyof Combined325]: Combined325[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString325 = T extends string ? true : false; +type IsNumber325 = T extends number ? true : false; +type TypeName325 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames325 = { + [K in keyof BigRecord325]: TypeName325; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb325 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource325 = "user" | "post" | "comment" | "tag" | "category"; +type Action325 = `${Verb325}_${Resource325}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise325 = T extends Promise ? UnwrapPromise325 : T; +type UnwrapArray325 = T extends (infer U)[] ? UnwrapArray325 : T; +type Head325 = T extends [infer H, ...infer _] ? H : never; +type Tail325 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation325 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation325>] + : never; + +type SmallUnion325 = "a" | "b" | "c" | "d"; +type AllPerms325 = Permutation325; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig325, + Flat325, + FR325, + BigUnion325, + ExtractAlpha325, + ExcludeZulu325, + OptionalAll325, + RequiredAll325, + ReadonlyAll325, + NullableAll325, + TypeNames325, + Action325, + AllPerms325, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts new file mode 100644 index 00000000..00b8714a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-26 (seed 326) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord326 { + a326: { x: number; y: string; z: boolean }; + b326: { p: string[]; q: Record }; + c326: { nested: { deep: { deeper: { deepest: string } } } }; + d326: number; + e326: string; + f326: boolean; + g326: null; + h326: undefined; + i326: bigint; + j326: symbol; +} + +type PartialBig326 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten326 = T extends Array ? Flatten326 : T; +type Nested326 = number[][][][][][][][][][]; +type Flat326 = Flatten326; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly326 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly326 : T[K]; +}; +type DeepRequired326 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired326 : T[K]; +}; +type FR326 = DeepReadonly326>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion326 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha326 = Extract; +type ExcludeZulu326 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA326 { width: number; height: number; depth: number } +interface ShapeB326 { color: string; opacity: number; blend: string } +interface ShapeC326 { x: number; y: number; z: number; w: number } +interface ShapeD326 { label: string; title: string; summary: string } + +type Combined326 = ShapeA326 & ShapeB326 & ShapeC326 & ShapeD326; +type OptionalAll326 = { [K in keyof Combined326]?: Combined326[K] }; +type RequiredAll326 = { [K in keyof Combined326]-?: Combined326[K] }; +type ReadonlyAll326 = { readonly [K in keyof Combined326]: Combined326[K] }; +type NullableAll326 = { [K in keyof Combined326]: Combined326[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString326 = T extends string ? true : false; +type IsNumber326 = T extends number ? true : false; +type TypeName326 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames326 = { + [K in keyof BigRecord326]: TypeName326; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb326 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource326 = "user" | "post" | "comment" | "tag" | "category"; +type Action326 = `${Verb326}_${Resource326}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise326 = T extends Promise ? UnwrapPromise326 : T; +type UnwrapArray326 = T extends (infer U)[] ? UnwrapArray326 : T; +type Head326 = T extends [infer H, ...infer _] ? H : never; +type Tail326 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation326 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation326>] + : never; + +type SmallUnion326 = "a" | "b" | "c" | "d"; +type AllPerms326 = Permutation326; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig326, + Flat326, + FR326, + BigUnion326, + ExtractAlpha326, + ExcludeZulu326, + OptionalAll326, + RequiredAll326, + ReadonlyAll326, + NullableAll326, + TypeNames326, + Action326, + AllPerms326, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts new file mode 100644 index 00000000..5c73aa7f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-27 (seed 327) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord327 { + a327: { x: number; y: string; z: boolean }; + b327: { p: string[]; q: Record }; + c327: { nested: { deep: { deeper: { deepest: string } } } }; + d327: number; + e327: string; + f327: boolean; + g327: null; + h327: undefined; + i327: bigint; + j327: symbol; +} + +type PartialBig327 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten327 = T extends Array ? Flatten327 : T; +type Nested327 = number[][][][][][][][][][]; +type Flat327 = Flatten327; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly327 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly327 : T[K]; +}; +type DeepRequired327 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired327 : T[K]; +}; +type FR327 = DeepReadonly327>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion327 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha327 = Extract; +type ExcludeZulu327 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA327 { width: number; height: number; depth: number } +interface ShapeB327 { color: string; opacity: number; blend: string } +interface ShapeC327 { x: number; y: number; z: number; w: number } +interface ShapeD327 { label: string; title: string; summary: string } + +type Combined327 = ShapeA327 & ShapeB327 & ShapeC327 & ShapeD327; +type OptionalAll327 = { [K in keyof Combined327]?: Combined327[K] }; +type RequiredAll327 = { [K in keyof Combined327]-?: Combined327[K] }; +type ReadonlyAll327 = { readonly [K in keyof Combined327]: Combined327[K] }; +type NullableAll327 = { [K in keyof Combined327]: Combined327[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString327 = T extends string ? true : false; +type IsNumber327 = T extends number ? true : false; +type TypeName327 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames327 = { + [K in keyof BigRecord327]: TypeName327; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb327 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource327 = "user" | "post" | "comment" | "tag" | "category"; +type Action327 = `${Verb327}_${Resource327}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise327 = T extends Promise ? UnwrapPromise327 : T; +type UnwrapArray327 = T extends (infer U)[] ? UnwrapArray327 : T; +type Head327 = T extends [infer H, ...infer _] ? H : never; +type Tail327 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation327 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation327>] + : never; + +type SmallUnion327 = "a" | "b" | "c" | "d"; +type AllPerms327 = Permutation327; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig327, + Flat327, + FR327, + BigUnion327, + ExtractAlpha327, + ExcludeZulu327, + OptionalAll327, + RequiredAll327, + ReadonlyAll327, + NullableAll327, + TypeNames327, + Action327, + AllPerms327, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts new file mode 100644 index 00000000..e21c1bc2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-28 (seed 328) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord328 { + a328: { x: number; y: string; z: boolean }; + b328: { p: string[]; q: Record }; + c328: { nested: { deep: { deeper: { deepest: string } } } }; + d328: number; + e328: string; + f328: boolean; + g328: null; + h328: undefined; + i328: bigint; + j328: symbol; +} + +type PartialBig328 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten328 = T extends Array ? Flatten328 : T; +type Nested328 = number[][][][][][][][][][]; +type Flat328 = Flatten328; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly328 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly328 : T[K]; +}; +type DeepRequired328 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired328 : T[K]; +}; +type FR328 = DeepReadonly328>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion328 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha328 = Extract; +type ExcludeZulu328 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA328 { width: number; height: number; depth: number } +interface ShapeB328 { color: string; opacity: number; blend: string } +interface ShapeC328 { x: number; y: number; z: number; w: number } +interface ShapeD328 { label: string; title: string; summary: string } + +type Combined328 = ShapeA328 & ShapeB328 & ShapeC328 & ShapeD328; +type OptionalAll328 = { [K in keyof Combined328]?: Combined328[K] }; +type RequiredAll328 = { [K in keyof Combined328]-?: Combined328[K] }; +type ReadonlyAll328 = { readonly [K in keyof Combined328]: Combined328[K] }; +type NullableAll328 = { [K in keyof Combined328]: Combined328[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString328 = T extends string ? true : false; +type IsNumber328 = T extends number ? true : false; +type TypeName328 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames328 = { + [K in keyof BigRecord328]: TypeName328; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb328 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource328 = "user" | "post" | "comment" | "tag" | "category"; +type Action328 = `${Verb328}_${Resource328}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise328 = T extends Promise ? UnwrapPromise328 : T; +type UnwrapArray328 = T extends (infer U)[] ? UnwrapArray328 : T; +type Head328 = T extends [infer H, ...infer _] ? H : never; +type Tail328 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation328 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation328>] + : never; + +type SmallUnion328 = "a" | "b" | "c" | "d"; +type AllPerms328 = Permutation328; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig328, + Flat328, + FR328, + BigUnion328, + ExtractAlpha328, + ExcludeZulu328, + OptionalAll328, + RequiredAll328, + ReadonlyAll328, + NullableAll328, + TypeNames328, + Action328, + AllPerms328, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts new file mode 100644 index 00000000..5806a0aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-29 (seed 329) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord329 { + a329: { x: number; y: string; z: boolean }; + b329: { p: string[]; q: Record }; + c329: { nested: { deep: { deeper: { deepest: string } } } }; + d329: number; + e329: string; + f329: boolean; + g329: null; + h329: undefined; + i329: bigint; + j329: symbol; +} + +type PartialBig329 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten329 = T extends Array ? Flatten329 : T; +type Nested329 = number[][][][][][][][][][]; +type Flat329 = Flatten329; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly329 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly329 : T[K]; +}; +type DeepRequired329 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired329 : T[K]; +}; +type FR329 = DeepReadonly329>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion329 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha329 = Extract; +type ExcludeZulu329 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA329 { width: number; height: number; depth: number } +interface ShapeB329 { color: string; opacity: number; blend: string } +interface ShapeC329 { x: number; y: number; z: number; w: number } +interface ShapeD329 { label: string; title: string; summary: string } + +type Combined329 = ShapeA329 & ShapeB329 & ShapeC329 & ShapeD329; +type OptionalAll329 = { [K in keyof Combined329]?: Combined329[K] }; +type RequiredAll329 = { [K in keyof Combined329]-?: Combined329[K] }; +type ReadonlyAll329 = { readonly [K in keyof Combined329]: Combined329[K] }; +type NullableAll329 = { [K in keyof Combined329]: Combined329[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString329 = T extends string ? true : false; +type IsNumber329 = T extends number ? true : false; +type TypeName329 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames329 = { + [K in keyof BigRecord329]: TypeName329; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb329 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource329 = "user" | "post" | "comment" | "tag" | "category"; +type Action329 = `${Verb329}_${Resource329}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise329 = T extends Promise ? UnwrapPromise329 : T; +type UnwrapArray329 = T extends (infer U)[] ? UnwrapArray329 : T; +type Head329 = T extends [infer H, ...infer _] ? H : never; +type Tail329 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation329 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation329>] + : never; + +type SmallUnion329 = "a" | "b" | "c" | "d"; +type AllPerms329 = Permutation329; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig329, + Flat329, + FR329, + BigUnion329, + ExtractAlpha329, + ExcludeZulu329, + OptionalAll329, + RequiredAll329, + ReadonlyAll329, + NullableAll329, + TypeNames329, + Action329, + AllPerms329, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts new file mode 100644 index 00000000..0f66c14b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-30 (seed 330) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord330 { + a330: { x: number; y: string; z: boolean }; + b330: { p: string[]; q: Record }; + c330: { nested: { deep: { deeper: { deepest: string } } } }; + d330: number; + e330: string; + f330: boolean; + g330: null; + h330: undefined; + i330: bigint; + j330: symbol; +} + +type PartialBig330 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten330 = T extends Array ? Flatten330 : T; +type Nested330 = number[][][][][][][][][][]; +type Flat330 = Flatten330; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly330 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly330 : T[K]; +}; +type DeepRequired330 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired330 : T[K]; +}; +type FR330 = DeepReadonly330>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion330 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha330 = Extract; +type ExcludeZulu330 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA330 { width: number; height: number; depth: number } +interface ShapeB330 { color: string; opacity: number; blend: string } +interface ShapeC330 { x: number; y: number; z: number; w: number } +interface ShapeD330 { label: string; title: string; summary: string } + +type Combined330 = ShapeA330 & ShapeB330 & ShapeC330 & ShapeD330; +type OptionalAll330 = { [K in keyof Combined330]?: Combined330[K] }; +type RequiredAll330 = { [K in keyof Combined330]-?: Combined330[K] }; +type ReadonlyAll330 = { readonly [K in keyof Combined330]: Combined330[K] }; +type NullableAll330 = { [K in keyof Combined330]: Combined330[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString330 = T extends string ? true : false; +type IsNumber330 = T extends number ? true : false; +type TypeName330 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames330 = { + [K in keyof BigRecord330]: TypeName330; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb330 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource330 = "user" | "post" | "comment" | "tag" | "category"; +type Action330 = `${Verb330}_${Resource330}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise330 = T extends Promise ? UnwrapPromise330 : T; +type UnwrapArray330 = T extends (infer U)[] ? UnwrapArray330 : T; +type Head330 = T extends [infer H, ...infer _] ? H : never; +type Tail330 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation330 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation330>] + : never; + +type SmallUnion330 = "a" | "b" | "c" | "d"; +type AllPerms330 = Permutation330; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig330, + Flat330, + FR330, + BigUnion330, + ExtractAlpha330, + ExcludeZulu330, + OptionalAll330, + RequiredAll330, + ReadonlyAll330, + NullableAll330, + TypeNames330, + Action330, + AllPerms330, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts new file mode 100644 index 00000000..79021e4f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-31 (seed 331) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord331 { + a331: { x: number; y: string; z: boolean }; + b331: { p: string[]; q: Record }; + c331: { nested: { deep: { deeper: { deepest: string } } } }; + d331: number; + e331: string; + f331: boolean; + g331: null; + h331: undefined; + i331: bigint; + j331: symbol; +} + +type PartialBig331 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten331 = T extends Array ? Flatten331 : T; +type Nested331 = number[][][][][][][][][][]; +type Flat331 = Flatten331; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly331 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly331 : T[K]; +}; +type DeepRequired331 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired331 : T[K]; +}; +type FR331 = DeepReadonly331>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion331 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha331 = Extract; +type ExcludeZulu331 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA331 { width: number; height: number; depth: number } +interface ShapeB331 { color: string; opacity: number; blend: string } +interface ShapeC331 { x: number; y: number; z: number; w: number } +interface ShapeD331 { label: string; title: string; summary: string } + +type Combined331 = ShapeA331 & ShapeB331 & ShapeC331 & ShapeD331; +type OptionalAll331 = { [K in keyof Combined331]?: Combined331[K] }; +type RequiredAll331 = { [K in keyof Combined331]-?: Combined331[K] }; +type ReadonlyAll331 = { readonly [K in keyof Combined331]: Combined331[K] }; +type NullableAll331 = { [K in keyof Combined331]: Combined331[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString331 = T extends string ? true : false; +type IsNumber331 = T extends number ? true : false; +type TypeName331 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames331 = { + [K in keyof BigRecord331]: TypeName331; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb331 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource331 = "user" | "post" | "comment" | "tag" | "category"; +type Action331 = `${Verb331}_${Resource331}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise331 = T extends Promise ? UnwrapPromise331 : T; +type UnwrapArray331 = T extends (infer U)[] ? UnwrapArray331 : T; +type Head331 = T extends [infer H, ...infer _] ? H : never; +type Tail331 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation331 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation331>] + : never; + +type SmallUnion331 = "a" | "b" | "c" | "d"; +type AllPerms331 = Permutation331; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig331, + Flat331, + FR331, + BigUnion331, + ExtractAlpha331, + ExcludeZulu331, + OptionalAll331, + RequiredAll331, + ReadonlyAll331, + NullableAll331, + TypeNames331, + Action331, + AllPerms331, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts new file mode 100644 index 00000000..93c37b82 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-32 (seed 332) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord332 { + a332: { x: number; y: string; z: boolean }; + b332: { p: string[]; q: Record }; + c332: { nested: { deep: { deeper: { deepest: string } } } }; + d332: number; + e332: string; + f332: boolean; + g332: null; + h332: undefined; + i332: bigint; + j332: symbol; +} + +type PartialBig332 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten332 = T extends Array ? Flatten332 : T; +type Nested332 = number[][][][][][][][][][]; +type Flat332 = Flatten332; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly332 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly332 : T[K]; +}; +type DeepRequired332 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired332 : T[K]; +}; +type FR332 = DeepReadonly332>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion332 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha332 = Extract; +type ExcludeZulu332 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA332 { width: number; height: number; depth: number } +interface ShapeB332 { color: string; opacity: number; blend: string } +interface ShapeC332 { x: number; y: number; z: number; w: number } +interface ShapeD332 { label: string; title: string; summary: string } + +type Combined332 = ShapeA332 & ShapeB332 & ShapeC332 & ShapeD332; +type OptionalAll332 = { [K in keyof Combined332]?: Combined332[K] }; +type RequiredAll332 = { [K in keyof Combined332]-?: Combined332[K] }; +type ReadonlyAll332 = { readonly [K in keyof Combined332]: Combined332[K] }; +type NullableAll332 = { [K in keyof Combined332]: Combined332[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString332 = T extends string ? true : false; +type IsNumber332 = T extends number ? true : false; +type TypeName332 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames332 = { + [K in keyof BigRecord332]: TypeName332; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb332 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource332 = "user" | "post" | "comment" | "tag" | "category"; +type Action332 = `${Verb332}_${Resource332}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise332 = T extends Promise ? UnwrapPromise332 : T; +type UnwrapArray332 = T extends (infer U)[] ? UnwrapArray332 : T; +type Head332 = T extends [infer H, ...infer _] ? H : never; +type Tail332 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation332 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation332>] + : never; + +type SmallUnion332 = "a" | "b" | "c" | "d"; +type AllPerms332 = Permutation332; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig332, + Flat332, + FR332, + BigUnion332, + ExtractAlpha332, + ExcludeZulu332, + OptionalAll332, + RequiredAll332, + ReadonlyAll332, + NullableAll332, + TypeNames332, + Action332, + AllPerms332, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts new file mode 100644 index 00000000..72a79500 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-33 (seed 333) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord333 { + a333: { x: number; y: string; z: boolean }; + b333: { p: string[]; q: Record }; + c333: { nested: { deep: { deeper: { deepest: string } } } }; + d333: number; + e333: string; + f333: boolean; + g333: null; + h333: undefined; + i333: bigint; + j333: symbol; +} + +type PartialBig333 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten333 = T extends Array ? Flatten333 : T; +type Nested333 = number[][][][][][][][][][]; +type Flat333 = Flatten333; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly333 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly333 : T[K]; +}; +type DeepRequired333 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired333 : T[K]; +}; +type FR333 = DeepReadonly333>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion333 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha333 = Extract; +type ExcludeZulu333 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA333 { width: number; height: number; depth: number } +interface ShapeB333 { color: string; opacity: number; blend: string } +interface ShapeC333 { x: number; y: number; z: number; w: number } +interface ShapeD333 { label: string; title: string; summary: string } + +type Combined333 = ShapeA333 & ShapeB333 & ShapeC333 & ShapeD333; +type OptionalAll333 = { [K in keyof Combined333]?: Combined333[K] }; +type RequiredAll333 = { [K in keyof Combined333]-?: Combined333[K] }; +type ReadonlyAll333 = { readonly [K in keyof Combined333]: Combined333[K] }; +type NullableAll333 = { [K in keyof Combined333]: Combined333[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString333 = T extends string ? true : false; +type IsNumber333 = T extends number ? true : false; +type TypeName333 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames333 = { + [K in keyof BigRecord333]: TypeName333; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb333 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource333 = "user" | "post" | "comment" | "tag" | "category"; +type Action333 = `${Verb333}_${Resource333}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise333 = T extends Promise ? UnwrapPromise333 : T; +type UnwrapArray333 = T extends (infer U)[] ? UnwrapArray333 : T; +type Head333 = T extends [infer H, ...infer _] ? H : never; +type Tail333 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation333 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation333>] + : never; + +type SmallUnion333 = "a" | "b" | "c" | "d"; +type AllPerms333 = Permutation333; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig333, + Flat333, + FR333, + BigUnion333, + ExtractAlpha333, + ExcludeZulu333, + OptionalAll333, + RequiredAll333, + ReadonlyAll333, + NullableAll333, + TypeNames333, + Action333, + AllPerms333, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts new file mode 100644 index 00000000..22d7be1d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-34 (seed 334) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord334 { + a334: { x: number; y: string; z: boolean }; + b334: { p: string[]; q: Record }; + c334: { nested: { deep: { deeper: { deepest: string } } } }; + d334: number; + e334: string; + f334: boolean; + g334: null; + h334: undefined; + i334: bigint; + j334: symbol; +} + +type PartialBig334 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten334 = T extends Array ? Flatten334 : T; +type Nested334 = number[][][][][][][][][][]; +type Flat334 = Flatten334; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly334 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly334 : T[K]; +}; +type DeepRequired334 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired334 : T[K]; +}; +type FR334 = DeepReadonly334>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion334 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha334 = Extract; +type ExcludeZulu334 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA334 { width: number; height: number; depth: number } +interface ShapeB334 { color: string; opacity: number; blend: string } +interface ShapeC334 { x: number; y: number; z: number; w: number } +interface ShapeD334 { label: string; title: string; summary: string } + +type Combined334 = ShapeA334 & ShapeB334 & ShapeC334 & ShapeD334; +type OptionalAll334 = { [K in keyof Combined334]?: Combined334[K] }; +type RequiredAll334 = { [K in keyof Combined334]-?: Combined334[K] }; +type ReadonlyAll334 = { readonly [K in keyof Combined334]: Combined334[K] }; +type NullableAll334 = { [K in keyof Combined334]: Combined334[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString334 = T extends string ? true : false; +type IsNumber334 = T extends number ? true : false; +type TypeName334 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames334 = { + [K in keyof BigRecord334]: TypeName334; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb334 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource334 = "user" | "post" | "comment" | "tag" | "category"; +type Action334 = `${Verb334}_${Resource334}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise334 = T extends Promise ? UnwrapPromise334 : T; +type UnwrapArray334 = T extends (infer U)[] ? UnwrapArray334 : T; +type Head334 = T extends [infer H, ...infer _] ? H : never; +type Tail334 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation334 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation334>] + : never; + +type SmallUnion334 = "a" | "b" | "c" | "d"; +type AllPerms334 = Permutation334; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig334, + Flat334, + FR334, + BigUnion334, + ExtractAlpha334, + ExcludeZulu334, + OptionalAll334, + RequiredAll334, + ReadonlyAll334, + NullableAll334, + TypeNames334, + Action334, + AllPerms334, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts new file mode 100644 index 00000000..d4ef9e5d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-35 (seed 335) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord335 { + a335: { x: number; y: string; z: boolean }; + b335: { p: string[]; q: Record }; + c335: { nested: { deep: { deeper: { deepest: string } } } }; + d335: number; + e335: string; + f335: boolean; + g335: null; + h335: undefined; + i335: bigint; + j335: symbol; +} + +type PartialBig335 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten335 = T extends Array ? Flatten335 : T; +type Nested335 = number[][][][][][][][][][]; +type Flat335 = Flatten335; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly335 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly335 : T[K]; +}; +type DeepRequired335 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired335 : T[K]; +}; +type FR335 = DeepReadonly335>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion335 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha335 = Extract; +type ExcludeZulu335 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA335 { width: number; height: number; depth: number } +interface ShapeB335 { color: string; opacity: number; blend: string } +interface ShapeC335 { x: number; y: number; z: number; w: number } +interface ShapeD335 { label: string; title: string; summary: string } + +type Combined335 = ShapeA335 & ShapeB335 & ShapeC335 & ShapeD335; +type OptionalAll335 = { [K in keyof Combined335]?: Combined335[K] }; +type RequiredAll335 = { [K in keyof Combined335]-?: Combined335[K] }; +type ReadonlyAll335 = { readonly [K in keyof Combined335]: Combined335[K] }; +type NullableAll335 = { [K in keyof Combined335]: Combined335[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString335 = T extends string ? true : false; +type IsNumber335 = T extends number ? true : false; +type TypeName335 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames335 = { + [K in keyof BigRecord335]: TypeName335; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb335 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource335 = "user" | "post" | "comment" | "tag" | "category"; +type Action335 = `${Verb335}_${Resource335}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise335 = T extends Promise ? UnwrapPromise335 : T; +type UnwrapArray335 = T extends (infer U)[] ? UnwrapArray335 : T; +type Head335 = T extends [infer H, ...infer _] ? H : never; +type Tail335 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation335 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation335>] + : never; + +type SmallUnion335 = "a" | "b" | "c" | "d"; +type AllPerms335 = Permutation335; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig335, + Flat335, + FR335, + BigUnion335, + ExtractAlpha335, + ExcludeZulu335, + OptionalAll335, + RequiredAll335, + ReadonlyAll335, + NullableAll335, + TypeNames335, + Action335, + AllPerms335, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts new file mode 100644 index 00000000..5535de13 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-36 (seed 336) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord336 { + a336: { x: number; y: string; z: boolean }; + b336: { p: string[]; q: Record }; + c336: { nested: { deep: { deeper: { deepest: string } } } }; + d336: number; + e336: string; + f336: boolean; + g336: null; + h336: undefined; + i336: bigint; + j336: symbol; +} + +type PartialBig336 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten336 = T extends Array ? Flatten336 : T; +type Nested336 = number[][][][][][][][][][]; +type Flat336 = Flatten336; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly336 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly336 : T[K]; +}; +type DeepRequired336 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired336 : T[K]; +}; +type FR336 = DeepReadonly336>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion336 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha336 = Extract; +type ExcludeZulu336 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA336 { width: number; height: number; depth: number } +interface ShapeB336 { color: string; opacity: number; blend: string } +interface ShapeC336 { x: number; y: number; z: number; w: number } +interface ShapeD336 { label: string; title: string; summary: string } + +type Combined336 = ShapeA336 & ShapeB336 & ShapeC336 & ShapeD336; +type OptionalAll336 = { [K in keyof Combined336]?: Combined336[K] }; +type RequiredAll336 = { [K in keyof Combined336]-?: Combined336[K] }; +type ReadonlyAll336 = { readonly [K in keyof Combined336]: Combined336[K] }; +type NullableAll336 = { [K in keyof Combined336]: Combined336[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString336 = T extends string ? true : false; +type IsNumber336 = T extends number ? true : false; +type TypeName336 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames336 = { + [K in keyof BigRecord336]: TypeName336; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb336 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource336 = "user" | "post" | "comment" | "tag" | "category"; +type Action336 = `${Verb336}_${Resource336}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise336 = T extends Promise ? UnwrapPromise336 : T; +type UnwrapArray336 = T extends (infer U)[] ? UnwrapArray336 : T; +type Head336 = T extends [infer H, ...infer _] ? H : never; +type Tail336 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation336 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation336>] + : never; + +type SmallUnion336 = "a" | "b" | "c" | "d"; +type AllPerms336 = Permutation336; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig336, + Flat336, + FR336, + BigUnion336, + ExtractAlpha336, + ExcludeZulu336, + OptionalAll336, + RequiredAll336, + ReadonlyAll336, + NullableAll336, + TypeNames336, + Action336, + AllPerms336, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts new file mode 100644 index 00000000..e93866c6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-37 (seed 337) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord337 { + a337: { x: number; y: string; z: boolean }; + b337: { p: string[]; q: Record }; + c337: { nested: { deep: { deeper: { deepest: string } } } }; + d337: number; + e337: string; + f337: boolean; + g337: null; + h337: undefined; + i337: bigint; + j337: symbol; +} + +type PartialBig337 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten337 = T extends Array ? Flatten337 : T; +type Nested337 = number[][][][][][][][][][]; +type Flat337 = Flatten337; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly337 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly337 : T[K]; +}; +type DeepRequired337 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired337 : T[K]; +}; +type FR337 = DeepReadonly337>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion337 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha337 = Extract; +type ExcludeZulu337 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA337 { width: number; height: number; depth: number } +interface ShapeB337 { color: string; opacity: number; blend: string } +interface ShapeC337 { x: number; y: number; z: number; w: number } +interface ShapeD337 { label: string; title: string; summary: string } + +type Combined337 = ShapeA337 & ShapeB337 & ShapeC337 & ShapeD337; +type OptionalAll337 = { [K in keyof Combined337]?: Combined337[K] }; +type RequiredAll337 = { [K in keyof Combined337]-?: Combined337[K] }; +type ReadonlyAll337 = { readonly [K in keyof Combined337]: Combined337[K] }; +type NullableAll337 = { [K in keyof Combined337]: Combined337[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString337 = T extends string ? true : false; +type IsNumber337 = T extends number ? true : false; +type TypeName337 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames337 = { + [K in keyof BigRecord337]: TypeName337; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb337 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource337 = "user" | "post" | "comment" | "tag" | "category"; +type Action337 = `${Verb337}_${Resource337}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise337 = T extends Promise ? UnwrapPromise337 : T; +type UnwrapArray337 = T extends (infer U)[] ? UnwrapArray337 : T; +type Head337 = T extends [infer H, ...infer _] ? H : never; +type Tail337 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation337 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation337>] + : never; + +type SmallUnion337 = "a" | "b" | "c" | "d"; +type AllPerms337 = Permutation337; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig337, + Flat337, + FR337, + BigUnion337, + ExtractAlpha337, + ExcludeZulu337, + OptionalAll337, + RequiredAll337, + ReadonlyAll337, + NullableAll337, + TypeNames337, + Action337, + AllPerms337, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts new file mode 100644 index 00000000..8b41be50 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-38 (seed 338) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord338 { + a338: { x: number; y: string; z: boolean }; + b338: { p: string[]; q: Record }; + c338: { nested: { deep: { deeper: { deepest: string } } } }; + d338: number; + e338: string; + f338: boolean; + g338: null; + h338: undefined; + i338: bigint; + j338: symbol; +} + +type PartialBig338 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten338 = T extends Array ? Flatten338 : T; +type Nested338 = number[][][][][][][][][][]; +type Flat338 = Flatten338; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly338 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly338 : T[K]; +}; +type DeepRequired338 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired338 : T[K]; +}; +type FR338 = DeepReadonly338>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion338 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha338 = Extract; +type ExcludeZulu338 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA338 { width: number; height: number; depth: number } +interface ShapeB338 { color: string; opacity: number; blend: string } +interface ShapeC338 { x: number; y: number; z: number; w: number } +interface ShapeD338 { label: string; title: string; summary: string } + +type Combined338 = ShapeA338 & ShapeB338 & ShapeC338 & ShapeD338; +type OptionalAll338 = { [K in keyof Combined338]?: Combined338[K] }; +type RequiredAll338 = { [K in keyof Combined338]-?: Combined338[K] }; +type ReadonlyAll338 = { readonly [K in keyof Combined338]: Combined338[K] }; +type NullableAll338 = { [K in keyof Combined338]: Combined338[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString338 = T extends string ? true : false; +type IsNumber338 = T extends number ? true : false; +type TypeName338 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames338 = { + [K in keyof BigRecord338]: TypeName338; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb338 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource338 = "user" | "post" | "comment" | "tag" | "category"; +type Action338 = `${Verb338}_${Resource338}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise338 = T extends Promise ? UnwrapPromise338 : T; +type UnwrapArray338 = T extends (infer U)[] ? UnwrapArray338 : T; +type Head338 = T extends [infer H, ...infer _] ? H : never; +type Tail338 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation338 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation338>] + : never; + +type SmallUnion338 = "a" | "b" | "c" | "d"; +type AllPerms338 = Permutation338; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig338, + Flat338, + FR338, + BigUnion338, + ExtractAlpha338, + ExcludeZulu338, + OptionalAll338, + RequiredAll338, + ReadonlyAll338, + NullableAll338, + TypeNames338, + Action338, + AllPerms338, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts new file mode 100644 index 00000000..7a667ec9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-39 (seed 339) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord339 { + a339: { x: number; y: string; z: boolean }; + b339: { p: string[]; q: Record }; + c339: { nested: { deep: { deeper: { deepest: string } } } }; + d339: number; + e339: string; + f339: boolean; + g339: null; + h339: undefined; + i339: bigint; + j339: symbol; +} + +type PartialBig339 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten339 = T extends Array ? Flatten339 : T; +type Nested339 = number[][][][][][][][][][]; +type Flat339 = Flatten339; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly339 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly339 : T[K]; +}; +type DeepRequired339 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired339 : T[K]; +}; +type FR339 = DeepReadonly339>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion339 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha339 = Extract; +type ExcludeZulu339 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA339 { width: number; height: number; depth: number } +interface ShapeB339 { color: string; opacity: number; blend: string } +interface ShapeC339 { x: number; y: number; z: number; w: number } +interface ShapeD339 { label: string; title: string; summary: string } + +type Combined339 = ShapeA339 & ShapeB339 & ShapeC339 & ShapeD339; +type OptionalAll339 = { [K in keyof Combined339]?: Combined339[K] }; +type RequiredAll339 = { [K in keyof Combined339]-?: Combined339[K] }; +type ReadonlyAll339 = { readonly [K in keyof Combined339]: Combined339[K] }; +type NullableAll339 = { [K in keyof Combined339]: Combined339[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString339 = T extends string ? true : false; +type IsNumber339 = T extends number ? true : false; +type TypeName339 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames339 = { + [K in keyof BigRecord339]: TypeName339; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb339 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource339 = "user" | "post" | "comment" | "tag" | "category"; +type Action339 = `${Verb339}_${Resource339}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise339 = T extends Promise ? UnwrapPromise339 : T; +type UnwrapArray339 = T extends (infer U)[] ? UnwrapArray339 : T; +type Head339 = T extends [infer H, ...infer _] ? H : never; +type Tail339 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation339 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation339>] + : never; + +type SmallUnion339 = "a" | "b" | "c" | "d"; +type AllPerms339 = Permutation339; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig339, + Flat339, + FR339, + BigUnion339, + ExtractAlpha339, + ExcludeZulu339, + OptionalAll339, + RequiredAll339, + ReadonlyAll339, + NullableAll339, + TypeNames339, + Action339, + AllPerms339, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts new file mode 100644 index 00000000..e901686f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-40 (seed 340) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord340 { + a340: { x: number; y: string; z: boolean }; + b340: { p: string[]; q: Record }; + c340: { nested: { deep: { deeper: { deepest: string } } } }; + d340: number; + e340: string; + f340: boolean; + g340: null; + h340: undefined; + i340: bigint; + j340: symbol; +} + +type PartialBig340 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten340 = T extends Array ? Flatten340 : T; +type Nested340 = number[][][][][][][][][][]; +type Flat340 = Flatten340; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly340 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly340 : T[K]; +}; +type DeepRequired340 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired340 : T[K]; +}; +type FR340 = DeepReadonly340>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion340 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha340 = Extract; +type ExcludeZulu340 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA340 { width: number; height: number; depth: number } +interface ShapeB340 { color: string; opacity: number; blend: string } +interface ShapeC340 { x: number; y: number; z: number; w: number } +interface ShapeD340 { label: string; title: string; summary: string } + +type Combined340 = ShapeA340 & ShapeB340 & ShapeC340 & ShapeD340; +type OptionalAll340 = { [K in keyof Combined340]?: Combined340[K] }; +type RequiredAll340 = { [K in keyof Combined340]-?: Combined340[K] }; +type ReadonlyAll340 = { readonly [K in keyof Combined340]: Combined340[K] }; +type NullableAll340 = { [K in keyof Combined340]: Combined340[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString340 = T extends string ? true : false; +type IsNumber340 = T extends number ? true : false; +type TypeName340 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames340 = { + [K in keyof BigRecord340]: TypeName340; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb340 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource340 = "user" | "post" | "comment" | "tag" | "category"; +type Action340 = `${Verb340}_${Resource340}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise340 = T extends Promise ? UnwrapPromise340 : T; +type UnwrapArray340 = T extends (infer U)[] ? UnwrapArray340 : T; +type Head340 = T extends [infer H, ...infer _] ? H : never; +type Tail340 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation340 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation340>] + : never; + +type SmallUnion340 = "a" | "b" | "c" | "d"; +type AllPerms340 = Permutation340; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig340, + Flat340, + FR340, + BigUnion340, + ExtractAlpha340, + ExcludeZulu340, + OptionalAll340, + RequiredAll340, + ReadonlyAll340, + NullableAll340, + TypeNames340, + Action340, + AllPerms340, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts new file mode 100644 index 00000000..6b45373b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-41 (seed 341) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord341 { + a341: { x: number; y: string; z: boolean }; + b341: { p: string[]; q: Record }; + c341: { nested: { deep: { deeper: { deepest: string } } } }; + d341: number; + e341: string; + f341: boolean; + g341: null; + h341: undefined; + i341: bigint; + j341: symbol; +} + +type PartialBig341 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten341 = T extends Array ? Flatten341 : T; +type Nested341 = number[][][][][][][][][][]; +type Flat341 = Flatten341; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly341 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly341 : T[K]; +}; +type DeepRequired341 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired341 : T[K]; +}; +type FR341 = DeepReadonly341>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion341 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha341 = Extract; +type ExcludeZulu341 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA341 { width: number; height: number; depth: number } +interface ShapeB341 { color: string; opacity: number; blend: string } +interface ShapeC341 { x: number; y: number; z: number; w: number } +interface ShapeD341 { label: string; title: string; summary: string } + +type Combined341 = ShapeA341 & ShapeB341 & ShapeC341 & ShapeD341; +type OptionalAll341 = { [K in keyof Combined341]?: Combined341[K] }; +type RequiredAll341 = { [K in keyof Combined341]-?: Combined341[K] }; +type ReadonlyAll341 = { readonly [K in keyof Combined341]: Combined341[K] }; +type NullableAll341 = { [K in keyof Combined341]: Combined341[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString341 = T extends string ? true : false; +type IsNumber341 = T extends number ? true : false; +type TypeName341 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames341 = { + [K in keyof BigRecord341]: TypeName341; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb341 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource341 = "user" | "post" | "comment" | "tag" | "category"; +type Action341 = `${Verb341}_${Resource341}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise341 = T extends Promise ? UnwrapPromise341 : T; +type UnwrapArray341 = T extends (infer U)[] ? UnwrapArray341 : T; +type Head341 = T extends [infer H, ...infer _] ? H : never; +type Tail341 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation341 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation341>] + : never; + +type SmallUnion341 = "a" | "b" | "c" | "d"; +type AllPerms341 = Permutation341; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig341, + Flat341, + FR341, + BigUnion341, + ExtractAlpha341, + ExcludeZulu341, + OptionalAll341, + RequiredAll341, + ReadonlyAll341, + NullableAll341, + TypeNames341, + Action341, + AllPerms341, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts new file mode 100644 index 00000000..eb08ee58 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-42 (seed 342) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord342 { + a342: { x: number; y: string; z: boolean }; + b342: { p: string[]; q: Record }; + c342: { nested: { deep: { deeper: { deepest: string } } } }; + d342: number; + e342: string; + f342: boolean; + g342: null; + h342: undefined; + i342: bigint; + j342: symbol; +} + +type PartialBig342 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten342 = T extends Array ? Flatten342 : T; +type Nested342 = number[][][][][][][][][][]; +type Flat342 = Flatten342; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly342 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly342 : T[K]; +}; +type DeepRequired342 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired342 : T[K]; +}; +type FR342 = DeepReadonly342>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion342 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha342 = Extract; +type ExcludeZulu342 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA342 { width: number; height: number; depth: number } +interface ShapeB342 { color: string; opacity: number; blend: string } +interface ShapeC342 { x: number; y: number; z: number; w: number } +interface ShapeD342 { label: string; title: string; summary: string } + +type Combined342 = ShapeA342 & ShapeB342 & ShapeC342 & ShapeD342; +type OptionalAll342 = { [K in keyof Combined342]?: Combined342[K] }; +type RequiredAll342 = { [K in keyof Combined342]-?: Combined342[K] }; +type ReadonlyAll342 = { readonly [K in keyof Combined342]: Combined342[K] }; +type NullableAll342 = { [K in keyof Combined342]: Combined342[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString342 = T extends string ? true : false; +type IsNumber342 = T extends number ? true : false; +type TypeName342 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames342 = { + [K in keyof BigRecord342]: TypeName342; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb342 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource342 = "user" | "post" | "comment" | "tag" | "category"; +type Action342 = `${Verb342}_${Resource342}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise342 = T extends Promise ? UnwrapPromise342 : T; +type UnwrapArray342 = T extends (infer U)[] ? UnwrapArray342 : T; +type Head342 = T extends [infer H, ...infer _] ? H : never; +type Tail342 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation342 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation342>] + : never; + +type SmallUnion342 = "a" | "b" | "c" | "d"; +type AllPerms342 = Permutation342; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig342, + Flat342, + FR342, + BigUnion342, + ExtractAlpha342, + ExcludeZulu342, + OptionalAll342, + RequiredAll342, + ReadonlyAll342, + NullableAll342, + TypeNames342, + Action342, + AllPerms342, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts new file mode 100644 index 00000000..5463a5df --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-43 (seed 343) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord343 { + a343: { x: number; y: string; z: boolean }; + b343: { p: string[]; q: Record }; + c343: { nested: { deep: { deeper: { deepest: string } } } }; + d343: number; + e343: string; + f343: boolean; + g343: null; + h343: undefined; + i343: bigint; + j343: symbol; +} + +type PartialBig343 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten343 = T extends Array ? Flatten343 : T; +type Nested343 = number[][][][][][][][][][]; +type Flat343 = Flatten343; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly343 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly343 : T[K]; +}; +type DeepRequired343 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired343 : T[K]; +}; +type FR343 = DeepReadonly343>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion343 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha343 = Extract; +type ExcludeZulu343 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA343 { width: number; height: number; depth: number } +interface ShapeB343 { color: string; opacity: number; blend: string } +interface ShapeC343 { x: number; y: number; z: number; w: number } +interface ShapeD343 { label: string; title: string; summary: string } + +type Combined343 = ShapeA343 & ShapeB343 & ShapeC343 & ShapeD343; +type OptionalAll343 = { [K in keyof Combined343]?: Combined343[K] }; +type RequiredAll343 = { [K in keyof Combined343]-?: Combined343[K] }; +type ReadonlyAll343 = { readonly [K in keyof Combined343]: Combined343[K] }; +type NullableAll343 = { [K in keyof Combined343]: Combined343[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString343 = T extends string ? true : false; +type IsNumber343 = T extends number ? true : false; +type TypeName343 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames343 = { + [K in keyof BigRecord343]: TypeName343; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb343 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource343 = "user" | "post" | "comment" | "tag" | "category"; +type Action343 = `${Verb343}_${Resource343}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise343 = T extends Promise ? UnwrapPromise343 : T; +type UnwrapArray343 = T extends (infer U)[] ? UnwrapArray343 : T; +type Head343 = T extends [infer H, ...infer _] ? H : never; +type Tail343 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation343 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation343>] + : never; + +type SmallUnion343 = "a" | "b" | "c" | "d"; +type AllPerms343 = Permutation343; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig343, + Flat343, + FR343, + BigUnion343, + ExtractAlpha343, + ExcludeZulu343, + OptionalAll343, + RequiredAll343, + ReadonlyAll343, + NullableAll343, + TypeNames343, + Action343, + AllPerms343, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts new file mode 100644 index 00000000..a831a492 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-44 (seed 344) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord344 { + a344: { x: number; y: string; z: boolean }; + b344: { p: string[]; q: Record }; + c344: { nested: { deep: { deeper: { deepest: string } } } }; + d344: number; + e344: string; + f344: boolean; + g344: null; + h344: undefined; + i344: bigint; + j344: symbol; +} + +type PartialBig344 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten344 = T extends Array ? Flatten344 : T; +type Nested344 = number[][][][][][][][][][]; +type Flat344 = Flatten344; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly344 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly344 : T[K]; +}; +type DeepRequired344 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired344 : T[K]; +}; +type FR344 = DeepReadonly344>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion344 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha344 = Extract; +type ExcludeZulu344 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA344 { width: number; height: number; depth: number } +interface ShapeB344 { color: string; opacity: number; blend: string } +interface ShapeC344 { x: number; y: number; z: number; w: number } +interface ShapeD344 { label: string; title: string; summary: string } + +type Combined344 = ShapeA344 & ShapeB344 & ShapeC344 & ShapeD344; +type OptionalAll344 = { [K in keyof Combined344]?: Combined344[K] }; +type RequiredAll344 = { [K in keyof Combined344]-?: Combined344[K] }; +type ReadonlyAll344 = { readonly [K in keyof Combined344]: Combined344[K] }; +type NullableAll344 = { [K in keyof Combined344]: Combined344[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString344 = T extends string ? true : false; +type IsNumber344 = T extends number ? true : false; +type TypeName344 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames344 = { + [K in keyof BigRecord344]: TypeName344; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb344 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource344 = "user" | "post" | "comment" | "tag" | "category"; +type Action344 = `${Verb344}_${Resource344}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise344 = T extends Promise ? UnwrapPromise344 : T; +type UnwrapArray344 = T extends (infer U)[] ? UnwrapArray344 : T; +type Head344 = T extends [infer H, ...infer _] ? H : never; +type Tail344 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation344 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation344>] + : never; + +type SmallUnion344 = "a" | "b" | "c" | "d"; +type AllPerms344 = Permutation344; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig344, + Flat344, + FR344, + BigUnion344, + ExtractAlpha344, + ExcludeZulu344, + OptionalAll344, + RequiredAll344, + ReadonlyAll344, + NullableAll344, + TypeNames344, + Action344, + AllPerms344, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts new file mode 100644 index 00000000..59df2730 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-45 (seed 345) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord345 { + a345: { x: number; y: string; z: boolean }; + b345: { p: string[]; q: Record }; + c345: { nested: { deep: { deeper: { deepest: string } } } }; + d345: number; + e345: string; + f345: boolean; + g345: null; + h345: undefined; + i345: bigint; + j345: symbol; +} + +type PartialBig345 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten345 = T extends Array ? Flatten345 : T; +type Nested345 = number[][][][][][][][][][]; +type Flat345 = Flatten345; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly345 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly345 : T[K]; +}; +type DeepRequired345 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired345 : T[K]; +}; +type FR345 = DeepReadonly345>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion345 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha345 = Extract; +type ExcludeZulu345 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA345 { width: number; height: number; depth: number } +interface ShapeB345 { color: string; opacity: number; blend: string } +interface ShapeC345 { x: number; y: number; z: number; w: number } +interface ShapeD345 { label: string; title: string; summary: string } + +type Combined345 = ShapeA345 & ShapeB345 & ShapeC345 & ShapeD345; +type OptionalAll345 = { [K in keyof Combined345]?: Combined345[K] }; +type RequiredAll345 = { [K in keyof Combined345]-?: Combined345[K] }; +type ReadonlyAll345 = { readonly [K in keyof Combined345]: Combined345[K] }; +type NullableAll345 = { [K in keyof Combined345]: Combined345[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString345 = T extends string ? true : false; +type IsNumber345 = T extends number ? true : false; +type TypeName345 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames345 = { + [K in keyof BigRecord345]: TypeName345; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb345 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource345 = "user" | "post" | "comment" | "tag" | "category"; +type Action345 = `${Verb345}_${Resource345}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise345 = T extends Promise ? UnwrapPromise345 : T; +type UnwrapArray345 = T extends (infer U)[] ? UnwrapArray345 : T; +type Head345 = T extends [infer H, ...infer _] ? H : never; +type Tail345 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation345 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation345>] + : never; + +type SmallUnion345 = "a" | "b" | "c" | "d"; +type AllPerms345 = Permutation345; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig345, + Flat345, + FR345, + BigUnion345, + ExtractAlpha345, + ExcludeZulu345, + OptionalAll345, + RequiredAll345, + ReadonlyAll345, + NullableAll345, + TypeNames345, + Action345, + AllPerms345, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts new file mode 100644 index 00000000..b3a5de26 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-46 (seed 346) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord346 { + a346: { x: number; y: string; z: boolean }; + b346: { p: string[]; q: Record }; + c346: { nested: { deep: { deeper: { deepest: string } } } }; + d346: number; + e346: string; + f346: boolean; + g346: null; + h346: undefined; + i346: bigint; + j346: symbol; +} + +type PartialBig346 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten346 = T extends Array ? Flatten346 : T; +type Nested346 = number[][][][][][][][][][]; +type Flat346 = Flatten346; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly346 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly346 : T[K]; +}; +type DeepRequired346 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired346 : T[K]; +}; +type FR346 = DeepReadonly346>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion346 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha346 = Extract; +type ExcludeZulu346 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA346 { width: number; height: number; depth: number } +interface ShapeB346 { color: string; opacity: number; blend: string } +interface ShapeC346 { x: number; y: number; z: number; w: number } +interface ShapeD346 { label: string; title: string; summary: string } + +type Combined346 = ShapeA346 & ShapeB346 & ShapeC346 & ShapeD346; +type OptionalAll346 = { [K in keyof Combined346]?: Combined346[K] }; +type RequiredAll346 = { [K in keyof Combined346]-?: Combined346[K] }; +type ReadonlyAll346 = { readonly [K in keyof Combined346]: Combined346[K] }; +type NullableAll346 = { [K in keyof Combined346]: Combined346[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString346 = T extends string ? true : false; +type IsNumber346 = T extends number ? true : false; +type TypeName346 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames346 = { + [K in keyof BigRecord346]: TypeName346; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb346 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource346 = "user" | "post" | "comment" | "tag" | "category"; +type Action346 = `${Verb346}_${Resource346}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise346 = T extends Promise ? UnwrapPromise346 : T; +type UnwrapArray346 = T extends (infer U)[] ? UnwrapArray346 : T; +type Head346 = T extends [infer H, ...infer _] ? H : never; +type Tail346 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation346 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation346>] + : never; + +type SmallUnion346 = "a" | "b" | "c" | "d"; +type AllPerms346 = Permutation346; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig346, + Flat346, + FR346, + BigUnion346, + ExtractAlpha346, + ExcludeZulu346, + OptionalAll346, + RequiredAll346, + ReadonlyAll346, + NullableAll346, + TypeNames346, + Action346, + AllPerms346, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts new file mode 100644 index 00000000..2d6efdd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-47 (seed 347) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord347 { + a347: { x: number; y: string; z: boolean }; + b347: { p: string[]; q: Record }; + c347: { nested: { deep: { deeper: { deepest: string } } } }; + d347: number; + e347: string; + f347: boolean; + g347: null; + h347: undefined; + i347: bigint; + j347: symbol; +} + +type PartialBig347 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten347 = T extends Array ? Flatten347 : T; +type Nested347 = number[][][][][][][][][][]; +type Flat347 = Flatten347; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly347 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly347 : T[K]; +}; +type DeepRequired347 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired347 : T[K]; +}; +type FR347 = DeepReadonly347>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion347 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha347 = Extract; +type ExcludeZulu347 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA347 { width: number; height: number; depth: number } +interface ShapeB347 { color: string; opacity: number; blend: string } +interface ShapeC347 { x: number; y: number; z: number; w: number } +interface ShapeD347 { label: string; title: string; summary: string } + +type Combined347 = ShapeA347 & ShapeB347 & ShapeC347 & ShapeD347; +type OptionalAll347 = { [K in keyof Combined347]?: Combined347[K] }; +type RequiredAll347 = { [K in keyof Combined347]-?: Combined347[K] }; +type ReadonlyAll347 = { readonly [K in keyof Combined347]: Combined347[K] }; +type NullableAll347 = { [K in keyof Combined347]: Combined347[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString347 = T extends string ? true : false; +type IsNumber347 = T extends number ? true : false; +type TypeName347 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames347 = { + [K in keyof BigRecord347]: TypeName347; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb347 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource347 = "user" | "post" | "comment" | "tag" | "category"; +type Action347 = `${Verb347}_${Resource347}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise347 = T extends Promise ? UnwrapPromise347 : T; +type UnwrapArray347 = T extends (infer U)[] ? UnwrapArray347 : T; +type Head347 = T extends [infer H, ...infer _] ? H : never; +type Tail347 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation347 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation347>] + : never; + +type SmallUnion347 = "a" | "b" | "c" | "d"; +type AllPerms347 = Permutation347; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig347, + Flat347, + FR347, + BigUnion347, + ExtractAlpha347, + ExcludeZulu347, + OptionalAll347, + RequiredAll347, + ReadonlyAll347, + NullableAll347, + TypeNames347, + Action347, + AllPerms347, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts new file mode 100644 index 00000000..d178e5ea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-48 (seed 348) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord348 { + a348: { x: number; y: string; z: boolean }; + b348: { p: string[]; q: Record }; + c348: { nested: { deep: { deeper: { deepest: string } } } }; + d348: number; + e348: string; + f348: boolean; + g348: null; + h348: undefined; + i348: bigint; + j348: symbol; +} + +type PartialBig348 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten348 = T extends Array ? Flatten348 : T; +type Nested348 = number[][][][][][][][][][]; +type Flat348 = Flatten348; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly348 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly348 : T[K]; +}; +type DeepRequired348 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired348 : T[K]; +}; +type FR348 = DeepReadonly348>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion348 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha348 = Extract; +type ExcludeZulu348 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA348 { width: number; height: number; depth: number } +interface ShapeB348 { color: string; opacity: number; blend: string } +interface ShapeC348 { x: number; y: number; z: number; w: number } +interface ShapeD348 { label: string; title: string; summary: string } + +type Combined348 = ShapeA348 & ShapeB348 & ShapeC348 & ShapeD348; +type OptionalAll348 = { [K in keyof Combined348]?: Combined348[K] }; +type RequiredAll348 = { [K in keyof Combined348]-?: Combined348[K] }; +type ReadonlyAll348 = { readonly [K in keyof Combined348]: Combined348[K] }; +type NullableAll348 = { [K in keyof Combined348]: Combined348[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString348 = T extends string ? true : false; +type IsNumber348 = T extends number ? true : false; +type TypeName348 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames348 = { + [K in keyof BigRecord348]: TypeName348; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb348 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource348 = "user" | "post" | "comment" | "tag" | "category"; +type Action348 = `${Verb348}_${Resource348}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise348 = T extends Promise ? UnwrapPromise348 : T; +type UnwrapArray348 = T extends (infer U)[] ? UnwrapArray348 : T; +type Head348 = T extends [infer H, ...infer _] ? H : never; +type Tail348 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation348 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation348>] + : never; + +type SmallUnion348 = "a" | "b" | "c" | "d"; +type AllPerms348 = Permutation348; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig348, + Flat348, + FR348, + BigUnion348, + ExtractAlpha348, + ExcludeZulu348, + OptionalAll348, + RequiredAll348, + ReadonlyAll348, + NullableAll348, + TypeNames348, + Action348, + AllPerms348, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts new file mode 100644 index 00000000..c8495671 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-49 (seed 349) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord349 { + a349: { x: number; y: string; z: boolean }; + b349: { p: string[]; q: Record }; + c349: { nested: { deep: { deeper: { deepest: string } } } }; + d349: number; + e349: string; + f349: boolean; + g349: null; + h349: undefined; + i349: bigint; + j349: symbol; +} + +type PartialBig349 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten349 = T extends Array ? Flatten349 : T; +type Nested349 = number[][][][][][][][][][]; +type Flat349 = Flatten349; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly349 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly349 : T[K]; +}; +type DeepRequired349 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired349 : T[K]; +}; +type FR349 = DeepReadonly349>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion349 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha349 = Extract; +type ExcludeZulu349 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA349 { width: number; height: number; depth: number } +interface ShapeB349 { color: string; opacity: number; blend: string } +interface ShapeC349 { x: number; y: number; z: number; w: number } +interface ShapeD349 { label: string; title: string; summary: string } + +type Combined349 = ShapeA349 & ShapeB349 & ShapeC349 & ShapeD349; +type OptionalAll349 = { [K in keyof Combined349]?: Combined349[K] }; +type RequiredAll349 = { [K in keyof Combined349]-?: Combined349[K] }; +type ReadonlyAll349 = { readonly [K in keyof Combined349]: Combined349[K] }; +type NullableAll349 = { [K in keyof Combined349]: Combined349[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString349 = T extends string ? true : false; +type IsNumber349 = T extends number ? true : false; +type TypeName349 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames349 = { + [K in keyof BigRecord349]: TypeName349; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb349 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource349 = "user" | "post" | "comment" | "tag" | "category"; +type Action349 = `${Verb349}_${Resource349}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise349 = T extends Promise ? UnwrapPromise349 : T; +type UnwrapArray349 = T extends (infer U)[] ? UnwrapArray349 : T; +type Head349 = T extends [infer H, ...infer _] ? H : never; +type Tail349 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation349 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation349>] + : never; + +type SmallUnion349 = "a" | "b" | "c" | "d"; +type AllPerms349 = Permutation349; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig349, + Flat349, + FR349, + BigUnion349, + ExtractAlpha349, + ExcludeZulu349, + OptionalAll349, + RequiredAll349, + ReadonlyAll349, + NullableAll349, + TypeNames349, + Action349, + AllPerms349, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts new file mode 100644 index 00000000..519bb220 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts @@ -0,0 +1,125 @@ +// pkg-03 / types-50 (seed 350) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord350 { + a350: { x: number; y: string; z: boolean }; + b350: { p: string[]; q: Record }; + c350: { nested: { deep: { deeper: { deepest: string } } } }; + d350: number; + e350: string; + f350: boolean; + g350: null; + h350: undefined; + i350: bigint; + j350: symbol; +} + +type PartialBig350 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten350 = T extends Array ? Flatten350 : T; +type Nested350 = number[][][][][][][][][][]; +type Flat350 = Flatten350; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly350 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly350 : T[K]; +}; +type DeepRequired350 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired350 : T[K]; +}; +type FR350 = DeepReadonly350>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion350 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha350 = Extract; +type ExcludeZulu350 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA350 { width: number; height: number; depth: number } +interface ShapeB350 { color: string; opacity: number; blend: string } +interface ShapeC350 { x: number; y: number; z: number; w: number } +interface ShapeD350 { label: string; title: string; summary: string } + +type Combined350 = ShapeA350 & ShapeB350 & ShapeC350 & ShapeD350; +type OptionalAll350 = { [K in keyof Combined350]?: Combined350[K] }; +type RequiredAll350 = { [K in keyof Combined350]-?: Combined350[K] }; +type ReadonlyAll350 = { readonly [K in keyof Combined350]: Combined350[K] }; +type NullableAll350 = { [K in keyof Combined350]: Combined350[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString350 = T extends string ? true : false; +type IsNumber350 = T extends number ? true : false; +type TypeName350 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames350 = { + [K in keyof BigRecord350]: TypeName350; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb350 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource350 = "user" | "post" | "comment" | "tag" | "category"; +type Action350 = `${Verb350}_${Resource350}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise350 = T extends Promise ? UnwrapPromise350 : T; +type UnwrapArray350 = T extends (infer U)[] ? UnwrapArray350 : T; +type Head350 = T extends [infer H, ...infer _] ? H : never; +type Tail350 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation350 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation350>] + : never; + +type SmallUnion350 = "a" | "b" | "c" | "d"; +type AllPerms350 = Permutation350; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig350, + Flat350, + FR350, + BigUnion350, + ExtractAlpha350, + ExcludeZulu350, + OptionalAll350, + RequiredAll350, + ReadonlyAll350, + NullableAll350, + TypeNames350, + Action350, + AllPerms350, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts new file mode 100644 index 00000000..bad49b99 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-01 (seed 401) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord401 { + a401: { x: number; y: string; z: boolean }; + b401: { p: string[]; q: Record }; + c401: { nested: { deep: { deeper: { deepest: string } } } }; + d401: number; + e401: string; + f401: boolean; + g401: null; + h401: undefined; + i401: bigint; + j401: symbol; +} + +type PartialBig401 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten401 = T extends Array ? Flatten401 : T; +type Nested401 = number[][][][][][][][][][]; +type Flat401 = Flatten401; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly401 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly401 : T[K]; +}; +type DeepRequired401 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired401 : T[K]; +}; +type FR401 = DeepReadonly401>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion401 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha401 = Extract; +type ExcludeZulu401 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA401 { width: number; height: number; depth: number } +interface ShapeB401 { color: string; opacity: number; blend: string } +interface ShapeC401 { x: number; y: number; z: number; w: number } +interface ShapeD401 { label: string; title: string; summary: string } + +type Combined401 = ShapeA401 & ShapeB401 & ShapeC401 & ShapeD401; +type OptionalAll401 = { [K in keyof Combined401]?: Combined401[K] }; +type RequiredAll401 = { [K in keyof Combined401]-?: Combined401[K] }; +type ReadonlyAll401 = { readonly [K in keyof Combined401]: Combined401[K] }; +type NullableAll401 = { [K in keyof Combined401]: Combined401[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString401 = T extends string ? true : false; +type IsNumber401 = T extends number ? true : false; +type TypeName401 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames401 = { + [K in keyof BigRecord401]: TypeName401; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb401 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource401 = "user" | "post" | "comment" | "tag" | "category"; +type Action401 = `${Verb401}_${Resource401}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise401 = T extends Promise ? UnwrapPromise401 : T; +type UnwrapArray401 = T extends (infer U)[] ? UnwrapArray401 : T; +type Head401 = T extends [infer H, ...infer _] ? H : never; +type Tail401 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation401 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation401>] + : never; + +type SmallUnion401 = "a" | "b" | "c" | "d"; +type AllPerms401 = Permutation401; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig401, + Flat401, + FR401, + BigUnion401, + ExtractAlpha401, + ExcludeZulu401, + OptionalAll401, + RequiredAll401, + ReadonlyAll401, + NullableAll401, + TypeNames401, + Action401, + AllPerms401, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts new file mode 100644 index 00000000..18c7e2e8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-02 (seed 402) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord402 { + a402: { x: number; y: string; z: boolean }; + b402: { p: string[]; q: Record }; + c402: { nested: { deep: { deeper: { deepest: string } } } }; + d402: number; + e402: string; + f402: boolean; + g402: null; + h402: undefined; + i402: bigint; + j402: symbol; +} + +type PartialBig402 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten402 = T extends Array ? Flatten402 : T; +type Nested402 = number[][][][][][][][][][]; +type Flat402 = Flatten402; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly402 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly402 : T[K]; +}; +type DeepRequired402 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired402 : T[K]; +}; +type FR402 = DeepReadonly402>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion402 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha402 = Extract; +type ExcludeZulu402 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA402 { width: number; height: number; depth: number } +interface ShapeB402 { color: string; opacity: number; blend: string } +interface ShapeC402 { x: number; y: number; z: number; w: number } +interface ShapeD402 { label: string; title: string; summary: string } + +type Combined402 = ShapeA402 & ShapeB402 & ShapeC402 & ShapeD402; +type OptionalAll402 = { [K in keyof Combined402]?: Combined402[K] }; +type RequiredAll402 = { [K in keyof Combined402]-?: Combined402[K] }; +type ReadonlyAll402 = { readonly [K in keyof Combined402]: Combined402[K] }; +type NullableAll402 = { [K in keyof Combined402]: Combined402[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString402 = T extends string ? true : false; +type IsNumber402 = T extends number ? true : false; +type TypeName402 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames402 = { + [K in keyof BigRecord402]: TypeName402; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb402 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource402 = "user" | "post" | "comment" | "tag" | "category"; +type Action402 = `${Verb402}_${Resource402}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise402 = T extends Promise ? UnwrapPromise402 : T; +type UnwrapArray402 = T extends (infer U)[] ? UnwrapArray402 : T; +type Head402 = T extends [infer H, ...infer _] ? H : never; +type Tail402 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation402 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation402>] + : never; + +type SmallUnion402 = "a" | "b" | "c" | "d"; +type AllPerms402 = Permutation402; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig402, + Flat402, + FR402, + BigUnion402, + ExtractAlpha402, + ExcludeZulu402, + OptionalAll402, + RequiredAll402, + ReadonlyAll402, + NullableAll402, + TypeNames402, + Action402, + AllPerms402, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts new file mode 100644 index 00000000..bd9c19d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-03 (seed 403) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord403 { + a403: { x: number; y: string; z: boolean }; + b403: { p: string[]; q: Record }; + c403: { nested: { deep: { deeper: { deepest: string } } } }; + d403: number; + e403: string; + f403: boolean; + g403: null; + h403: undefined; + i403: bigint; + j403: symbol; +} + +type PartialBig403 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten403 = T extends Array ? Flatten403 : T; +type Nested403 = number[][][][][][][][][][]; +type Flat403 = Flatten403; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly403 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly403 : T[K]; +}; +type DeepRequired403 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired403 : T[K]; +}; +type FR403 = DeepReadonly403>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion403 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha403 = Extract; +type ExcludeZulu403 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA403 { width: number; height: number; depth: number } +interface ShapeB403 { color: string; opacity: number; blend: string } +interface ShapeC403 { x: number; y: number; z: number; w: number } +interface ShapeD403 { label: string; title: string; summary: string } + +type Combined403 = ShapeA403 & ShapeB403 & ShapeC403 & ShapeD403; +type OptionalAll403 = { [K in keyof Combined403]?: Combined403[K] }; +type RequiredAll403 = { [K in keyof Combined403]-?: Combined403[K] }; +type ReadonlyAll403 = { readonly [K in keyof Combined403]: Combined403[K] }; +type NullableAll403 = { [K in keyof Combined403]: Combined403[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString403 = T extends string ? true : false; +type IsNumber403 = T extends number ? true : false; +type TypeName403 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames403 = { + [K in keyof BigRecord403]: TypeName403; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb403 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource403 = "user" | "post" | "comment" | "tag" | "category"; +type Action403 = `${Verb403}_${Resource403}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise403 = T extends Promise ? UnwrapPromise403 : T; +type UnwrapArray403 = T extends (infer U)[] ? UnwrapArray403 : T; +type Head403 = T extends [infer H, ...infer _] ? H : never; +type Tail403 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation403 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation403>] + : never; + +type SmallUnion403 = "a" | "b" | "c" | "d"; +type AllPerms403 = Permutation403; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig403, + Flat403, + FR403, + BigUnion403, + ExtractAlpha403, + ExcludeZulu403, + OptionalAll403, + RequiredAll403, + ReadonlyAll403, + NullableAll403, + TypeNames403, + Action403, + AllPerms403, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts new file mode 100644 index 00000000..cb795a98 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-04 (seed 404) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord404 { + a404: { x: number; y: string; z: boolean }; + b404: { p: string[]; q: Record }; + c404: { nested: { deep: { deeper: { deepest: string } } } }; + d404: number; + e404: string; + f404: boolean; + g404: null; + h404: undefined; + i404: bigint; + j404: symbol; +} + +type PartialBig404 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten404 = T extends Array ? Flatten404 : T; +type Nested404 = number[][][][][][][][][][]; +type Flat404 = Flatten404; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly404 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly404 : T[K]; +}; +type DeepRequired404 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired404 : T[K]; +}; +type FR404 = DeepReadonly404>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion404 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha404 = Extract; +type ExcludeZulu404 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA404 { width: number; height: number; depth: number } +interface ShapeB404 { color: string; opacity: number; blend: string } +interface ShapeC404 { x: number; y: number; z: number; w: number } +interface ShapeD404 { label: string; title: string; summary: string } + +type Combined404 = ShapeA404 & ShapeB404 & ShapeC404 & ShapeD404; +type OptionalAll404 = { [K in keyof Combined404]?: Combined404[K] }; +type RequiredAll404 = { [K in keyof Combined404]-?: Combined404[K] }; +type ReadonlyAll404 = { readonly [K in keyof Combined404]: Combined404[K] }; +type NullableAll404 = { [K in keyof Combined404]: Combined404[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString404 = T extends string ? true : false; +type IsNumber404 = T extends number ? true : false; +type TypeName404 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames404 = { + [K in keyof BigRecord404]: TypeName404; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb404 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource404 = "user" | "post" | "comment" | "tag" | "category"; +type Action404 = `${Verb404}_${Resource404}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise404 = T extends Promise ? UnwrapPromise404 : T; +type UnwrapArray404 = T extends (infer U)[] ? UnwrapArray404 : T; +type Head404 = T extends [infer H, ...infer _] ? H : never; +type Tail404 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation404 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation404>] + : never; + +type SmallUnion404 = "a" | "b" | "c" | "d"; +type AllPerms404 = Permutation404; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig404, + Flat404, + FR404, + BigUnion404, + ExtractAlpha404, + ExcludeZulu404, + OptionalAll404, + RequiredAll404, + ReadonlyAll404, + NullableAll404, + TypeNames404, + Action404, + AllPerms404, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts new file mode 100644 index 00000000..a2e441fc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-05 (seed 405) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord405 { + a405: { x: number; y: string; z: boolean }; + b405: { p: string[]; q: Record }; + c405: { nested: { deep: { deeper: { deepest: string } } } }; + d405: number; + e405: string; + f405: boolean; + g405: null; + h405: undefined; + i405: bigint; + j405: symbol; +} + +type PartialBig405 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten405 = T extends Array ? Flatten405 : T; +type Nested405 = number[][][][][][][][][][]; +type Flat405 = Flatten405; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly405 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly405 : T[K]; +}; +type DeepRequired405 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired405 : T[K]; +}; +type FR405 = DeepReadonly405>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion405 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha405 = Extract; +type ExcludeZulu405 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA405 { width: number; height: number; depth: number } +interface ShapeB405 { color: string; opacity: number; blend: string } +interface ShapeC405 { x: number; y: number; z: number; w: number } +interface ShapeD405 { label: string; title: string; summary: string } + +type Combined405 = ShapeA405 & ShapeB405 & ShapeC405 & ShapeD405; +type OptionalAll405 = { [K in keyof Combined405]?: Combined405[K] }; +type RequiredAll405 = { [K in keyof Combined405]-?: Combined405[K] }; +type ReadonlyAll405 = { readonly [K in keyof Combined405]: Combined405[K] }; +type NullableAll405 = { [K in keyof Combined405]: Combined405[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString405 = T extends string ? true : false; +type IsNumber405 = T extends number ? true : false; +type TypeName405 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames405 = { + [K in keyof BigRecord405]: TypeName405; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb405 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource405 = "user" | "post" | "comment" | "tag" | "category"; +type Action405 = `${Verb405}_${Resource405}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise405 = T extends Promise ? UnwrapPromise405 : T; +type UnwrapArray405 = T extends (infer U)[] ? UnwrapArray405 : T; +type Head405 = T extends [infer H, ...infer _] ? H : never; +type Tail405 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation405 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation405>] + : never; + +type SmallUnion405 = "a" | "b" | "c" | "d"; +type AllPerms405 = Permutation405; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig405, + Flat405, + FR405, + BigUnion405, + ExtractAlpha405, + ExcludeZulu405, + OptionalAll405, + RequiredAll405, + ReadonlyAll405, + NullableAll405, + TypeNames405, + Action405, + AllPerms405, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts new file mode 100644 index 00000000..6e1f7e0b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-06 (seed 406) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord406 { + a406: { x: number; y: string; z: boolean }; + b406: { p: string[]; q: Record }; + c406: { nested: { deep: { deeper: { deepest: string } } } }; + d406: number; + e406: string; + f406: boolean; + g406: null; + h406: undefined; + i406: bigint; + j406: symbol; +} + +type PartialBig406 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten406 = T extends Array ? Flatten406 : T; +type Nested406 = number[][][][][][][][][][]; +type Flat406 = Flatten406; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly406 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly406 : T[K]; +}; +type DeepRequired406 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired406 : T[K]; +}; +type FR406 = DeepReadonly406>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion406 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha406 = Extract; +type ExcludeZulu406 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA406 { width: number; height: number; depth: number } +interface ShapeB406 { color: string; opacity: number; blend: string } +interface ShapeC406 { x: number; y: number; z: number; w: number } +interface ShapeD406 { label: string; title: string; summary: string } + +type Combined406 = ShapeA406 & ShapeB406 & ShapeC406 & ShapeD406; +type OptionalAll406 = { [K in keyof Combined406]?: Combined406[K] }; +type RequiredAll406 = { [K in keyof Combined406]-?: Combined406[K] }; +type ReadonlyAll406 = { readonly [K in keyof Combined406]: Combined406[K] }; +type NullableAll406 = { [K in keyof Combined406]: Combined406[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString406 = T extends string ? true : false; +type IsNumber406 = T extends number ? true : false; +type TypeName406 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames406 = { + [K in keyof BigRecord406]: TypeName406; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb406 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource406 = "user" | "post" | "comment" | "tag" | "category"; +type Action406 = `${Verb406}_${Resource406}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise406 = T extends Promise ? UnwrapPromise406 : T; +type UnwrapArray406 = T extends (infer U)[] ? UnwrapArray406 : T; +type Head406 = T extends [infer H, ...infer _] ? H : never; +type Tail406 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation406 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation406>] + : never; + +type SmallUnion406 = "a" | "b" | "c" | "d"; +type AllPerms406 = Permutation406; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig406, + Flat406, + FR406, + BigUnion406, + ExtractAlpha406, + ExcludeZulu406, + OptionalAll406, + RequiredAll406, + ReadonlyAll406, + NullableAll406, + TypeNames406, + Action406, + AllPerms406, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts new file mode 100644 index 00000000..7c72410e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-07 (seed 407) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord407 { + a407: { x: number; y: string; z: boolean }; + b407: { p: string[]; q: Record }; + c407: { nested: { deep: { deeper: { deepest: string } } } }; + d407: number; + e407: string; + f407: boolean; + g407: null; + h407: undefined; + i407: bigint; + j407: symbol; +} + +type PartialBig407 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten407 = T extends Array ? Flatten407 : T; +type Nested407 = number[][][][][][][][][][]; +type Flat407 = Flatten407; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly407 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly407 : T[K]; +}; +type DeepRequired407 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired407 : T[K]; +}; +type FR407 = DeepReadonly407>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion407 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha407 = Extract; +type ExcludeZulu407 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA407 { width: number; height: number; depth: number } +interface ShapeB407 { color: string; opacity: number; blend: string } +interface ShapeC407 { x: number; y: number; z: number; w: number } +interface ShapeD407 { label: string; title: string; summary: string } + +type Combined407 = ShapeA407 & ShapeB407 & ShapeC407 & ShapeD407; +type OptionalAll407 = { [K in keyof Combined407]?: Combined407[K] }; +type RequiredAll407 = { [K in keyof Combined407]-?: Combined407[K] }; +type ReadonlyAll407 = { readonly [K in keyof Combined407]: Combined407[K] }; +type NullableAll407 = { [K in keyof Combined407]: Combined407[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString407 = T extends string ? true : false; +type IsNumber407 = T extends number ? true : false; +type TypeName407 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames407 = { + [K in keyof BigRecord407]: TypeName407; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb407 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource407 = "user" | "post" | "comment" | "tag" | "category"; +type Action407 = `${Verb407}_${Resource407}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise407 = T extends Promise ? UnwrapPromise407 : T; +type UnwrapArray407 = T extends (infer U)[] ? UnwrapArray407 : T; +type Head407 = T extends [infer H, ...infer _] ? H : never; +type Tail407 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation407 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation407>] + : never; + +type SmallUnion407 = "a" | "b" | "c" | "d"; +type AllPerms407 = Permutation407; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig407, + Flat407, + FR407, + BigUnion407, + ExtractAlpha407, + ExcludeZulu407, + OptionalAll407, + RequiredAll407, + ReadonlyAll407, + NullableAll407, + TypeNames407, + Action407, + AllPerms407, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts new file mode 100644 index 00000000..71c6be67 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-08 (seed 408) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord408 { + a408: { x: number; y: string; z: boolean }; + b408: { p: string[]; q: Record }; + c408: { nested: { deep: { deeper: { deepest: string } } } }; + d408: number; + e408: string; + f408: boolean; + g408: null; + h408: undefined; + i408: bigint; + j408: symbol; +} + +type PartialBig408 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten408 = T extends Array ? Flatten408 : T; +type Nested408 = number[][][][][][][][][][]; +type Flat408 = Flatten408; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly408 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly408 : T[K]; +}; +type DeepRequired408 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired408 : T[K]; +}; +type FR408 = DeepReadonly408>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion408 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha408 = Extract; +type ExcludeZulu408 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA408 { width: number; height: number; depth: number } +interface ShapeB408 { color: string; opacity: number; blend: string } +interface ShapeC408 { x: number; y: number; z: number; w: number } +interface ShapeD408 { label: string; title: string; summary: string } + +type Combined408 = ShapeA408 & ShapeB408 & ShapeC408 & ShapeD408; +type OptionalAll408 = { [K in keyof Combined408]?: Combined408[K] }; +type RequiredAll408 = { [K in keyof Combined408]-?: Combined408[K] }; +type ReadonlyAll408 = { readonly [K in keyof Combined408]: Combined408[K] }; +type NullableAll408 = { [K in keyof Combined408]: Combined408[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString408 = T extends string ? true : false; +type IsNumber408 = T extends number ? true : false; +type TypeName408 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames408 = { + [K in keyof BigRecord408]: TypeName408; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb408 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource408 = "user" | "post" | "comment" | "tag" | "category"; +type Action408 = `${Verb408}_${Resource408}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise408 = T extends Promise ? UnwrapPromise408 : T; +type UnwrapArray408 = T extends (infer U)[] ? UnwrapArray408 : T; +type Head408 = T extends [infer H, ...infer _] ? H : never; +type Tail408 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation408 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation408>] + : never; + +type SmallUnion408 = "a" | "b" | "c" | "d"; +type AllPerms408 = Permutation408; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig408, + Flat408, + FR408, + BigUnion408, + ExtractAlpha408, + ExcludeZulu408, + OptionalAll408, + RequiredAll408, + ReadonlyAll408, + NullableAll408, + TypeNames408, + Action408, + AllPerms408, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts new file mode 100644 index 00000000..880b58b3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-09 (seed 409) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord409 { + a409: { x: number; y: string; z: boolean }; + b409: { p: string[]; q: Record }; + c409: { nested: { deep: { deeper: { deepest: string } } } }; + d409: number; + e409: string; + f409: boolean; + g409: null; + h409: undefined; + i409: bigint; + j409: symbol; +} + +type PartialBig409 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten409 = T extends Array ? Flatten409 : T; +type Nested409 = number[][][][][][][][][][]; +type Flat409 = Flatten409; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly409 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly409 : T[K]; +}; +type DeepRequired409 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired409 : T[K]; +}; +type FR409 = DeepReadonly409>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion409 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha409 = Extract; +type ExcludeZulu409 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA409 { width: number; height: number; depth: number } +interface ShapeB409 { color: string; opacity: number; blend: string } +interface ShapeC409 { x: number; y: number; z: number; w: number } +interface ShapeD409 { label: string; title: string; summary: string } + +type Combined409 = ShapeA409 & ShapeB409 & ShapeC409 & ShapeD409; +type OptionalAll409 = { [K in keyof Combined409]?: Combined409[K] }; +type RequiredAll409 = { [K in keyof Combined409]-?: Combined409[K] }; +type ReadonlyAll409 = { readonly [K in keyof Combined409]: Combined409[K] }; +type NullableAll409 = { [K in keyof Combined409]: Combined409[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString409 = T extends string ? true : false; +type IsNumber409 = T extends number ? true : false; +type TypeName409 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames409 = { + [K in keyof BigRecord409]: TypeName409; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb409 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource409 = "user" | "post" | "comment" | "tag" | "category"; +type Action409 = `${Verb409}_${Resource409}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise409 = T extends Promise ? UnwrapPromise409 : T; +type UnwrapArray409 = T extends (infer U)[] ? UnwrapArray409 : T; +type Head409 = T extends [infer H, ...infer _] ? H : never; +type Tail409 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation409 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation409>] + : never; + +type SmallUnion409 = "a" | "b" | "c" | "d"; +type AllPerms409 = Permutation409; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig409, + Flat409, + FR409, + BigUnion409, + ExtractAlpha409, + ExcludeZulu409, + OptionalAll409, + RequiredAll409, + ReadonlyAll409, + NullableAll409, + TypeNames409, + Action409, + AllPerms409, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts new file mode 100644 index 00000000..c3ec273c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-10 (seed 410) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord410 { + a410: { x: number; y: string; z: boolean }; + b410: { p: string[]; q: Record }; + c410: { nested: { deep: { deeper: { deepest: string } } } }; + d410: number; + e410: string; + f410: boolean; + g410: null; + h410: undefined; + i410: bigint; + j410: symbol; +} + +type PartialBig410 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten410 = T extends Array ? Flatten410 : T; +type Nested410 = number[][][][][][][][][][]; +type Flat410 = Flatten410; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly410 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly410 : T[K]; +}; +type DeepRequired410 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired410 : T[K]; +}; +type FR410 = DeepReadonly410>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion410 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha410 = Extract; +type ExcludeZulu410 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA410 { width: number; height: number; depth: number } +interface ShapeB410 { color: string; opacity: number; blend: string } +interface ShapeC410 { x: number; y: number; z: number; w: number } +interface ShapeD410 { label: string; title: string; summary: string } + +type Combined410 = ShapeA410 & ShapeB410 & ShapeC410 & ShapeD410; +type OptionalAll410 = { [K in keyof Combined410]?: Combined410[K] }; +type RequiredAll410 = { [K in keyof Combined410]-?: Combined410[K] }; +type ReadonlyAll410 = { readonly [K in keyof Combined410]: Combined410[K] }; +type NullableAll410 = { [K in keyof Combined410]: Combined410[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString410 = T extends string ? true : false; +type IsNumber410 = T extends number ? true : false; +type TypeName410 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames410 = { + [K in keyof BigRecord410]: TypeName410; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb410 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource410 = "user" | "post" | "comment" | "tag" | "category"; +type Action410 = `${Verb410}_${Resource410}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise410 = T extends Promise ? UnwrapPromise410 : T; +type UnwrapArray410 = T extends (infer U)[] ? UnwrapArray410 : T; +type Head410 = T extends [infer H, ...infer _] ? H : never; +type Tail410 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation410 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation410>] + : never; + +type SmallUnion410 = "a" | "b" | "c" | "d"; +type AllPerms410 = Permutation410; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig410, + Flat410, + FR410, + BigUnion410, + ExtractAlpha410, + ExcludeZulu410, + OptionalAll410, + RequiredAll410, + ReadonlyAll410, + NullableAll410, + TypeNames410, + Action410, + AllPerms410, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts new file mode 100644 index 00000000..7b87d2e4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-11 (seed 411) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord411 { + a411: { x: number; y: string; z: boolean }; + b411: { p: string[]; q: Record }; + c411: { nested: { deep: { deeper: { deepest: string } } } }; + d411: number; + e411: string; + f411: boolean; + g411: null; + h411: undefined; + i411: bigint; + j411: symbol; +} + +type PartialBig411 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten411 = T extends Array ? Flatten411 : T; +type Nested411 = number[][][][][][][][][][]; +type Flat411 = Flatten411; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly411 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly411 : T[K]; +}; +type DeepRequired411 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired411 : T[K]; +}; +type FR411 = DeepReadonly411>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion411 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha411 = Extract; +type ExcludeZulu411 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA411 { width: number; height: number; depth: number } +interface ShapeB411 { color: string; opacity: number; blend: string } +interface ShapeC411 { x: number; y: number; z: number; w: number } +interface ShapeD411 { label: string; title: string; summary: string } + +type Combined411 = ShapeA411 & ShapeB411 & ShapeC411 & ShapeD411; +type OptionalAll411 = { [K in keyof Combined411]?: Combined411[K] }; +type RequiredAll411 = { [K in keyof Combined411]-?: Combined411[K] }; +type ReadonlyAll411 = { readonly [K in keyof Combined411]: Combined411[K] }; +type NullableAll411 = { [K in keyof Combined411]: Combined411[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString411 = T extends string ? true : false; +type IsNumber411 = T extends number ? true : false; +type TypeName411 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames411 = { + [K in keyof BigRecord411]: TypeName411; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb411 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource411 = "user" | "post" | "comment" | "tag" | "category"; +type Action411 = `${Verb411}_${Resource411}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise411 = T extends Promise ? UnwrapPromise411 : T; +type UnwrapArray411 = T extends (infer U)[] ? UnwrapArray411 : T; +type Head411 = T extends [infer H, ...infer _] ? H : never; +type Tail411 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation411 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation411>] + : never; + +type SmallUnion411 = "a" | "b" | "c" | "d"; +type AllPerms411 = Permutation411; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig411, + Flat411, + FR411, + BigUnion411, + ExtractAlpha411, + ExcludeZulu411, + OptionalAll411, + RequiredAll411, + ReadonlyAll411, + NullableAll411, + TypeNames411, + Action411, + AllPerms411, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts new file mode 100644 index 00000000..acab7353 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-12 (seed 412) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord412 { + a412: { x: number; y: string; z: boolean }; + b412: { p: string[]; q: Record }; + c412: { nested: { deep: { deeper: { deepest: string } } } }; + d412: number; + e412: string; + f412: boolean; + g412: null; + h412: undefined; + i412: bigint; + j412: symbol; +} + +type PartialBig412 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten412 = T extends Array ? Flatten412 : T; +type Nested412 = number[][][][][][][][][][]; +type Flat412 = Flatten412; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly412 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly412 : T[K]; +}; +type DeepRequired412 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired412 : T[K]; +}; +type FR412 = DeepReadonly412>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion412 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha412 = Extract; +type ExcludeZulu412 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA412 { width: number; height: number; depth: number } +interface ShapeB412 { color: string; opacity: number; blend: string } +interface ShapeC412 { x: number; y: number; z: number; w: number } +interface ShapeD412 { label: string; title: string; summary: string } + +type Combined412 = ShapeA412 & ShapeB412 & ShapeC412 & ShapeD412; +type OptionalAll412 = { [K in keyof Combined412]?: Combined412[K] }; +type RequiredAll412 = { [K in keyof Combined412]-?: Combined412[K] }; +type ReadonlyAll412 = { readonly [K in keyof Combined412]: Combined412[K] }; +type NullableAll412 = { [K in keyof Combined412]: Combined412[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString412 = T extends string ? true : false; +type IsNumber412 = T extends number ? true : false; +type TypeName412 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames412 = { + [K in keyof BigRecord412]: TypeName412; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb412 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource412 = "user" | "post" | "comment" | "tag" | "category"; +type Action412 = `${Verb412}_${Resource412}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise412 = T extends Promise ? UnwrapPromise412 : T; +type UnwrapArray412 = T extends (infer U)[] ? UnwrapArray412 : T; +type Head412 = T extends [infer H, ...infer _] ? H : never; +type Tail412 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation412 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation412>] + : never; + +type SmallUnion412 = "a" | "b" | "c" | "d"; +type AllPerms412 = Permutation412; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig412, + Flat412, + FR412, + BigUnion412, + ExtractAlpha412, + ExcludeZulu412, + OptionalAll412, + RequiredAll412, + ReadonlyAll412, + NullableAll412, + TypeNames412, + Action412, + AllPerms412, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts new file mode 100644 index 00000000..348490a2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-13 (seed 413) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord413 { + a413: { x: number; y: string; z: boolean }; + b413: { p: string[]; q: Record }; + c413: { nested: { deep: { deeper: { deepest: string } } } }; + d413: number; + e413: string; + f413: boolean; + g413: null; + h413: undefined; + i413: bigint; + j413: symbol; +} + +type PartialBig413 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten413 = T extends Array ? Flatten413 : T; +type Nested413 = number[][][][][][][][][][]; +type Flat413 = Flatten413; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly413 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly413 : T[K]; +}; +type DeepRequired413 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired413 : T[K]; +}; +type FR413 = DeepReadonly413>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion413 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha413 = Extract; +type ExcludeZulu413 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA413 { width: number; height: number; depth: number } +interface ShapeB413 { color: string; opacity: number; blend: string } +interface ShapeC413 { x: number; y: number; z: number; w: number } +interface ShapeD413 { label: string; title: string; summary: string } + +type Combined413 = ShapeA413 & ShapeB413 & ShapeC413 & ShapeD413; +type OptionalAll413 = { [K in keyof Combined413]?: Combined413[K] }; +type RequiredAll413 = { [K in keyof Combined413]-?: Combined413[K] }; +type ReadonlyAll413 = { readonly [K in keyof Combined413]: Combined413[K] }; +type NullableAll413 = { [K in keyof Combined413]: Combined413[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString413 = T extends string ? true : false; +type IsNumber413 = T extends number ? true : false; +type TypeName413 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames413 = { + [K in keyof BigRecord413]: TypeName413; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb413 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource413 = "user" | "post" | "comment" | "tag" | "category"; +type Action413 = `${Verb413}_${Resource413}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise413 = T extends Promise ? UnwrapPromise413 : T; +type UnwrapArray413 = T extends (infer U)[] ? UnwrapArray413 : T; +type Head413 = T extends [infer H, ...infer _] ? H : never; +type Tail413 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation413 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation413>] + : never; + +type SmallUnion413 = "a" | "b" | "c" | "d"; +type AllPerms413 = Permutation413; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig413, + Flat413, + FR413, + BigUnion413, + ExtractAlpha413, + ExcludeZulu413, + OptionalAll413, + RequiredAll413, + ReadonlyAll413, + NullableAll413, + TypeNames413, + Action413, + AllPerms413, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts new file mode 100644 index 00000000..502f69c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-14 (seed 414) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord414 { + a414: { x: number; y: string; z: boolean }; + b414: { p: string[]; q: Record }; + c414: { nested: { deep: { deeper: { deepest: string } } } }; + d414: number; + e414: string; + f414: boolean; + g414: null; + h414: undefined; + i414: bigint; + j414: symbol; +} + +type PartialBig414 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten414 = T extends Array ? Flatten414 : T; +type Nested414 = number[][][][][][][][][][]; +type Flat414 = Flatten414; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly414 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly414 : T[K]; +}; +type DeepRequired414 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired414 : T[K]; +}; +type FR414 = DeepReadonly414>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion414 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha414 = Extract; +type ExcludeZulu414 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA414 { width: number; height: number; depth: number } +interface ShapeB414 { color: string; opacity: number; blend: string } +interface ShapeC414 { x: number; y: number; z: number; w: number } +interface ShapeD414 { label: string; title: string; summary: string } + +type Combined414 = ShapeA414 & ShapeB414 & ShapeC414 & ShapeD414; +type OptionalAll414 = { [K in keyof Combined414]?: Combined414[K] }; +type RequiredAll414 = { [K in keyof Combined414]-?: Combined414[K] }; +type ReadonlyAll414 = { readonly [K in keyof Combined414]: Combined414[K] }; +type NullableAll414 = { [K in keyof Combined414]: Combined414[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString414 = T extends string ? true : false; +type IsNumber414 = T extends number ? true : false; +type TypeName414 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames414 = { + [K in keyof BigRecord414]: TypeName414; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb414 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource414 = "user" | "post" | "comment" | "tag" | "category"; +type Action414 = `${Verb414}_${Resource414}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise414 = T extends Promise ? UnwrapPromise414 : T; +type UnwrapArray414 = T extends (infer U)[] ? UnwrapArray414 : T; +type Head414 = T extends [infer H, ...infer _] ? H : never; +type Tail414 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation414 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation414>] + : never; + +type SmallUnion414 = "a" | "b" | "c" | "d"; +type AllPerms414 = Permutation414; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig414, + Flat414, + FR414, + BigUnion414, + ExtractAlpha414, + ExcludeZulu414, + OptionalAll414, + RequiredAll414, + ReadonlyAll414, + NullableAll414, + TypeNames414, + Action414, + AllPerms414, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts new file mode 100644 index 00000000..056a453f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-15 (seed 415) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord415 { + a415: { x: number; y: string; z: boolean }; + b415: { p: string[]; q: Record }; + c415: { nested: { deep: { deeper: { deepest: string } } } }; + d415: number; + e415: string; + f415: boolean; + g415: null; + h415: undefined; + i415: bigint; + j415: symbol; +} + +type PartialBig415 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten415 = T extends Array ? Flatten415 : T; +type Nested415 = number[][][][][][][][][][]; +type Flat415 = Flatten415; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly415 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly415 : T[K]; +}; +type DeepRequired415 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired415 : T[K]; +}; +type FR415 = DeepReadonly415>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion415 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha415 = Extract; +type ExcludeZulu415 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA415 { width: number; height: number; depth: number } +interface ShapeB415 { color: string; opacity: number; blend: string } +interface ShapeC415 { x: number; y: number; z: number; w: number } +interface ShapeD415 { label: string; title: string; summary: string } + +type Combined415 = ShapeA415 & ShapeB415 & ShapeC415 & ShapeD415; +type OptionalAll415 = { [K in keyof Combined415]?: Combined415[K] }; +type RequiredAll415 = { [K in keyof Combined415]-?: Combined415[K] }; +type ReadonlyAll415 = { readonly [K in keyof Combined415]: Combined415[K] }; +type NullableAll415 = { [K in keyof Combined415]: Combined415[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString415 = T extends string ? true : false; +type IsNumber415 = T extends number ? true : false; +type TypeName415 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames415 = { + [K in keyof BigRecord415]: TypeName415; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb415 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource415 = "user" | "post" | "comment" | "tag" | "category"; +type Action415 = `${Verb415}_${Resource415}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise415 = T extends Promise ? UnwrapPromise415 : T; +type UnwrapArray415 = T extends (infer U)[] ? UnwrapArray415 : T; +type Head415 = T extends [infer H, ...infer _] ? H : never; +type Tail415 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation415 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation415>] + : never; + +type SmallUnion415 = "a" | "b" | "c" | "d"; +type AllPerms415 = Permutation415; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig415, + Flat415, + FR415, + BigUnion415, + ExtractAlpha415, + ExcludeZulu415, + OptionalAll415, + RequiredAll415, + ReadonlyAll415, + NullableAll415, + TypeNames415, + Action415, + AllPerms415, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts new file mode 100644 index 00000000..191c4ba1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-16 (seed 416) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord416 { + a416: { x: number; y: string; z: boolean }; + b416: { p: string[]; q: Record }; + c416: { nested: { deep: { deeper: { deepest: string } } } }; + d416: number; + e416: string; + f416: boolean; + g416: null; + h416: undefined; + i416: bigint; + j416: symbol; +} + +type PartialBig416 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten416 = T extends Array ? Flatten416 : T; +type Nested416 = number[][][][][][][][][][]; +type Flat416 = Flatten416; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly416 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly416 : T[K]; +}; +type DeepRequired416 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired416 : T[K]; +}; +type FR416 = DeepReadonly416>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion416 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha416 = Extract; +type ExcludeZulu416 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA416 { width: number; height: number; depth: number } +interface ShapeB416 { color: string; opacity: number; blend: string } +interface ShapeC416 { x: number; y: number; z: number; w: number } +interface ShapeD416 { label: string; title: string; summary: string } + +type Combined416 = ShapeA416 & ShapeB416 & ShapeC416 & ShapeD416; +type OptionalAll416 = { [K in keyof Combined416]?: Combined416[K] }; +type RequiredAll416 = { [K in keyof Combined416]-?: Combined416[K] }; +type ReadonlyAll416 = { readonly [K in keyof Combined416]: Combined416[K] }; +type NullableAll416 = { [K in keyof Combined416]: Combined416[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString416 = T extends string ? true : false; +type IsNumber416 = T extends number ? true : false; +type TypeName416 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames416 = { + [K in keyof BigRecord416]: TypeName416; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb416 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource416 = "user" | "post" | "comment" | "tag" | "category"; +type Action416 = `${Verb416}_${Resource416}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise416 = T extends Promise ? UnwrapPromise416 : T; +type UnwrapArray416 = T extends (infer U)[] ? UnwrapArray416 : T; +type Head416 = T extends [infer H, ...infer _] ? H : never; +type Tail416 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation416 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation416>] + : never; + +type SmallUnion416 = "a" | "b" | "c" | "d"; +type AllPerms416 = Permutation416; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig416, + Flat416, + FR416, + BigUnion416, + ExtractAlpha416, + ExcludeZulu416, + OptionalAll416, + RequiredAll416, + ReadonlyAll416, + NullableAll416, + TypeNames416, + Action416, + AllPerms416, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts new file mode 100644 index 00000000..8a8a3662 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-17 (seed 417) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord417 { + a417: { x: number; y: string; z: boolean }; + b417: { p: string[]; q: Record }; + c417: { nested: { deep: { deeper: { deepest: string } } } }; + d417: number; + e417: string; + f417: boolean; + g417: null; + h417: undefined; + i417: bigint; + j417: symbol; +} + +type PartialBig417 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten417 = T extends Array ? Flatten417 : T; +type Nested417 = number[][][][][][][][][][]; +type Flat417 = Flatten417; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly417 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly417 : T[K]; +}; +type DeepRequired417 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired417 : T[K]; +}; +type FR417 = DeepReadonly417>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion417 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha417 = Extract; +type ExcludeZulu417 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA417 { width: number; height: number; depth: number } +interface ShapeB417 { color: string; opacity: number; blend: string } +interface ShapeC417 { x: number; y: number; z: number; w: number } +interface ShapeD417 { label: string; title: string; summary: string } + +type Combined417 = ShapeA417 & ShapeB417 & ShapeC417 & ShapeD417; +type OptionalAll417 = { [K in keyof Combined417]?: Combined417[K] }; +type RequiredAll417 = { [K in keyof Combined417]-?: Combined417[K] }; +type ReadonlyAll417 = { readonly [K in keyof Combined417]: Combined417[K] }; +type NullableAll417 = { [K in keyof Combined417]: Combined417[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString417 = T extends string ? true : false; +type IsNumber417 = T extends number ? true : false; +type TypeName417 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames417 = { + [K in keyof BigRecord417]: TypeName417; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb417 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource417 = "user" | "post" | "comment" | "tag" | "category"; +type Action417 = `${Verb417}_${Resource417}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise417 = T extends Promise ? UnwrapPromise417 : T; +type UnwrapArray417 = T extends (infer U)[] ? UnwrapArray417 : T; +type Head417 = T extends [infer H, ...infer _] ? H : never; +type Tail417 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation417 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation417>] + : never; + +type SmallUnion417 = "a" | "b" | "c" | "d"; +type AllPerms417 = Permutation417; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig417, + Flat417, + FR417, + BigUnion417, + ExtractAlpha417, + ExcludeZulu417, + OptionalAll417, + RequiredAll417, + ReadonlyAll417, + NullableAll417, + TypeNames417, + Action417, + AllPerms417, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts new file mode 100644 index 00000000..5c28cb33 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-18 (seed 418) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord418 { + a418: { x: number; y: string; z: boolean }; + b418: { p: string[]; q: Record }; + c418: { nested: { deep: { deeper: { deepest: string } } } }; + d418: number; + e418: string; + f418: boolean; + g418: null; + h418: undefined; + i418: bigint; + j418: symbol; +} + +type PartialBig418 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten418 = T extends Array ? Flatten418 : T; +type Nested418 = number[][][][][][][][][][]; +type Flat418 = Flatten418; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly418 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly418 : T[K]; +}; +type DeepRequired418 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired418 : T[K]; +}; +type FR418 = DeepReadonly418>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion418 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha418 = Extract; +type ExcludeZulu418 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA418 { width: number; height: number; depth: number } +interface ShapeB418 { color: string; opacity: number; blend: string } +interface ShapeC418 { x: number; y: number; z: number; w: number } +interface ShapeD418 { label: string; title: string; summary: string } + +type Combined418 = ShapeA418 & ShapeB418 & ShapeC418 & ShapeD418; +type OptionalAll418 = { [K in keyof Combined418]?: Combined418[K] }; +type RequiredAll418 = { [K in keyof Combined418]-?: Combined418[K] }; +type ReadonlyAll418 = { readonly [K in keyof Combined418]: Combined418[K] }; +type NullableAll418 = { [K in keyof Combined418]: Combined418[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString418 = T extends string ? true : false; +type IsNumber418 = T extends number ? true : false; +type TypeName418 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames418 = { + [K in keyof BigRecord418]: TypeName418; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb418 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource418 = "user" | "post" | "comment" | "tag" | "category"; +type Action418 = `${Verb418}_${Resource418}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise418 = T extends Promise ? UnwrapPromise418 : T; +type UnwrapArray418 = T extends (infer U)[] ? UnwrapArray418 : T; +type Head418 = T extends [infer H, ...infer _] ? H : never; +type Tail418 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation418 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation418>] + : never; + +type SmallUnion418 = "a" | "b" | "c" | "d"; +type AllPerms418 = Permutation418; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig418, + Flat418, + FR418, + BigUnion418, + ExtractAlpha418, + ExcludeZulu418, + OptionalAll418, + RequiredAll418, + ReadonlyAll418, + NullableAll418, + TypeNames418, + Action418, + AllPerms418, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts new file mode 100644 index 00000000..fc775407 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-19 (seed 419) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord419 { + a419: { x: number; y: string; z: boolean }; + b419: { p: string[]; q: Record }; + c419: { nested: { deep: { deeper: { deepest: string } } } }; + d419: number; + e419: string; + f419: boolean; + g419: null; + h419: undefined; + i419: bigint; + j419: symbol; +} + +type PartialBig419 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten419 = T extends Array ? Flatten419 : T; +type Nested419 = number[][][][][][][][][][]; +type Flat419 = Flatten419; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly419 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly419 : T[K]; +}; +type DeepRequired419 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired419 : T[K]; +}; +type FR419 = DeepReadonly419>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion419 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha419 = Extract; +type ExcludeZulu419 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA419 { width: number; height: number; depth: number } +interface ShapeB419 { color: string; opacity: number; blend: string } +interface ShapeC419 { x: number; y: number; z: number; w: number } +interface ShapeD419 { label: string; title: string; summary: string } + +type Combined419 = ShapeA419 & ShapeB419 & ShapeC419 & ShapeD419; +type OptionalAll419 = { [K in keyof Combined419]?: Combined419[K] }; +type RequiredAll419 = { [K in keyof Combined419]-?: Combined419[K] }; +type ReadonlyAll419 = { readonly [K in keyof Combined419]: Combined419[K] }; +type NullableAll419 = { [K in keyof Combined419]: Combined419[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString419 = T extends string ? true : false; +type IsNumber419 = T extends number ? true : false; +type TypeName419 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames419 = { + [K in keyof BigRecord419]: TypeName419; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb419 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource419 = "user" | "post" | "comment" | "tag" | "category"; +type Action419 = `${Verb419}_${Resource419}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise419 = T extends Promise ? UnwrapPromise419 : T; +type UnwrapArray419 = T extends (infer U)[] ? UnwrapArray419 : T; +type Head419 = T extends [infer H, ...infer _] ? H : never; +type Tail419 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation419 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation419>] + : never; + +type SmallUnion419 = "a" | "b" | "c" | "d"; +type AllPerms419 = Permutation419; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig419, + Flat419, + FR419, + BigUnion419, + ExtractAlpha419, + ExcludeZulu419, + OptionalAll419, + RequiredAll419, + ReadonlyAll419, + NullableAll419, + TypeNames419, + Action419, + AllPerms419, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts new file mode 100644 index 00000000..d46014ad --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-20 (seed 420) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord420 { + a420: { x: number; y: string; z: boolean }; + b420: { p: string[]; q: Record }; + c420: { nested: { deep: { deeper: { deepest: string } } } }; + d420: number; + e420: string; + f420: boolean; + g420: null; + h420: undefined; + i420: bigint; + j420: symbol; +} + +type PartialBig420 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten420 = T extends Array ? Flatten420 : T; +type Nested420 = number[][][][][][][][][][]; +type Flat420 = Flatten420; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly420 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly420 : T[K]; +}; +type DeepRequired420 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired420 : T[K]; +}; +type FR420 = DeepReadonly420>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion420 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha420 = Extract; +type ExcludeZulu420 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA420 { width: number; height: number; depth: number } +interface ShapeB420 { color: string; opacity: number; blend: string } +interface ShapeC420 { x: number; y: number; z: number; w: number } +interface ShapeD420 { label: string; title: string; summary: string } + +type Combined420 = ShapeA420 & ShapeB420 & ShapeC420 & ShapeD420; +type OptionalAll420 = { [K in keyof Combined420]?: Combined420[K] }; +type RequiredAll420 = { [K in keyof Combined420]-?: Combined420[K] }; +type ReadonlyAll420 = { readonly [K in keyof Combined420]: Combined420[K] }; +type NullableAll420 = { [K in keyof Combined420]: Combined420[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString420 = T extends string ? true : false; +type IsNumber420 = T extends number ? true : false; +type TypeName420 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames420 = { + [K in keyof BigRecord420]: TypeName420; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb420 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource420 = "user" | "post" | "comment" | "tag" | "category"; +type Action420 = `${Verb420}_${Resource420}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise420 = T extends Promise ? UnwrapPromise420 : T; +type UnwrapArray420 = T extends (infer U)[] ? UnwrapArray420 : T; +type Head420 = T extends [infer H, ...infer _] ? H : never; +type Tail420 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation420 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation420>] + : never; + +type SmallUnion420 = "a" | "b" | "c" | "d"; +type AllPerms420 = Permutation420; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig420, + Flat420, + FR420, + BigUnion420, + ExtractAlpha420, + ExcludeZulu420, + OptionalAll420, + RequiredAll420, + ReadonlyAll420, + NullableAll420, + TypeNames420, + Action420, + AllPerms420, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts new file mode 100644 index 00000000..f3159ffd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-21 (seed 421) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord421 { + a421: { x: number; y: string; z: boolean }; + b421: { p: string[]; q: Record }; + c421: { nested: { deep: { deeper: { deepest: string } } } }; + d421: number; + e421: string; + f421: boolean; + g421: null; + h421: undefined; + i421: bigint; + j421: symbol; +} + +type PartialBig421 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten421 = T extends Array ? Flatten421 : T; +type Nested421 = number[][][][][][][][][][]; +type Flat421 = Flatten421; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly421 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly421 : T[K]; +}; +type DeepRequired421 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired421 : T[K]; +}; +type FR421 = DeepReadonly421>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion421 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha421 = Extract; +type ExcludeZulu421 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA421 { width: number; height: number; depth: number } +interface ShapeB421 { color: string; opacity: number; blend: string } +interface ShapeC421 { x: number; y: number; z: number; w: number } +interface ShapeD421 { label: string; title: string; summary: string } + +type Combined421 = ShapeA421 & ShapeB421 & ShapeC421 & ShapeD421; +type OptionalAll421 = { [K in keyof Combined421]?: Combined421[K] }; +type RequiredAll421 = { [K in keyof Combined421]-?: Combined421[K] }; +type ReadonlyAll421 = { readonly [K in keyof Combined421]: Combined421[K] }; +type NullableAll421 = { [K in keyof Combined421]: Combined421[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString421 = T extends string ? true : false; +type IsNumber421 = T extends number ? true : false; +type TypeName421 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames421 = { + [K in keyof BigRecord421]: TypeName421; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb421 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource421 = "user" | "post" | "comment" | "tag" | "category"; +type Action421 = `${Verb421}_${Resource421}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise421 = T extends Promise ? UnwrapPromise421 : T; +type UnwrapArray421 = T extends (infer U)[] ? UnwrapArray421 : T; +type Head421 = T extends [infer H, ...infer _] ? H : never; +type Tail421 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation421 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation421>] + : never; + +type SmallUnion421 = "a" | "b" | "c" | "d"; +type AllPerms421 = Permutation421; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig421, + Flat421, + FR421, + BigUnion421, + ExtractAlpha421, + ExcludeZulu421, + OptionalAll421, + RequiredAll421, + ReadonlyAll421, + NullableAll421, + TypeNames421, + Action421, + AllPerms421, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts new file mode 100644 index 00000000..4cbcf04c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-22 (seed 422) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord422 { + a422: { x: number; y: string; z: boolean }; + b422: { p: string[]; q: Record }; + c422: { nested: { deep: { deeper: { deepest: string } } } }; + d422: number; + e422: string; + f422: boolean; + g422: null; + h422: undefined; + i422: bigint; + j422: symbol; +} + +type PartialBig422 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten422 = T extends Array ? Flatten422 : T; +type Nested422 = number[][][][][][][][][][]; +type Flat422 = Flatten422; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly422 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly422 : T[K]; +}; +type DeepRequired422 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired422 : T[K]; +}; +type FR422 = DeepReadonly422>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion422 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha422 = Extract; +type ExcludeZulu422 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA422 { width: number; height: number; depth: number } +interface ShapeB422 { color: string; opacity: number; blend: string } +interface ShapeC422 { x: number; y: number; z: number; w: number } +interface ShapeD422 { label: string; title: string; summary: string } + +type Combined422 = ShapeA422 & ShapeB422 & ShapeC422 & ShapeD422; +type OptionalAll422 = { [K in keyof Combined422]?: Combined422[K] }; +type RequiredAll422 = { [K in keyof Combined422]-?: Combined422[K] }; +type ReadonlyAll422 = { readonly [K in keyof Combined422]: Combined422[K] }; +type NullableAll422 = { [K in keyof Combined422]: Combined422[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString422 = T extends string ? true : false; +type IsNumber422 = T extends number ? true : false; +type TypeName422 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames422 = { + [K in keyof BigRecord422]: TypeName422; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb422 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource422 = "user" | "post" | "comment" | "tag" | "category"; +type Action422 = `${Verb422}_${Resource422}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise422 = T extends Promise ? UnwrapPromise422 : T; +type UnwrapArray422 = T extends (infer U)[] ? UnwrapArray422 : T; +type Head422 = T extends [infer H, ...infer _] ? H : never; +type Tail422 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation422 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation422>] + : never; + +type SmallUnion422 = "a" | "b" | "c" | "d"; +type AllPerms422 = Permutation422; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig422, + Flat422, + FR422, + BigUnion422, + ExtractAlpha422, + ExcludeZulu422, + OptionalAll422, + RequiredAll422, + ReadonlyAll422, + NullableAll422, + TypeNames422, + Action422, + AllPerms422, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts new file mode 100644 index 00000000..36ef5fb5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-23 (seed 423) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord423 { + a423: { x: number; y: string; z: boolean }; + b423: { p: string[]; q: Record }; + c423: { nested: { deep: { deeper: { deepest: string } } } }; + d423: number; + e423: string; + f423: boolean; + g423: null; + h423: undefined; + i423: bigint; + j423: symbol; +} + +type PartialBig423 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten423 = T extends Array ? Flatten423 : T; +type Nested423 = number[][][][][][][][][][]; +type Flat423 = Flatten423; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly423 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly423 : T[K]; +}; +type DeepRequired423 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired423 : T[K]; +}; +type FR423 = DeepReadonly423>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion423 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha423 = Extract; +type ExcludeZulu423 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA423 { width: number; height: number; depth: number } +interface ShapeB423 { color: string; opacity: number; blend: string } +interface ShapeC423 { x: number; y: number; z: number; w: number } +interface ShapeD423 { label: string; title: string; summary: string } + +type Combined423 = ShapeA423 & ShapeB423 & ShapeC423 & ShapeD423; +type OptionalAll423 = { [K in keyof Combined423]?: Combined423[K] }; +type RequiredAll423 = { [K in keyof Combined423]-?: Combined423[K] }; +type ReadonlyAll423 = { readonly [K in keyof Combined423]: Combined423[K] }; +type NullableAll423 = { [K in keyof Combined423]: Combined423[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString423 = T extends string ? true : false; +type IsNumber423 = T extends number ? true : false; +type TypeName423 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames423 = { + [K in keyof BigRecord423]: TypeName423; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb423 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource423 = "user" | "post" | "comment" | "tag" | "category"; +type Action423 = `${Verb423}_${Resource423}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise423 = T extends Promise ? UnwrapPromise423 : T; +type UnwrapArray423 = T extends (infer U)[] ? UnwrapArray423 : T; +type Head423 = T extends [infer H, ...infer _] ? H : never; +type Tail423 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation423 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation423>] + : never; + +type SmallUnion423 = "a" | "b" | "c" | "d"; +type AllPerms423 = Permutation423; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig423, + Flat423, + FR423, + BigUnion423, + ExtractAlpha423, + ExcludeZulu423, + OptionalAll423, + RequiredAll423, + ReadonlyAll423, + NullableAll423, + TypeNames423, + Action423, + AllPerms423, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts new file mode 100644 index 00000000..e962b1f0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-24 (seed 424) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord424 { + a424: { x: number; y: string; z: boolean }; + b424: { p: string[]; q: Record }; + c424: { nested: { deep: { deeper: { deepest: string } } } }; + d424: number; + e424: string; + f424: boolean; + g424: null; + h424: undefined; + i424: bigint; + j424: symbol; +} + +type PartialBig424 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten424 = T extends Array ? Flatten424 : T; +type Nested424 = number[][][][][][][][][][]; +type Flat424 = Flatten424; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly424 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly424 : T[K]; +}; +type DeepRequired424 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired424 : T[K]; +}; +type FR424 = DeepReadonly424>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion424 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha424 = Extract; +type ExcludeZulu424 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA424 { width: number; height: number; depth: number } +interface ShapeB424 { color: string; opacity: number; blend: string } +interface ShapeC424 { x: number; y: number; z: number; w: number } +interface ShapeD424 { label: string; title: string; summary: string } + +type Combined424 = ShapeA424 & ShapeB424 & ShapeC424 & ShapeD424; +type OptionalAll424 = { [K in keyof Combined424]?: Combined424[K] }; +type RequiredAll424 = { [K in keyof Combined424]-?: Combined424[K] }; +type ReadonlyAll424 = { readonly [K in keyof Combined424]: Combined424[K] }; +type NullableAll424 = { [K in keyof Combined424]: Combined424[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString424 = T extends string ? true : false; +type IsNumber424 = T extends number ? true : false; +type TypeName424 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames424 = { + [K in keyof BigRecord424]: TypeName424; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb424 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource424 = "user" | "post" | "comment" | "tag" | "category"; +type Action424 = `${Verb424}_${Resource424}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise424 = T extends Promise ? UnwrapPromise424 : T; +type UnwrapArray424 = T extends (infer U)[] ? UnwrapArray424 : T; +type Head424 = T extends [infer H, ...infer _] ? H : never; +type Tail424 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation424 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation424>] + : never; + +type SmallUnion424 = "a" | "b" | "c" | "d"; +type AllPerms424 = Permutation424; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig424, + Flat424, + FR424, + BigUnion424, + ExtractAlpha424, + ExcludeZulu424, + OptionalAll424, + RequiredAll424, + ReadonlyAll424, + NullableAll424, + TypeNames424, + Action424, + AllPerms424, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts new file mode 100644 index 00000000..83f9d65c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-25 (seed 425) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord425 { + a425: { x: number; y: string; z: boolean }; + b425: { p: string[]; q: Record }; + c425: { nested: { deep: { deeper: { deepest: string } } } }; + d425: number; + e425: string; + f425: boolean; + g425: null; + h425: undefined; + i425: bigint; + j425: symbol; +} + +type PartialBig425 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten425 = T extends Array ? Flatten425 : T; +type Nested425 = number[][][][][][][][][][]; +type Flat425 = Flatten425; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly425 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly425 : T[K]; +}; +type DeepRequired425 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired425 : T[K]; +}; +type FR425 = DeepReadonly425>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion425 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha425 = Extract; +type ExcludeZulu425 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA425 { width: number; height: number; depth: number } +interface ShapeB425 { color: string; opacity: number; blend: string } +interface ShapeC425 { x: number; y: number; z: number; w: number } +interface ShapeD425 { label: string; title: string; summary: string } + +type Combined425 = ShapeA425 & ShapeB425 & ShapeC425 & ShapeD425; +type OptionalAll425 = { [K in keyof Combined425]?: Combined425[K] }; +type RequiredAll425 = { [K in keyof Combined425]-?: Combined425[K] }; +type ReadonlyAll425 = { readonly [K in keyof Combined425]: Combined425[K] }; +type NullableAll425 = { [K in keyof Combined425]: Combined425[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString425 = T extends string ? true : false; +type IsNumber425 = T extends number ? true : false; +type TypeName425 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames425 = { + [K in keyof BigRecord425]: TypeName425; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb425 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource425 = "user" | "post" | "comment" | "tag" | "category"; +type Action425 = `${Verb425}_${Resource425}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise425 = T extends Promise ? UnwrapPromise425 : T; +type UnwrapArray425 = T extends (infer U)[] ? UnwrapArray425 : T; +type Head425 = T extends [infer H, ...infer _] ? H : never; +type Tail425 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation425 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation425>] + : never; + +type SmallUnion425 = "a" | "b" | "c" | "d"; +type AllPerms425 = Permutation425; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig425, + Flat425, + FR425, + BigUnion425, + ExtractAlpha425, + ExcludeZulu425, + OptionalAll425, + RequiredAll425, + ReadonlyAll425, + NullableAll425, + TypeNames425, + Action425, + AllPerms425, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts new file mode 100644 index 00000000..e0a19a69 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-26 (seed 426) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord426 { + a426: { x: number; y: string; z: boolean }; + b426: { p: string[]; q: Record }; + c426: { nested: { deep: { deeper: { deepest: string } } } }; + d426: number; + e426: string; + f426: boolean; + g426: null; + h426: undefined; + i426: bigint; + j426: symbol; +} + +type PartialBig426 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten426 = T extends Array ? Flatten426 : T; +type Nested426 = number[][][][][][][][][][]; +type Flat426 = Flatten426; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly426 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly426 : T[K]; +}; +type DeepRequired426 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired426 : T[K]; +}; +type FR426 = DeepReadonly426>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion426 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha426 = Extract; +type ExcludeZulu426 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA426 { width: number; height: number; depth: number } +interface ShapeB426 { color: string; opacity: number; blend: string } +interface ShapeC426 { x: number; y: number; z: number; w: number } +interface ShapeD426 { label: string; title: string; summary: string } + +type Combined426 = ShapeA426 & ShapeB426 & ShapeC426 & ShapeD426; +type OptionalAll426 = { [K in keyof Combined426]?: Combined426[K] }; +type RequiredAll426 = { [K in keyof Combined426]-?: Combined426[K] }; +type ReadonlyAll426 = { readonly [K in keyof Combined426]: Combined426[K] }; +type NullableAll426 = { [K in keyof Combined426]: Combined426[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString426 = T extends string ? true : false; +type IsNumber426 = T extends number ? true : false; +type TypeName426 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames426 = { + [K in keyof BigRecord426]: TypeName426; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb426 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource426 = "user" | "post" | "comment" | "tag" | "category"; +type Action426 = `${Verb426}_${Resource426}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise426 = T extends Promise ? UnwrapPromise426 : T; +type UnwrapArray426 = T extends (infer U)[] ? UnwrapArray426 : T; +type Head426 = T extends [infer H, ...infer _] ? H : never; +type Tail426 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation426 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation426>] + : never; + +type SmallUnion426 = "a" | "b" | "c" | "d"; +type AllPerms426 = Permutation426; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig426, + Flat426, + FR426, + BigUnion426, + ExtractAlpha426, + ExcludeZulu426, + OptionalAll426, + RequiredAll426, + ReadonlyAll426, + NullableAll426, + TypeNames426, + Action426, + AllPerms426, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts new file mode 100644 index 00000000..2e46f04a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-27 (seed 427) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord427 { + a427: { x: number; y: string; z: boolean }; + b427: { p: string[]; q: Record }; + c427: { nested: { deep: { deeper: { deepest: string } } } }; + d427: number; + e427: string; + f427: boolean; + g427: null; + h427: undefined; + i427: bigint; + j427: symbol; +} + +type PartialBig427 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten427 = T extends Array ? Flatten427 : T; +type Nested427 = number[][][][][][][][][][]; +type Flat427 = Flatten427; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly427 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly427 : T[K]; +}; +type DeepRequired427 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired427 : T[K]; +}; +type FR427 = DeepReadonly427>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion427 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha427 = Extract; +type ExcludeZulu427 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA427 { width: number; height: number; depth: number } +interface ShapeB427 { color: string; opacity: number; blend: string } +interface ShapeC427 { x: number; y: number; z: number; w: number } +interface ShapeD427 { label: string; title: string; summary: string } + +type Combined427 = ShapeA427 & ShapeB427 & ShapeC427 & ShapeD427; +type OptionalAll427 = { [K in keyof Combined427]?: Combined427[K] }; +type RequiredAll427 = { [K in keyof Combined427]-?: Combined427[K] }; +type ReadonlyAll427 = { readonly [K in keyof Combined427]: Combined427[K] }; +type NullableAll427 = { [K in keyof Combined427]: Combined427[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString427 = T extends string ? true : false; +type IsNumber427 = T extends number ? true : false; +type TypeName427 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames427 = { + [K in keyof BigRecord427]: TypeName427; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb427 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource427 = "user" | "post" | "comment" | "tag" | "category"; +type Action427 = `${Verb427}_${Resource427}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise427 = T extends Promise ? UnwrapPromise427 : T; +type UnwrapArray427 = T extends (infer U)[] ? UnwrapArray427 : T; +type Head427 = T extends [infer H, ...infer _] ? H : never; +type Tail427 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation427 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation427>] + : never; + +type SmallUnion427 = "a" | "b" | "c" | "d"; +type AllPerms427 = Permutation427; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig427, + Flat427, + FR427, + BigUnion427, + ExtractAlpha427, + ExcludeZulu427, + OptionalAll427, + RequiredAll427, + ReadonlyAll427, + NullableAll427, + TypeNames427, + Action427, + AllPerms427, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts new file mode 100644 index 00000000..637adbea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-28 (seed 428) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord428 { + a428: { x: number; y: string; z: boolean }; + b428: { p: string[]; q: Record }; + c428: { nested: { deep: { deeper: { deepest: string } } } }; + d428: number; + e428: string; + f428: boolean; + g428: null; + h428: undefined; + i428: bigint; + j428: symbol; +} + +type PartialBig428 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten428 = T extends Array ? Flatten428 : T; +type Nested428 = number[][][][][][][][][][]; +type Flat428 = Flatten428; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly428 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly428 : T[K]; +}; +type DeepRequired428 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired428 : T[K]; +}; +type FR428 = DeepReadonly428>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion428 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha428 = Extract; +type ExcludeZulu428 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA428 { width: number; height: number; depth: number } +interface ShapeB428 { color: string; opacity: number; blend: string } +interface ShapeC428 { x: number; y: number; z: number; w: number } +interface ShapeD428 { label: string; title: string; summary: string } + +type Combined428 = ShapeA428 & ShapeB428 & ShapeC428 & ShapeD428; +type OptionalAll428 = { [K in keyof Combined428]?: Combined428[K] }; +type RequiredAll428 = { [K in keyof Combined428]-?: Combined428[K] }; +type ReadonlyAll428 = { readonly [K in keyof Combined428]: Combined428[K] }; +type NullableAll428 = { [K in keyof Combined428]: Combined428[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString428 = T extends string ? true : false; +type IsNumber428 = T extends number ? true : false; +type TypeName428 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames428 = { + [K in keyof BigRecord428]: TypeName428; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb428 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource428 = "user" | "post" | "comment" | "tag" | "category"; +type Action428 = `${Verb428}_${Resource428}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise428 = T extends Promise ? UnwrapPromise428 : T; +type UnwrapArray428 = T extends (infer U)[] ? UnwrapArray428 : T; +type Head428 = T extends [infer H, ...infer _] ? H : never; +type Tail428 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation428 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation428>] + : never; + +type SmallUnion428 = "a" | "b" | "c" | "d"; +type AllPerms428 = Permutation428; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig428, + Flat428, + FR428, + BigUnion428, + ExtractAlpha428, + ExcludeZulu428, + OptionalAll428, + RequiredAll428, + ReadonlyAll428, + NullableAll428, + TypeNames428, + Action428, + AllPerms428, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts new file mode 100644 index 00000000..2b73cf8a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-29 (seed 429) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord429 { + a429: { x: number; y: string; z: boolean }; + b429: { p: string[]; q: Record }; + c429: { nested: { deep: { deeper: { deepest: string } } } }; + d429: number; + e429: string; + f429: boolean; + g429: null; + h429: undefined; + i429: bigint; + j429: symbol; +} + +type PartialBig429 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten429 = T extends Array ? Flatten429 : T; +type Nested429 = number[][][][][][][][][][]; +type Flat429 = Flatten429; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly429 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly429 : T[K]; +}; +type DeepRequired429 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired429 : T[K]; +}; +type FR429 = DeepReadonly429>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion429 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha429 = Extract; +type ExcludeZulu429 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA429 { width: number; height: number; depth: number } +interface ShapeB429 { color: string; opacity: number; blend: string } +interface ShapeC429 { x: number; y: number; z: number; w: number } +interface ShapeD429 { label: string; title: string; summary: string } + +type Combined429 = ShapeA429 & ShapeB429 & ShapeC429 & ShapeD429; +type OptionalAll429 = { [K in keyof Combined429]?: Combined429[K] }; +type RequiredAll429 = { [K in keyof Combined429]-?: Combined429[K] }; +type ReadonlyAll429 = { readonly [K in keyof Combined429]: Combined429[K] }; +type NullableAll429 = { [K in keyof Combined429]: Combined429[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString429 = T extends string ? true : false; +type IsNumber429 = T extends number ? true : false; +type TypeName429 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames429 = { + [K in keyof BigRecord429]: TypeName429; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb429 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource429 = "user" | "post" | "comment" | "tag" | "category"; +type Action429 = `${Verb429}_${Resource429}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise429 = T extends Promise ? UnwrapPromise429 : T; +type UnwrapArray429 = T extends (infer U)[] ? UnwrapArray429 : T; +type Head429 = T extends [infer H, ...infer _] ? H : never; +type Tail429 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation429 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation429>] + : never; + +type SmallUnion429 = "a" | "b" | "c" | "d"; +type AllPerms429 = Permutation429; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig429, + Flat429, + FR429, + BigUnion429, + ExtractAlpha429, + ExcludeZulu429, + OptionalAll429, + RequiredAll429, + ReadonlyAll429, + NullableAll429, + TypeNames429, + Action429, + AllPerms429, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts new file mode 100644 index 00000000..38f4be17 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-30 (seed 430) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord430 { + a430: { x: number; y: string; z: boolean }; + b430: { p: string[]; q: Record }; + c430: { nested: { deep: { deeper: { deepest: string } } } }; + d430: number; + e430: string; + f430: boolean; + g430: null; + h430: undefined; + i430: bigint; + j430: symbol; +} + +type PartialBig430 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten430 = T extends Array ? Flatten430 : T; +type Nested430 = number[][][][][][][][][][]; +type Flat430 = Flatten430; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly430 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly430 : T[K]; +}; +type DeepRequired430 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired430 : T[K]; +}; +type FR430 = DeepReadonly430>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion430 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha430 = Extract; +type ExcludeZulu430 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA430 { width: number; height: number; depth: number } +interface ShapeB430 { color: string; opacity: number; blend: string } +interface ShapeC430 { x: number; y: number; z: number; w: number } +interface ShapeD430 { label: string; title: string; summary: string } + +type Combined430 = ShapeA430 & ShapeB430 & ShapeC430 & ShapeD430; +type OptionalAll430 = { [K in keyof Combined430]?: Combined430[K] }; +type RequiredAll430 = { [K in keyof Combined430]-?: Combined430[K] }; +type ReadonlyAll430 = { readonly [K in keyof Combined430]: Combined430[K] }; +type NullableAll430 = { [K in keyof Combined430]: Combined430[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString430 = T extends string ? true : false; +type IsNumber430 = T extends number ? true : false; +type TypeName430 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames430 = { + [K in keyof BigRecord430]: TypeName430; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb430 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource430 = "user" | "post" | "comment" | "tag" | "category"; +type Action430 = `${Verb430}_${Resource430}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise430 = T extends Promise ? UnwrapPromise430 : T; +type UnwrapArray430 = T extends (infer U)[] ? UnwrapArray430 : T; +type Head430 = T extends [infer H, ...infer _] ? H : never; +type Tail430 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation430 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation430>] + : never; + +type SmallUnion430 = "a" | "b" | "c" | "d"; +type AllPerms430 = Permutation430; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig430, + Flat430, + FR430, + BigUnion430, + ExtractAlpha430, + ExcludeZulu430, + OptionalAll430, + RequiredAll430, + ReadonlyAll430, + NullableAll430, + TypeNames430, + Action430, + AllPerms430, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts new file mode 100644 index 00000000..fe7c2834 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-31 (seed 431) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord431 { + a431: { x: number; y: string; z: boolean }; + b431: { p: string[]; q: Record }; + c431: { nested: { deep: { deeper: { deepest: string } } } }; + d431: number; + e431: string; + f431: boolean; + g431: null; + h431: undefined; + i431: bigint; + j431: symbol; +} + +type PartialBig431 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten431 = T extends Array ? Flatten431 : T; +type Nested431 = number[][][][][][][][][][]; +type Flat431 = Flatten431; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly431 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly431 : T[K]; +}; +type DeepRequired431 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired431 : T[K]; +}; +type FR431 = DeepReadonly431>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion431 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha431 = Extract; +type ExcludeZulu431 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA431 { width: number; height: number; depth: number } +interface ShapeB431 { color: string; opacity: number; blend: string } +interface ShapeC431 { x: number; y: number; z: number; w: number } +interface ShapeD431 { label: string; title: string; summary: string } + +type Combined431 = ShapeA431 & ShapeB431 & ShapeC431 & ShapeD431; +type OptionalAll431 = { [K in keyof Combined431]?: Combined431[K] }; +type RequiredAll431 = { [K in keyof Combined431]-?: Combined431[K] }; +type ReadonlyAll431 = { readonly [K in keyof Combined431]: Combined431[K] }; +type NullableAll431 = { [K in keyof Combined431]: Combined431[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString431 = T extends string ? true : false; +type IsNumber431 = T extends number ? true : false; +type TypeName431 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames431 = { + [K in keyof BigRecord431]: TypeName431; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb431 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource431 = "user" | "post" | "comment" | "tag" | "category"; +type Action431 = `${Verb431}_${Resource431}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise431 = T extends Promise ? UnwrapPromise431 : T; +type UnwrapArray431 = T extends (infer U)[] ? UnwrapArray431 : T; +type Head431 = T extends [infer H, ...infer _] ? H : never; +type Tail431 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation431 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation431>] + : never; + +type SmallUnion431 = "a" | "b" | "c" | "d"; +type AllPerms431 = Permutation431; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig431, + Flat431, + FR431, + BigUnion431, + ExtractAlpha431, + ExcludeZulu431, + OptionalAll431, + RequiredAll431, + ReadonlyAll431, + NullableAll431, + TypeNames431, + Action431, + AllPerms431, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts new file mode 100644 index 00000000..9fda4854 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-32 (seed 432) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord432 { + a432: { x: number; y: string; z: boolean }; + b432: { p: string[]; q: Record }; + c432: { nested: { deep: { deeper: { deepest: string } } } }; + d432: number; + e432: string; + f432: boolean; + g432: null; + h432: undefined; + i432: bigint; + j432: symbol; +} + +type PartialBig432 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten432 = T extends Array ? Flatten432 : T; +type Nested432 = number[][][][][][][][][][]; +type Flat432 = Flatten432; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly432 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly432 : T[K]; +}; +type DeepRequired432 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired432 : T[K]; +}; +type FR432 = DeepReadonly432>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion432 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha432 = Extract; +type ExcludeZulu432 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA432 { width: number; height: number; depth: number } +interface ShapeB432 { color: string; opacity: number; blend: string } +interface ShapeC432 { x: number; y: number; z: number; w: number } +interface ShapeD432 { label: string; title: string; summary: string } + +type Combined432 = ShapeA432 & ShapeB432 & ShapeC432 & ShapeD432; +type OptionalAll432 = { [K in keyof Combined432]?: Combined432[K] }; +type RequiredAll432 = { [K in keyof Combined432]-?: Combined432[K] }; +type ReadonlyAll432 = { readonly [K in keyof Combined432]: Combined432[K] }; +type NullableAll432 = { [K in keyof Combined432]: Combined432[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString432 = T extends string ? true : false; +type IsNumber432 = T extends number ? true : false; +type TypeName432 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames432 = { + [K in keyof BigRecord432]: TypeName432; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb432 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource432 = "user" | "post" | "comment" | "tag" | "category"; +type Action432 = `${Verb432}_${Resource432}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise432 = T extends Promise ? UnwrapPromise432 : T; +type UnwrapArray432 = T extends (infer U)[] ? UnwrapArray432 : T; +type Head432 = T extends [infer H, ...infer _] ? H : never; +type Tail432 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation432 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation432>] + : never; + +type SmallUnion432 = "a" | "b" | "c" | "d"; +type AllPerms432 = Permutation432; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig432, + Flat432, + FR432, + BigUnion432, + ExtractAlpha432, + ExcludeZulu432, + OptionalAll432, + RequiredAll432, + ReadonlyAll432, + NullableAll432, + TypeNames432, + Action432, + AllPerms432, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts new file mode 100644 index 00000000..76c1983c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-33 (seed 433) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord433 { + a433: { x: number; y: string; z: boolean }; + b433: { p: string[]; q: Record }; + c433: { nested: { deep: { deeper: { deepest: string } } } }; + d433: number; + e433: string; + f433: boolean; + g433: null; + h433: undefined; + i433: bigint; + j433: symbol; +} + +type PartialBig433 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten433 = T extends Array ? Flatten433 : T; +type Nested433 = number[][][][][][][][][][]; +type Flat433 = Flatten433; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly433 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly433 : T[K]; +}; +type DeepRequired433 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired433 : T[K]; +}; +type FR433 = DeepReadonly433>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion433 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha433 = Extract; +type ExcludeZulu433 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA433 { width: number; height: number; depth: number } +interface ShapeB433 { color: string; opacity: number; blend: string } +interface ShapeC433 { x: number; y: number; z: number; w: number } +interface ShapeD433 { label: string; title: string; summary: string } + +type Combined433 = ShapeA433 & ShapeB433 & ShapeC433 & ShapeD433; +type OptionalAll433 = { [K in keyof Combined433]?: Combined433[K] }; +type RequiredAll433 = { [K in keyof Combined433]-?: Combined433[K] }; +type ReadonlyAll433 = { readonly [K in keyof Combined433]: Combined433[K] }; +type NullableAll433 = { [K in keyof Combined433]: Combined433[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString433 = T extends string ? true : false; +type IsNumber433 = T extends number ? true : false; +type TypeName433 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames433 = { + [K in keyof BigRecord433]: TypeName433; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb433 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource433 = "user" | "post" | "comment" | "tag" | "category"; +type Action433 = `${Verb433}_${Resource433}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise433 = T extends Promise ? UnwrapPromise433 : T; +type UnwrapArray433 = T extends (infer U)[] ? UnwrapArray433 : T; +type Head433 = T extends [infer H, ...infer _] ? H : never; +type Tail433 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation433 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation433>] + : never; + +type SmallUnion433 = "a" | "b" | "c" | "d"; +type AllPerms433 = Permutation433; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig433, + Flat433, + FR433, + BigUnion433, + ExtractAlpha433, + ExcludeZulu433, + OptionalAll433, + RequiredAll433, + ReadonlyAll433, + NullableAll433, + TypeNames433, + Action433, + AllPerms433, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts new file mode 100644 index 00000000..dd3ee7d4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-34 (seed 434) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord434 { + a434: { x: number; y: string; z: boolean }; + b434: { p: string[]; q: Record }; + c434: { nested: { deep: { deeper: { deepest: string } } } }; + d434: number; + e434: string; + f434: boolean; + g434: null; + h434: undefined; + i434: bigint; + j434: symbol; +} + +type PartialBig434 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten434 = T extends Array ? Flatten434 : T; +type Nested434 = number[][][][][][][][][][]; +type Flat434 = Flatten434; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly434 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly434 : T[K]; +}; +type DeepRequired434 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired434 : T[K]; +}; +type FR434 = DeepReadonly434>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion434 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha434 = Extract; +type ExcludeZulu434 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA434 { width: number; height: number; depth: number } +interface ShapeB434 { color: string; opacity: number; blend: string } +interface ShapeC434 { x: number; y: number; z: number; w: number } +interface ShapeD434 { label: string; title: string; summary: string } + +type Combined434 = ShapeA434 & ShapeB434 & ShapeC434 & ShapeD434; +type OptionalAll434 = { [K in keyof Combined434]?: Combined434[K] }; +type RequiredAll434 = { [K in keyof Combined434]-?: Combined434[K] }; +type ReadonlyAll434 = { readonly [K in keyof Combined434]: Combined434[K] }; +type NullableAll434 = { [K in keyof Combined434]: Combined434[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString434 = T extends string ? true : false; +type IsNumber434 = T extends number ? true : false; +type TypeName434 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames434 = { + [K in keyof BigRecord434]: TypeName434; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb434 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource434 = "user" | "post" | "comment" | "tag" | "category"; +type Action434 = `${Verb434}_${Resource434}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise434 = T extends Promise ? UnwrapPromise434 : T; +type UnwrapArray434 = T extends (infer U)[] ? UnwrapArray434 : T; +type Head434 = T extends [infer H, ...infer _] ? H : never; +type Tail434 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation434 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation434>] + : never; + +type SmallUnion434 = "a" | "b" | "c" | "d"; +type AllPerms434 = Permutation434; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig434, + Flat434, + FR434, + BigUnion434, + ExtractAlpha434, + ExcludeZulu434, + OptionalAll434, + RequiredAll434, + ReadonlyAll434, + NullableAll434, + TypeNames434, + Action434, + AllPerms434, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts new file mode 100644 index 00000000..19017211 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-35 (seed 435) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord435 { + a435: { x: number; y: string; z: boolean }; + b435: { p: string[]; q: Record }; + c435: { nested: { deep: { deeper: { deepest: string } } } }; + d435: number; + e435: string; + f435: boolean; + g435: null; + h435: undefined; + i435: bigint; + j435: symbol; +} + +type PartialBig435 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten435 = T extends Array ? Flatten435 : T; +type Nested435 = number[][][][][][][][][][]; +type Flat435 = Flatten435; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly435 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly435 : T[K]; +}; +type DeepRequired435 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired435 : T[K]; +}; +type FR435 = DeepReadonly435>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion435 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha435 = Extract; +type ExcludeZulu435 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA435 { width: number; height: number; depth: number } +interface ShapeB435 { color: string; opacity: number; blend: string } +interface ShapeC435 { x: number; y: number; z: number; w: number } +interface ShapeD435 { label: string; title: string; summary: string } + +type Combined435 = ShapeA435 & ShapeB435 & ShapeC435 & ShapeD435; +type OptionalAll435 = { [K in keyof Combined435]?: Combined435[K] }; +type RequiredAll435 = { [K in keyof Combined435]-?: Combined435[K] }; +type ReadonlyAll435 = { readonly [K in keyof Combined435]: Combined435[K] }; +type NullableAll435 = { [K in keyof Combined435]: Combined435[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString435 = T extends string ? true : false; +type IsNumber435 = T extends number ? true : false; +type TypeName435 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames435 = { + [K in keyof BigRecord435]: TypeName435; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb435 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource435 = "user" | "post" | "comment" | "tag" | "category"; +type Action435 = `${Verb435}_${Resource435}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise435 = T extends Promise ? UnwrapPromise435 : T; +type UnwrapArray435 = T extends (infer U)[] ? UnwrapArray435 : T; +type Head435 = T extends [infer H, ...infer _] ? H : never; +type Tail435 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation435 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation435>] + : never; + +type SmallUnion435 = "a" | "b" | "c" | "d"; +type AllPerms435 = Permutation435; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig435, + Flat435, + FR435, + BigUnion435, + ExtractAlpha435, + ExcludeZulu435, + OptionalAll435, + RequiredAll435, + ReadonlyAll435, + NullableAll435, + TypeNames435, + Action435, + AllPerms435, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts new file mode 100644 index 00000000..46adeeee --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-36 (seed 436) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord436 { + a436: { x: number; y: string; z: boolean }; + b436: { p: string[]; q: Record }; + c436: { nested: { deep: { deeper: { deepest: string } } } }; + d436: number; + e436: string; + f436: boolean; + g436: null; + h436: undefined; + i436: bigint; + j436: symbol; +} + +type PartialBig436 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten436 = T extends Array ? Flatten436 : T; +type Nested436 = number[][][][][][][][][][]; +type Flat436 = Flatten436; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly436 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly436 : T[K]; +}; +type DeepRequired436 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired436 : T[K]; +}; +type FR436 = DeepReadonly436>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion436 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha436 = Extract; +type ExcludeZulu436 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA436 { width: number; height: number; depth: number } +interface ShapeB436 { color: string; opacity: number; blend: string } +interface ShapeC436 { x: number; y: number; z: number; w: number } +interface ShapeD436 { label: string; title: string; summary: string } + +type Combined436 = ShapeA436 & ShapeB436 & ShapeC436 & ShapeD436; +type OptionalAll436 = { [K in keyof Combined436]?: Combined436[K] }; +type RequiredAll436 = { [K in keyof Combined436]-?: Combined436[K] }; +type ReadonlyAll436 = { readonly [K in keyof Combined436]: Combined436[K] }; +type NullableAll436 = { [K in keyof Combined436]: Combined436[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString436 = T extends string ? true : false; +type IsNumber436 = T extends number ? true : false; +type TypeName436 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames436 = { + [K in keyof BigRecord436]: TypeName436; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb436 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource436 = "user" | "post" | "comment" | "tag" | "category"; +type Action436 = `${Verb436}_${Resource436}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise436 = T extends Promise ? UnwrapPromise436 : T; +type UnwrapArray436 = T extends (infer U)[] ? UnwrapArray436 : T; +type Head436 = T extends [infer H, ...infer _] ? H : never; +type Tail436 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation436 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation436>] + : never; + +type SmallUnion436 = "a" | "b" | "c" | "d"; +type AllPerms436 = Permutation436; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig436, + Flat436, + FR436, + BigUnion436, + ExtractAlpha436, + ExcludeZulu436, + OptionalAll436, + RequiredAll436, + ReadonlyAll436, + NullableAll436, + TypeNames436, + Action436, + AllPerms436, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts new file mode 100644 index 00000000..965d851f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-37 (seed 437) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord437 { + a437: { x: number; y: string; z: boolean }; + b437: { p: string[]; q: Record }; + c437: { nested: { deep: { deeper: { deepest: string } } } }; + d437: number; + e437: string; + f437: boolean; + g437: null; + h437: undefined; + i437: bigint; + j437: symbol; +} + +type PartialBig437 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten437 = T extends Array ? Flatten437 : T; +type Nested437 = number[][][][][][][][][][]; +type Flat437 = Flatten437; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly437 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly437 : T[K]; +}; +type DeepRequired437 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired437 : T[K]; +}; +type FR437 = DeepReadonly437>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion437 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha437 = Extract; +type ExcludeZulu437 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA437 { width: number; height: number; depth: number } +interface ShapeB437 { color: string; opacity: number; blend: string } +interface ShapeC437 { x: number; y: number; z: number; w: number } +interface ShapeD437 { label: string; title: string; summary: string } + +type Combined437 = ShapeA437 & ShapeB437 & ShapeC437 & ShapeD437; +type OptionalAll437 = { [K in keyof Combined437]?: Combined437[K] }; +type RequiredAll437 = { [K in keyof Combined437]-?: Combined437[K] }; +type ReadonlyAll437 = { readonly [K in keyof Combined437]: Combined437[K] }; +type NullableAll437 = { [K in keyof Combined437]: Combined437[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString437 = T extends string ? true : false; +type IsNumber437 = T extends number ? true : false; +type TypeName437 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames437 = { + [K in keyof BigRecord437]: TypeName437; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb437 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource437 = "user" | "post" | "comment" | "tag" | "category"; +type Action437 = `${Verb437}_${Resource437}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise437 = T extends Promise ? UnwrapPromise437 : T; +type UnwrapArray437 = T extends (infer U)[] ? UnwrapArray437 : T; +type Head437 = T extends [infer H, ...infer _] ? H : never; +type Tail437 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation437 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation437>] + : never; + +type SmallUnion437 = "a" | "b" | "c" | "d"; +type AllPerms437 = Permutation437; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig437, + Flat437, + FR437, + BigUnion437, + ExtractAlpha437, + ExcludeZulu437, + OptionalAll437, + RequiredAll437, + ReadonlyAll437, + NullableAll437, + TypeNames437, + Action437, + AllPerms437, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts new file mode 100644 index 00000000..becc9141 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-38 (seed 438) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord438 { + a438: { x: number; y: string; z: boolean }; + b438: { p: string[]; q: Record }; + c438: { nested: { deep: { deeper: { deepest: string } } } }; + d438: number; + e438: string; + f438: boolean; + g438: null; + h438: undefined; + i438: bigint; + j438: symbol; +} + +type PartialBig438 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten438 = T extends Array ? Flatten438 : T; +type Nested438 = number[][][][][][][][][][]; +type Flat438 = Flatten438; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly438 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly438 : T[K]; +}; +type DeepRequired438 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired438 : T[K]; +}; +type FR438 = DeepReadonly438>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion438 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha438 = Extract; +type ExcludeZulu438 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA438 { width: number; height: number; depth: number } +interface ShapeB438 { color: string; opacity: number; blend: string } +interface ShapeC438 { x: number; y: number; z: number; w: number } +interface ShapeD438 { label: string; title: string; summary: string } + +type Combined438 = ShapeA438 & ShapeB438 & ShapeC438 & ShapeD438; +type OptionalAll438 = { [K in keyof Combined438]?: Combined438[K] }; +type RequiredAll438 = { [K in keyof Combined438]-?: Combined438[K] }; +type ReadonlyAll438 = { readonly [K in keyof Combined438]: Combined438[K] }; +type NullableAll438 = { [K in keyof Combined438]: Combined438[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString438 = T extends string ? true : false; +type IsNumber438 = T extends number ? true : false; +type TypeName438 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames438 = { + [K in keyof BigRecord438]: TypeName438; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb438 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource438 = "user" | "post" | "comment" | "tag" | "category"; +type Action438 = `${Verb438}_${Resource438}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise438 = T extends Promise ? UnwrapPromise438 : T; +type UnwrapArray438 = T extends (infer U)[] ? UnwrapArray438 : T; +type Head438 = T extends [infer H, ...infer _] ? H : never; +type Tail438 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation438 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation438>] + : never; + +type SmallUnion438 = "a" | "b" | "c" | "d"; +type AllPerms438 = Permutation438; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig438, + Flat438, + FR438, + BigUnion438, + ExtractAlpha438, + ExcludeZulu438, + OptionalAll438, + RequiredAll438, + ReadonlyAll438, + NullableAll438, + TypeNames438, + Action438, + AllPerms438, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts new file mode 100644 index 00000000..b267084a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-39 (seed 439) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord439 { + a439: { x: number; y: string; z: boolean }; + b439: { p: string[]; q: Record }; + c439: { nested: { deep: { deeper: { deepest: string } } } }; + d439: number; + e439: string; + f439: boolean; + g439: null; + h439: undefined; + i439: bigint; + j439: symbol; +} + +type PartialBig439 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten439 = T extends Array ? Flatten439 : T; +type Nested439 = number[][][][][][][][][][]; +type Flat439 = Flatten439; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly439 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly439 : T[K]; +}; +type DeepRequired439 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired439 : T[K]; +}; +type FR439 = DeepReadonly439>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion439 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha439 = Extract; +type ExcludeZulu439 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA439 { width: number; height: number; depth: number } +interface ShapeB439 { color: string; opacity: number; blend: string } +interface ShapeC439 { x: number; y: number; z: number; w: number } +interface ShapeD439 { label: string; title: string; summary: string } + +type Combined439 = ShapeA439 & ShapeB439 & ShapeC439 & ShapeD439; +type OptionalAll439 = { [K in keyof Combined439]?: Combined439[K] }; +type RequiredAll439 = { [K in keyof Combined439]-?: Combined439[K] }; +type ReadonlyAll439 = { readonly [K in keyof Combined439]: Combined439[K] }; +type NullableAll439 = { [K in keyof Combined439]: Combined439[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString439 = T extends string ? true : false; +type IsNumber439 = T extends number ? true : false; +type TypeName439 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames439 = { + [K in keyof BigRecord439]: TypeName439; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb439 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource439 = "user" | "post" | "comment" | "tag" | "category"; +type Action439 = `${Verb439}_${Resource439}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise439 = T extends Promise ? UnwrapPromise439 : T; +type UnwrapArray439 = T extends (infer U)[] ? UnwrapArray439 : T; +type Head439 = T extends [infer H, ...infer _] ? H : never; +type Tail439 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation439 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation439>] + : never; + +type SmallUnion439 = "a" | "b" | "c" | "d"; +type AllPerms439 = Permutation439; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig439, + Flat439, + FR439, + BigUnion439, + ExtractAlpha439, + ExcludeZulu439, + OptionalAll439, + RequiredAll439, + ReadonlyAll439, + NullableAll439, + TypeNames439, + Action439, + AllPerms439, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts new file mode 100644 index 00000000..01ef7d89 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-40 (seed 440) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord440 { + a440: { x: number; y: string; z: boolean }; + b440: { p: string[]; q: Record }; + c440: { nested: { deep: { deeper: { deepest: string } } } }; + d440: number; + e440: string; + f440: boolean; + g440: null; + h440: undefined; + i440: bigint; + j440: symbol; +} + +type PartialBig440 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten440 = T extends Array ? Flatten440 : T; +type Nested440 = number[][][][][][][][][][]; +type Flat440 = Flatten440; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly440 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly440 : T[K]; +}; +type DeepRequired440 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired440 : T[K]; +}; +type FR440 = DeepReadonly440>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion440 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha440 = Extract; +type ExcludeZulu440 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA440 { width: number; height: number; depth: number } +interface ShapeB440 { color: string; opacity: number; blend: string } +interface ShapeC440 { x: number; y: number; z: number; w: number } +interface ShapeD440 { label: string; title: string; summary: string } + +type Combined440 = ShapeA440 & ShapeB440 & ShapeC440 & ShapeD440; +type OptionalAll440 = { [K in keyof Combined440]?: Combined440[K] }; +type RequiredAll440 = { [K in keyof Combined440]-?: Combined440[K] }; +type ReadonlyAll440 = { readonly [K in keyof Combined440]: Combined440[K] }; +type NullableAll440 = { [K in keyof Combined440]: Combined440[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString440 = T extends string ? true : false; +type IsNumber440 = T extends number ? true : false; +type TypeName440 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames440 = { + [K in keyof BigRecord440]: TypeName440; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb440 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource440 = "user" | "post" | "comment" | "tag" | "category"; +type Action440 = `${Verb440}_${Resource440}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise440 = T extends Promise ? UnwrapPromise440 : T; +type UnwrapArray440 = T extends (infer U)[] ? UnwrapArray440 : T; +type Head440 = T extends [infer H, ...infer _] ? H : never; +type Tail440 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation440 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation440>] + : never; + +type SmallUnion440 = "a" | "b" | "c" | "d"; +type AllPerms440 = Permutation440; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig440, + Flat440, + FR440, + BigUnion440, + ExtractAlpha440, + ExcludeZulu440, + OptionalAll440, + RequiredAll440, + ReadonlyAll440, + NullableAll440, + TypeNames440, + Action440, + AllPerms440, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts new file mode 100644 index 00000000..acc21bb6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-41 (seed 441) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord441 { + a441: { x: number; y: string; z: boolean }; + b441: { p: string[]; q: Record }; + c441: { nested: { deep: { deeper: { deepest: string } } } }; + d441: number; + e441: string; + f441: boolean; + g441: null; + h441: undefined; + i441: bigint; + j441: symbol; +} + +type PartialBig441 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten441 = T extends Array ? Flatten441 : T; +type Nested441 = number[][][][][][][][][][]; +type Flat441 = Flatten441; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly441 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly441 : T[K]; +}; +type DeepRequired441 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired441 : T[K]; +}; +type FR441 = DeepReadonly441>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion441 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha441 = Extract; +type ExcludeZulu441 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA441 { width: number; height: number; depth: number } +interface ShapeB441 { color: string; opacity: number; blend: string } +interface ShapeC441 { x: number; y: number; z: number; w: number } +interface ShapeD441 { label: string; title: string; summary: string } + +type Combined441 = ShapeA441 & ShapeB441 & ShapeC441 & ShapeD441; +type OptionalAll441 = { [K in keyof Combined441]?: Combined441[K] }; +type RequiredAll441 = { [K in keyof Combined441]-?: Combined441[K] }; +type ReadonlyAll441 = { readonly [K in keyof Combined441]: Combined441[K] }; +type NullableAll441 = { [K in keyof Combined441]: Combined441[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString441 = T extends string ? true : false; +type IsNumber441 = T extends number ? true : false; +type TypeName441 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames441 = { + [K in keyof BigRecord441]: TypeName441; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb441 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource441 = "user" | "post" | "comment" | "tag" | "category"; +type Action441 = `${Verb441}_${Resource441}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise441 = T extends Promise ? UnwrapPromise441 : T; +type UnwrapArray441 = T extends (infer U)[] ? UnwrapArray441 : T; +type Head441 = T extends [infer H, ...infer _] ? H : never; +type Tail441 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation441 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation441>] + : never; + +type SmallUnion441 = "a" | "b" | "c" | "d"; +type AllPerms441 = Permutation441; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig441, + Flat441, + FR441, + BigUnion441, + ExtractAlpha441, + ExcludeZulu441, + OptionalAll441, + RequiredAll441, + ReadonlyAll441, + NullableAll441, + TypeNames441, + Action441, + AllPerms441, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts new file mode 100644 index 00000000..cdc90daf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-42 (seed 442) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord442 { + a442: { x: number; y: string; z: boolean }; + b442: { p: string[]; q: Record }; + c442: { nested: { deep: { deeper: { deepest: string } } } }; + d442: number; + e442: string; + f442: boolean; + g442: null; + h442: undefined; + i442: bigint; + j442: symbol; +} + +type PartialBig442 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten442 = T extends Array ? Flatten442 : T; +type Nested442 = number[][][][][][][][][][]; +type Flat442 = Flatten442; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly442 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly442 : T[K]; +}; +type DeepRequired442 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired442 : T[K]; +}; +type FR442 = DeepReadonly442>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion442 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha442 = Extract; +type ExcludeZulu442 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA442 { width: number; height: number; depth: number } +interface ShapeB442 { color: string; opacity: number; blend: string } +interface ShapeC442 { x: number; y: number; z: number; w: number } +interface ShapeD442 { label: string; title: string; summary: string } + +type Combined442 = ShapeA442 & ShapeB442 & ShapeC442 & ShapeD442; +type OptionalAll442 = { [K in keyof Combined442]?: Combined442[K] }; +type RequiredAll442 = { [K in keyof Combined442]-?: Combined442[K] }; +type ReadonlyAll442 = { readonly [K in keyof Combined442]: Combined442[K] }; +type NullableAll442 = { [K in keyof Combined442]: Combined442[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString442 = T extends string ? true : false; +type IsNumber442 = T extends number ? true : false; +type TypeName442 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames442 = { + [K in keyof BigRecord442]: TypeName442; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb442 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource442 = "user" | "post" | "comment" | "tag" | "category"; +type Action442 = `${Verb442}_${Resource442}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise442 = T extends Promise ? UnwrapPromise442 : T; +type UnwrapArray442 = T extends (infer U)[] ? UnwrapArray442 : T; +type Head442 = T extends [infer H, ...infer _] ? H : never; +type Tail442 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation442 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation442>] + : never; + +type SmallUnion442 = "a" | "b" | "c" | "d"; +type AllPerms442 = Permutation442; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig442, + Flat442, + FR442, + BigUnion442, + ExtractAlpha442, + ExcludeZulu442, + OptionalAll442, + RequiredAll442, + ReadonlyAll442, + NullableAll442, + TypeNames442, + Action442, + AllPerms442, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts new file mode 100644 index 00000000..91946b5e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-43 (seed 443) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord443 { + a443: { x: number; y: string; z: boolean }; + b443: { p: string[]; q: Record }; + c443: { nested: { deep: { deeper: { deepest: string } } } }; + d443: number; + e443: string; + f443: boolean; + g443: null; + h443: undefined; + i443: bigint; + j443: symbol; +} + +type PartialBig443 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten443 = T extends Array ? Flatten443 : T; +type Nested443 = number[][][][][][][][][][]; +type Flat443 = Flatten443; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly443 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly443 : T[K]; +}; +type DeepRequired443 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired443 : T[K]; +}; +type FR443 = DeepReadonly443>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion443 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha443 = Extract; +type ExcludeZulu443 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA443 { width: number; height: number; depth: number } +interface ShapeB443 { color: string; opacity: number; blend: string } +interface ShapeC443 { x: number; y: number; z: number; w: number } +interface ShapeD443 { label: string; title: string; summary: string } + +type Combined443 = ShapeA443 & ShapeB443 & ShapeC443 & ShapeD443; +type OptionalAll443 = { [K in keyof Combined443]?: Combined443[K] }; +type RequiredAll443 = { [K in keyof Combined443]-?: Combined443[K] }; +type ReadonlyAll443 = { readonly [K in keyof Combined443]: Combined443[K] }; +type NullableAll443 = { [K in keyof Combined443]: Combined443[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString443 = T extends string ? true : false; +type IsNumber443 = T extends number ? true : false; +type TypeName443 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames443 = { + [K in keyof BigRecord443]: TypeName443; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb443 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource443 = "user" | "post" | "comment" | "tag" | "category"; +type Action443 = `${Verb443}_${Resource443}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise443 = T extends Promise ? UnwrapPromise443 : T; +type UnwrapArray443 = T extends (infer U)[] ? UnwrapArray443 : T; +type Head443 = T extends [infer H, ...infer _] ? H : never; +type Tail443 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation443 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation443>] + : never; + +type SmallUnion443 = "a" | "b" | "c" | "d"; +type AllPerms443 = Permutation443; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig443, + Flat443, + FR443, + BigUnion443, + ExtractAlpha443, + ExcludeZulu443, + OptionalAll443, + RequiredAll443, + ReadonlyAll443, + NullableAll443, + TypeNames443, + Action443, + AllPerms443, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts new file mode 100644 index 00000000..238fc8aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-44 (seed 444) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord444 { + a444: { x: number; y: string; z: boolean }; + b444: { p: string[]; q: Record }; + c444: { nested: { deep: { deeper: { deepest: string } } } }; + d444: number; + e444: string; + f444: boolean; + g444: null; + h444: undefined; + i444: bigint; + j444: symbol; +} + +type PartialBig444 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten444 = T extends Array ? Flatten444 : T; +type Nested444 = number[][][][][][][][][][]; +type Flat444 = Flatten444; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly444 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly444 : T[K]; +}; +type DeepRequired444 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired444 : T[K]; +}; +type FR444 = DeepReadonly444>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion444 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha444 = Extract; +type ExcludeZulu444 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA444 { width: number; height: number; depth: number } +interface ShapeB444 { color: string; opacity: number; blend: string } +interface ShapeC444 { x: number; y: number; z: number; w: number } +interface ShapeD444 { label: string; title: string; summary: string } + +type Combined444 = ShapeA444 & ShapeB444 & ShapeC444 & ShapeD444; +type OptionalAll444 = { [K in keyof Combined444]?: Combined444[K] }; +type RequiredAll444 = { [K in keyof Combined444]-?: Combined444[K] }; +type ReadonlyAll444 = { readonly [K in keyof Combined444]: Combined444[K] }; +type NullableAll444 = { [K in keyof Combined444]: Combined444[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString444 = T extends string ? true : false; +type IsNumber444 = T extends number ? true : false; +type TypeName444 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames444 = { + [K in keyof BigRecord444]: TypeName444; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb444 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource444 = "user" | "post" | "comment" | "tag" | "category"; +type Action444 = `${Verb444}_${Resource444}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise444 = T extends Promise ? UnwrapPromise444 : T; +type UnwrapArray444 = T extends (infer U)[] ? UnwrapArray444 : T; +type Head444 = T extends [infer H, ...infer _] ? H : never; +type Tail444 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation444 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation444>] + : never; + +type SmallUnion444 = "a" | "b" | "c" | "d"; +type AllPerms444 = Permutation444; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig444, + Flat444, + FR444, + BigUnion444, + ExtractAlpha444, + ExcludeZulu444, + OptionalAll444, + RequiredAll444, + ReadonlyAll444, + NullableAll444, + TypeNames444, + Action444, + AllPerms444, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts new file mode 100644 index 00000000..9d54df44 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-45 (seed 445) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord445 { + a445: { x: number; y: string; z: boolean }; + b445: { p: string[]; q: Record }; + c445: { nested: { deep: { deeper: { deepest: string } } } }; + d445: number; + e445: string; + f445: boolean; + g445: null; + h445: undefined; + i445: bigint; + j445: symbol; +} + +type PartialBig445 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten445 = T extends Array ? Flatten445 : T; +type Nested445 = number[][][][][][][][][][]; +type Flat445 = Flatten445; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly445 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly445 : T[K]; +}; +type DeepRequired445 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired445 : T[K]; +}; +type FR445 = DeepReadonly445>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion445 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha445 = Extract; +type ExcludeZulu445 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA445 { width: number; height: number; depth: number } +interface ShapeB445 { color: string; opacity: number; blend: string } +interface ShapeC445 { x: number; y: number; z: number; w: number } +interface ShapeD445 { label: string; title: string; summary: string } + +type Combined445 = ShapeA445 & ShapeB445 & ShapeC445 & ShapeD445; +type OptionalAll445 = { [K in keyof Combined445]?: Combined445[K] }; +type RequiredAll445 = { [K in keyof Combined445]-?: Combined445[K] }; +type ReadonlyAll445 = { readonly [K in keyof Combined445]: Combined445[K] }; +type NullableAll445 = { [K in keyof Combined445]: Combined445[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString445 = T extends string ? true : false; +type IsNumber445 = T extends number ? true : false; +type TypeName445 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames445 = { + [K in keyof BigRecord445]: TypeName445; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb445 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource445 = "user" | "post" | "comment" | "tag" | "category"; +type Action445 = `${Verb445}_${Resource445}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise445 = T extends Promise ? UnwrapPromise445 : T; +type UnwrapArray445 = T extends (infer U)[] ? UnwrapArray445 : T; +type Head445 = T extends [infer H, ...infer _] ? H : never; +type Tail445 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation445 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation445>] + : never; + +type SmallUnion445 = "a" | "b" | "c" | "d"; +type AllPerms445 = Permutation445; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig445, + Flat445, + FR445, + BigUnion445, + ExtractAlpha445, + ExcludeZulu445, + OptionalAll445, + RequiredAll445, + ReadonlyAll445, + NullableAll445, + TypeNames445, + Action445, + AllPerms445, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts new file mode 100644 index 00000000..62e74c46 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-46 (seed 446) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord446 { + a446: { x: number; y: string; z: boolean }; + b446: { p: string[]; q: Record }; + c446: { nested: { deep: { deeper: { deepest: string } } } }; + d446: number; + e446: string; + f446: boolean; + g446: null; + h446: undefined; + i446: bigint; + j446: symbol; +} + +type PartialBig446 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten446 = T extends Array ? Flatten446 : T; +type Nested446 = number[][][][][][][][][][]; +type Flat446 = Flatten446; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly446 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly446 : T[K]; +}; +type DeepRequired446 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired446 : T[K]; +}; +type FR446 = DeepReadonly446>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion446 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha446 = Extract; +type ExcludeZulu446 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA446 { width: number; height: number; depth: number } +interface ShapeB446 { color: string; opacity: number; blend: string } +interface ShapeC446 { x: number; y: number; z: number; w: number } +interface ShapeD446 { label: string; title: string; summary: string } + +type Combined446 = ShapeA446 & ShapeB446 & ShapeC446 & ShapeD446; +type OptionalAll446 = { [K in keyof Combined446]?: Combined446[K] }; +type RequiredAll446 = { [K in keyof Combined446]-?: Combined446[K] }; +type ReadonlyAll446 = { readonly [K in keyof Combined446]: Combined446[K] }; +type NullableAll446 = { [K in keyof Combined446]: Combined446[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString446 = T extends string ? true : false; +type IsNumber446 = T extends number ? true : false; +type TypeName446 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames446 = { + [K in keyof BigRecord446]: TypeName446; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb446 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource446 = "user" | "post" | "comment" | "tag" | "category"; +type Action446 = `${Verb446}_${Resource446}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise446 = T extends Promise ? UnwrapPromise446 : T; +type UnwrapArray446 = T extends (infer U)[] ? UnwrapArray446 : T; +type Head446 = T extends [infer H, ...infer _] ? H : never; +type Tail446 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation446 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation446>] + : never; + +type SmallUnion446 = "a" | "b" | "c" | "d"; +type AllPerms446 = Permutation446; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig446, + Flat446, + FR446, + BigUnion446, + ExtractAlpha446, + ExcludeZulu446, + OptionalAll446, + RequiredAll446, + ReadonlyAll446, + NullableAll446, + TypeNames446, + Action446, + AllPerms446, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts new file mode 100644 index 00000000..d53393c6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-47 (seed 447) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord447 { + a447: { x: number; y: string; z: boolean }; + b447: { p: string[]; q: Record }; + c447: { nested: { deep: { deeper: { deepest: string } } } }; + d447: number; + e447: string; + f447: boolean; + g447: null; + h447: undefined; + i447: bigint; + j447: symbol; +} + +type PartialBig447 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten447 = T extends Array ? Flatten447 : T; +type Nested447 = number[][][][][][][][][][]; +type Flat447 = Flatten447; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly447 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly447 : T[K]; +}; +type DeepRequired447 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired447 : T[K]; +}; +type FR447 = DeepReadonly447>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion447 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha447 = Extract; +type ExcludeZulu447 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA447 { width: number; height: number; depth: number } +interface ShapeB447 { color: string; opacity: number; blend: string } +interface ShapeC447 { x: number; y: number; z: number; w: number } +interface ShapeD447 { label: string; title: string; summary: string } + +type Combined447 = ShapeA447 & ShapeB447 & ShapeC447 & ShapeD447; +type OptionalAll447 = { [K in keyof Combined447]?: Combined447[K] }; +type RequiredAll447 = { [K in keyof Combined447]-?: Combined447[K] }; +type ReadonlyAll447 = { readonly [K in keyof Combined447]: Combined447[K] }; +type NullableAll447 = { [K in keyof Combined447]: Combined447[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString447 = T extends string ? true : false; +type IsNumber447 = T extends number ? true : false; +type TypeName447 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames447 = { + [K in keyof BigRecord447]: TypeName447; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb447 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource447 = "user" | "post" | "comment" | "tag" | "category"; +type Action447 = `${Verb447}_${Resource447}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise447 = T extends Promise ? UnwrapPromise447 : T; +type UnwrapArray447 = T extends (infer U)[] ? UnwrapArray447 : T; +type Head447 = T extends [infer H, ...infer _] ? H : never; +type Tail447 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation447 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation447>] + : never; + +type SmallUnion447 = "a" | "b" | "c" | "d"; +type AllPerms447 = Permutation447; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig447, + Flat447, + FR447, + BigUnion447, + ExtractAlpha447, + ExcludeZulu447, + OptionalAll447, + RequiredAll447, + ReadonlyAll447, + NullableAll447, + TypeNames447, + Action447, + AllPerms447, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts new file mode 100644 index 00000000..004e0148 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-48 (seed 448) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord448 { + a448: { x: number; y: string; z: boolean }; + b448: { p: string[]; q: Record }; + c448: { nested: { deep: { deeper: { deepest: string } } } }; + d448: number; + e448: string; + f448: boolean; + g448: null; + h448: undefined; + i448: bigint; + j448: symbol; +} + +type PartialBig448 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten448 = T extends Array ? Flatten448 : T; +type Nested448 = number[][][][][][][][][][]; +type Flat448 = Flatten448; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly448 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly448 : T[K]; +}; +type DeepRequired448 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired448 : T[K]; +}; +type FR448 = DeepReadonly448>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion448 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha448 = Extract; +type ExcludeZulu448 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA448 { width: number; height: number; depth: number } +interface ShapeB448 { color: string; opacity: number; blend: string } +interface ShapeC448 { x: number; y: number; z: number; w: number } +interface ShapeD448 { label: string; title: string; summary: string } + +type Combined448 = ShapeA448 & ShapeB448 & ShapeC448 & ShapeD448; +type OptionalAll448 = { [K in keyof Combined448]?: Combined448[K] }; +type RequiredAll448 = { [K in keyof Combined448]-?: Combined448[K] }; +type ReadonlyAll448 = { readonly [K in keyof Combined448]: Combined448[K] }; +type NullableAll448 = { [K in keyof Combined448]: Combined448[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString448 = T extends string ? true : false; +type IsNumber448 = T extends number ? true : false; +type TypeName448 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames448 = { + [K in keyof BigRecord448]: TypeName448; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb448 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource448 = "user" | "post" | "comment" | "tag" | "category"; +type Action448 = `${Verb448}_${Resource448}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise448 = T extends Promise ? UnwrapPromise448 : T; +type UnwrapArray448 = T extends (infer U)[] ? UnwrapArray448 : T; +type Head448 = T extends [infer H, ...infer _] ? H : never; +type Tail448 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation448 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation448>] + : never; + +type SmallUnion448 = "a" | "b" | "c" | "d"; +type AllPerms448 = Permutation448; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig448, + Flat448, + FR448, + BigUnion448, + ExtractAlpha448, + ExcludeZulu448, + OptionalAll448, + RequiredAll448, + ReadonlyAll448, + NullableAll448, + TypeNames448, + Action448, + AllPerms448, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts new file mode 100644 index 00000000..7a2f7941 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-49 (seed 449) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord449 { + a449: { x: number; y: string; z: boolean }; + b449: { p: string[]; q: Record }; + c449: { nested: { deep: { deeper: { deepest: string } } } }; + d449: number; + e449: string; + f449: boolean; + g449: null; + h449: undefined; + i449: bigint; + j449: symbol; +} + +type PartialBig449 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten449 = T extends Array ? Flatten449 : T; +type Nested449 = number[][][][][][][][][][]; +type Flat449 = Flatten449; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly449 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly449 : T[K]; +}; +type DeepRequired449 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired449 : T[K]; +}; +type FR449 = DeepReadonly449>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion449 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha449 = Extract; +type ExcludeZulu449 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA449 { width: number; height: number; depth: number } +interface ShapeB449 { color: string; opacity: number; blend: string } +interface ShapeC449 { x: number; y: number; z: number; w: number } +interface ShapeD449 { label: string; title: string; summary: string } + +type Combined449 = ShapeA449 & ShapeB449 & ShapeC449 & ShapeD449; +type OptionalAll449 = { [K in keyof Combined449]?: Combined449[K] }; +type RequiredAll449 = { [K in keyof Combined449]-?: Combined449[K] }; +type ReadonlyAll449 = { readonly [K in keyof Combined449]: Combined449[K] }; +type NullableAll449 = { [K in keyof Combined449]: Combined449[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString449 = T extends string ? true : false; +type IsNumber449 = T extends number ? true : false; +type TypeName449 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames449 = { + [K in keyof BigRecord449]: TypeName449; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb449 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource449 = "user" | "post" | "comment" | "tag" | "category"; +type Action449 = `${Verb449}_${Resource449}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise449 = T extends Promise ? UnwrapPromise449 : T; +type UnwrapArray449 = T extends (infer U)[] ? UnwrapArray449 : T; +type Head449 = T extends [infer H, ...infer _] ? H : never; +type Tail449 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation449 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation449>] + : never; + +type SmallUnion449 = "a" | "b" | "c" | "d"; +type AllPerms449 = Permutation449; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig449, + Flat449, + FR449, + BigUnion449, + ExtractAlpha449, + ExcludeZulu449, + OptionalAll449, + RequiredAll449, + ReadonlyAll449, + NullableAll449, + TypeNames449, + Action449, + AllPerms449, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts new file mode 100644 index 00000000..7367e9e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts @@ -0,0 +1,125 @@ +// pkg-04 / types-50 (seed 450) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord450 { + a450: { x: number; y: string; z: boolean }; + b450: { p: string[]; q: Record }; + c450: { nested: { deep: { deeper: { deepest: string } } } }; + d450: number; + e450: string; + f450: boolean; + g450: null; + h450: undefined; + i450: bigint; + j450: symbol; +} + +type PartialBig450 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten450 = T extends Array ? Flatten450 : T; +type Nested450 = number[][][][][][][][][][]; +type Flat450 = Flatten450; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly450 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly450 : T[K]; +}; +type DeepRequired450 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired450 : T[K]; +}; +type FR450 = DeepReadonly450>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion450 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha450 = Extract; +type ExcludeZulu450 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA450 { width: number; height: number; depth: number } +interface ShapeB450 { color: string; opacity: number; blend: string } +interface ShapeC450 { x: number; y: number; z: number; w: number } +interface ShapeD450 { label: string; title: string; summary: string } + +type Combined450 = ShapeA450 & ShapeB450 & ShapeC450 & ShapeD450; +type OptionalAll450 = { [K in keyof Combined450]?: Combined450[K] }; +type RequiredAll450 = { [K in keyof Combined450]-?: Combined450[K] }; +type ReadonlyAll450 = { readonly [K in keyof Combined450]: Combined450[K] }; +type NullableAll450 = { [K in keyof Combined450]: Combined450[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString450 = T extends string ? true : false; +type IsNumber450 = T extends number ? true : false; +type TypeName450 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames450 = { + [K in keyof BigRecord450]: TypeName450; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb450 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource450 = "user" | "post" | "comment" | "tag" | "category"; +type Action450 = `${Verb450}_${Resource450}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise450 = T extends Promise ? UnwrapPromise450 : T; +type UnwrapArray450 = T extends (infer U)[] ? UnwrapArray450 : T; +type Head450 = T extends [infer H, ...infer _] ? H : never; +type Tail450 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation450 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation450>] + : never; + +type SmallUnion450 = "a" | "b" | "c" | "d"; +type AllPerms450 = Permutation450; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig450, + Flat450, + FR450, + BigUnion450, + ExtractAlpha450, + ExcludeZulu450, + OptionalAll450, + RequiredAll450, + ReadonlyAll450, + NullableAll450, + TypeNames450, + Action450, + AllPerms450, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts new file mode 100644 index 00000000..4cb0bf5d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-01 (seed 501) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord501 { + a501: { x: number; y: string; z: boolean }; + b501: { p: string[]; q: Record }; + c501: { nested: { deep: { deeper: { deepest: string } } } }; + d501: number; + e501: string; + f501: boolean; + g501: null; + h501: undefined; + i501: bigint; + j501: symbol; +} + +type PartialBig501 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten501 = T extends Array ? Flatten501 : T; +type Nested501 = number[][][][][][][][][][]; +type Flat501 = Flatten501; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly501 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly501 : T[K]; +}; +type DeepRequired501 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired501 : T[K]; +}; +type FR501 = DeepReadonly501>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion501 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha501 = Extract; +type ExcludeZulu501 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA501 { width: number; height: number; depth: number } +interface ShapeB501 { color: string; opacity: number; blend: string } +interface ShapeC501 { x: number; y: number; z: number; w: number } +interface ShapeD501 { label: string; title: string; summary: string } + +type Combined501 = ShapeA501 & ShapeB501 & ShapeC501 & ShapeD501; +type OptionalAll501 = { [K in keyof Combined501]?: Combined501[K] }; +type RequiredAll501 = { [K in keyof Combined501]-?: Combined501[K] }; +type ReadonlyAll501 = { readonly [K in keyof Combined501]: Combined501[K] }; +type NullableAll501 = { [K in keyof Combined501]: Combined501[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString501 = T extends string ? true : false; +type IsNumber501 = T extends number ? true : false; +type TypeName501 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames501 = { + [K in keyof BigRecord501]: TypeName501; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb501 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource501 = "user" | "post" | "comment" | "tag" | "category"; +type Action501 = `${Verb501}_${Resource501}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise501 = T extends Promise ? UnwrapPromise501 : T; +type UnwrapArray501 = T extends (infer U)[] ? UnwrapArray501 : T; +type Head501 = T extends [infer H, ...infer _] ? H : never; +type Tail501 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation501 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation501>] + : never; + +type SmallUnion501 = "a" | "b" | "c" | "d"; +type AllPerms501 = Permutation501; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig501, + Flat501, + FR501, + BigUnion501, + ExtractAlpha501, + ExcludeZulu501, + OptionalAll501, + RequiredAll501, + ReadonlyAll501, + NullableAll501, + TypeNames501, + Action501, + AllPerms501, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts new file mode 100644 index 00000000..fec7c795 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-02 (seed 502) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord502 { + a502: { x: number; y: string; z: boolean }; + b502: { p: string[]; q: Record }; + c502: { nested: { deep: { deeper: { deepest: string } } } }; + d502: number; + e502: string; + f502: boolean; + g502: null; + h502: undefined; + i502: bigint; + j502: symbol; +} + +type PartialBig502 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten502 = T extends Array ? Flatten502 : T; +type Nested502 = number[][][][][][][][][][]; +type Flat502 = Flatten502; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly502 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly502 : T[K]; +}; +type DeepRequired502 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired502 : T[K]; +}; +type FR502 = DeepReadonly502>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion502 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha502 = Extract; +type ExcludeZulu502 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA502 { width: number; height: number; depth: number } +interface ShapeB502 { color: string; opacity: number; blend: string } +interface ShapeC502 { x: number; y: number; z: number; w: number } +interface ShapeD502 { label: string; title: string; summary: string } + +type Combined502 = ShapeA502 & ShapeB502 & ShapeC502 & ShapeD502; +type OptionalAll502 = { [K in keyof Combined502]?: Combined502[K] }; +type RequiredAll502 = { [K in keyof Combined502]-?: Combined502[K] }; +type ReadonlyAll502 = { readonly [K in keyof Combined502]: Combined502[K] }; +type NullableAll502 = { [K in keyof Combined502]: Combined502[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString502 = T extends string ? true : false; +type IsNumber502 = T extends number ? true : false; +type TypeName502 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames502 = { + [K in keyof BigRecord502]: TypeName502; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb502 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource502 = "user" | "post" | "comment" | "tag" | "category"; +type Action502 = `${Verb502}_${Resource502}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise502 = T extends Promise ? UnwrapPromise502 : T; +type UnwrapArray502 = T extends (infer U)[] ? UnwrapArray502 : T; +type Head502 = T extends [infer H, ...infer _] ? H : never; +type Tail502 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation502 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation502>] + : never; + +type SmallUnion502 = "a" | "b" | "c" | "d"; +type AllPerms502 = Permutation502; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig502, + Flat502, + FR502, + BigUnion502, + ExtractAlpha502, + ExcludeZulu502, + OptionalAll502, + RequiredAll502, + ReadonlyAll502, + NullableAll502, + TypeNames502, + Action502, + AllPerms502, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts new file mode 100644 index 00000000..9a771859 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-03 (seed 503) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord503 { + a503: { x: number; y: string; z: boolean }; + b503: { p: string[]; q: Record }; + c503: { nested: { deep: { deeper: { deepest: string } } } }; + d503: number; + e503: string; + f503: boolean; + g503: null; + h503: undefined; + i503: bigint; + j503: symbol; +} + +type PartialBig503 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten503 = T extends Array ? Flatten503 : T; +type Nested503 = number[][][][][][][][][][]; +type Flat503 = Flatten503; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly503 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly503 : T[K]; +}; +type DeepRequired503 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired503 : T[K]; +}; +type FR503 = DeepReadonly503>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion503 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha503 = Extract; +type ExcludeZulu503 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA503 { width: number; height: number; depth: number } +interface ShapeB503 { color: string; opacity: number; blend: string } +interface ShapeC503 { x: number; y: number; z: number; w: number } +interface ShapeD503 { label: string; title: string; summary: string } + +type Combined503 = ShapeA503 & ShapeB503 & ShapeC503 & ShapeD503; +type OptionalAll503 = { [K in keyof Combined503]?: Combined503[K] }; +type RequiredAll503 = { [K in keyof Combined503]-?: Combined503[K] }; +type ReadonlyAll503 = { readonly [K in keyof Combined503]: Combined503[K] }; +type NullableAll503 = { [K in keyof Combined503]: Combined503[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString503 = T extends string ? true : false; +type IsNumber503 = T extends number ? true : false; +type TypeName503 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames503 = { + [K in keyof BigRecord503]: TypeName503; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb503 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource503 = "user" | "post" | "comment" | "tag" | "category"; +type Action503 = `${Verb503}_${Resource503}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise503 = T extends Promise ? UnwrapPromise503 : T; +type UnwrapArray503 = T extends (infer U)[] ? UnwrapArray503 : T; +type Head503 = T extends [infer H, ...infer _] ? H : never; +type Tail503 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation503 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation503>] + : never; + +type SmallUnion503 = "a" | "b" | "c" | "d"; +type AllPerms503 = Permutation503; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig503, + Flat503, + FR503, + BigUnion503, + ExtractAlpha503, + ExcludeZulu503, + OptionalAll503, + RequiredAll503, + ReadonlyAll503, + NullableAll503, + TypeNames503, + Action503, + AllPerms503, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts new file mode 100644 index 00000000..834f891d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-04 (seed 504) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord504 { + a504: { x: number; y: string; z: boolean }; + b504: { p: string[]; q: Record }; + c504: { nested: { deep: { deeper: { deepest: string } } } }; + d504: number; + e504: string; + f504: boolean; + g504: null; + h504: undefined; + i504: bigint; + j504: symbol; +} + +type PartialBig504 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten504 = T extends Array ? Flatten504 : T; +type Nested504 = number[][][][][][][][][][]; +type Flat504 = Flatten504; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly504 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly504 : T[K]; +}; +type DeepRequired504 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired504 : T[K]; +}; +type FR504 = DeepReadonly504>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion504 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha504 = Extract; +type ExcludeZulu504 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA504 { width: number; height: number; depth: number } +interface ShapeB504 { color: string; opacity: number; blend: string } +interface ShapeC504 { x: number; y: number; z: number; w: number } +interface ShapeD504 { label: string; title: string; summary: string } + +type Combined504 = ShapeA504 & ShapeB504 & ShapeC504 & ShapeD504; +type OptionalAll504 = { [K in keyof Combined504]?: Combined504[K] }; +type RequiredAll504 = { [K in keyof Combined504]-?: Combined504[K] }; +type ReadonlyAll504 = { readonly [K in keyof Combined504]: Combined504[K] }; +type NullableAll504 = { [K in keyof Combined504]: Combined504[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString504 = T extends string ? true : false; +type IsNumber504 = T extends number ? true : false; +type TypeName504 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames504 = { + [K in keyof BigRecord504]: TypeName504; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb504 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource504 = "user" | "post" | "comment" | "tag" | "category"; +type Action504 = `${Verb504}_${Resource504}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise504 = T extends Promise ? UnwrapPromise504 : T; +type UnwrapArray504 = T extends (infer U)[] ? UnwrapArray504 : T; +type Head504 = T extends [infer H, ...infer _] ? H : never; +type Tail504 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation504 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation504>] + : never; + +type SmallUnion504 = "a" | "b" | "c" | "d"; +type AllPerms504 = Permutation504; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig504, + Flat504, + FR504, + BigUnion504, + ExtractAlpha504, + ExcludeZulu504, + OptionalAll504, + RequiredAll504, + ReadonlyAll504, + NullableAll504, + TypeNames504, + Action504, + AllPerms504, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts new file mode 100644 index 00000000..350ba118 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-05 (seed 505) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord505 { + a505: { x: number; y: string; z: boolean }; + b505: { p: string[]; q: Record }; + c505: { nested: { deep: { deeper: { deepest: string } } } }; + d505: number; + e505: string; + f505: boolean; + g505: null; + h505: undefined; + i505: bigint; + j505: symbol; +} + +type PartialBig505 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten505 = T extends Array ? Flatten505 : T; +type Nested505 = number[][][][][][][][][][]; +type Flat505 = Flatten505; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly505 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly505 : T[K]; +}; +type DeepRequired505 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired505 : T[K]; +}; +type FR505 = DeepReadonly505>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion505 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha505 = Extract; +type ExcludeZulu505 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA505 { width: number; height: number; depth: number } +interface ShapeB505 { color: string; opacity: number; blend: string } +interface ShapeC505 { x: number; y: number; z: number; w: number } +interface ShapeD505 { label: string; title: string; summary: string } + +type Combined505 = ShapeA505 & ShapeB505 & ShapeC505 & ShapeD505; +type OptionalAll505 = { [K in keyof Combined505]?: Combined505[K] }; +type RequiredAll505 = { [K in keyof Combined505]-?: Combined505[K] }; +type ReadonlyAll505 = { readonly [K in keyof Combined505]: Combined505[K] }; +type NullableAll505 = { [K in keyof Combined505]: Combined505[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString505 = T extends string ? true : false; +type IsNumber505 = T extends number ? true : false; +type TypeName505 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames505 = { + [K in keyof BigRecord505]: TypeName505; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb505 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource505 = "user" | "post" | "comment" | "tag" | "category"; +type Action505 = `${Verb505}_${Resource505}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise505 = T extends Promise ? UnwrapPromise505 : T; +type UnwrapArray505 = T extends (infer U)[] ? UnwrapArray505 : T; +type Head505 = T extends [infer H, ...infer _] ? H : never; +type Tail505 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation505 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation505>] + : never; + +type SmallUnion505 = "a" | "b" | "c" | "d"; +type AllPerms505 = Permutation505; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig505, + Flat505, + FR505, + BigUnion505, + ExtractAlpha505, + ExcludeZulu505, + OptionalAll505, + RequiredAll505, + ReadonlyAll505, + NullableAll505, + TypeNames505, + Action505, + AllPerms505, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts new file mode 100644 index 00000000..722c3efe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-06 (seed 506) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord506 { + a506: { x: number; y: string; z: boolean }; + b506: { p: string[]; q: Record }; + c506: { nested: { deep: { deeper: { deepest: string } } } }; + d506: number; + e506: string; + f506: boolean; + g506: null; + h506: undefined; + i506: bigint; + j506: symbol; +} + +type PartialBig506 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten506 = T extends Array ? Flatten506 : T; +type Nested506 = number[][][][][][][][][][]; +type Flat506 = Flatten506; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly506 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly506 : T[K]; +}; +type DeepRequired506 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired506 : T[K]; +}; +type FR506 = DeepReadonly506>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion506 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha506 = Extract; +type ExcludeZulu506 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA506 { width: number; height: number; depth: number } +interface ShapeB506 { color: string; opacity: number; blend: string } +interface ShapeC506 { x: number; y: number; z: number; w: number } +interface ShapeD506 { label: string; title: string; summary: string } + +type Combined506 = ShapeA506 & ShapeB506 & ShapeC506 & ShapeD506; +type OptionalAll506 = { [K in keyof Combined506]?: Combined506[K] }; +type RequiredAll506 = { [K in keyof Combined506]-?: Combined506[K] }; +type ReadonlyAll506 = { readonly [K in keyof Combined506]: Combined506[K] }; +type NullableAll506 = { [K in keyof Combined506]: Combined506[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString506 = T extends string ? true : false; +type IsNumber506 = T extends number ? true : false; +type TypeName506 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames506 = { + [K in keyof BigRecord506]: TypeName506; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb506 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource506 = "user" | "post" | "comment" | "tag" | "category"; +type Action506 = `${Verb506}_${Resource506}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise506 = T extends Promise ? UnwrapPromise506 : T; +type UnwrapArray506 = T extends (infer U)[] ? UnwrapArray506 : T; +type Head506 = T extends [infer H, ...infer _] ? H : never; +type Tail506 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation506 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation506>] + : never; + +type SmallUnion506 = "a" | "b" | "c" | "d"; +type AllPerms506 = Permutation506; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig506, + Flat506, + FR506, + BigUnion506, + ExtractAlpha506, + ExcludeZulu506, + OptionalAll506, + RequiredAll506, + ReadonlyAll506, + NullableAll506, + TypeNames506, + Action506, + AllPerms506, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts new file mode 100644 index 00000000..eb04f033 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-07 (seed 507) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord507 { + a507: { x: number; y: string; z: boolean }; + b507: { p: string[]; q: Record }; + c507: { nested: { deep: { deeper: { deepest: string } } } }; + d507: number; + e507: string; + f507: boolean; + g507: null; + h507: undefined; + i507: bigint; + j507: symbol; +} + +type PartialBig507 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten507 = T extends Array ? Flatten507 : T; +type Nested507 = number[][][][][][][][][][]; +type Flat507 = Flatten507; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly507 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly507 : T[K]; +}; +type DeepRequired507 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired507 : T[K]; +}; +type FR507 = DeepReadonly507>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion507 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha507 = Extract; +type ExcludeZulu507 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA507 { width: number; height: number; depth: number } +interface ShapeB507 { color: string; opacity: number; blend: string } +interface ShapeC507 { x: number; y: number; z: number; w: number } +interface ShapeD507 { label: string; title: string; summary: string } + +type Combined507 = ShapeA507 & ShapeB507 & ShapeC507 & ShapeD507; +type OptionalAll507 = { [K in keyof Combined507]?: Combined507[K] }; +type RequiredAll507 = { [K in keyof Combined507]-?: Combined507[K] }; +type ReadonlyAll507 = { readonly [K in keyof Combined507]: Combined507[K] }; +type NullableAll507 = { [K in keyof Combined507]: Combined507[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString507 = T extends string ? true : false; +type IsNumber507 = T extends number ? true : false; +type TypeName507 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames507 = { + [K in keyof BigRecord507]: TypeName507; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb507 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource507 = "user" | "post" | "comment" | "tag" | "category"; +type Action507 = `${Verb507}_${Resource507}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise507 = T extends Promise ? UnwrapPromise507 : T; +type UnwrapArray507 = T extends (infer U)[] ? UnwrapArray507 : T; +type Head507 = T extends [infer H, ...infer _] ? H : never; +type Tail507 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation507 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation507>] + : never; + +type SmallUnion507 = "a" | "b" | "c" | "d"; +type AllPerms507 = Permutation507; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig507, + Flat507, + FR507, + BigUnion507, + ExtractAlpha507, + ExcludeZulu507, + OptionalAll507, + RequiredAll507, + ReadonlyAll507, + NullableAll507, + TypeNames507, + Action507, + AllPerms507, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts new file mode 100644 index 00000000..0703e976 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-08 (seed 508) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord508 { + a508: { x: number; y: string; z: boolean }; + b508: { p: string[]; q: Record }; + c508: { nested: { deep: { deeper: { deepest: string } } } }; + d508: number; + e508: string; + f508: boolean; + g508: null; + h508: undefined; + i508: bigint; + j508: symbol; +} + +type PartialBig508 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten508 = T extends Array ? Flatten508 : T; +type Nested508 = number[][][][][][][][][][]; +type Flat508 = Flatten508; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly508 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly508 : T[K]; +}; +type DeepRequired508 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired508 : T[K]; +}; +type FR508 = DeepReadonly508>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion508 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha508 = Extract; +type ExcludeZulu508 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA508 { width: number; height: number; depth: number } +interface ShapeB508 { color: string; opacity: number; blend: string } +interface ShapeC508 { x: number; y: number; z: number; w: number } +interface ShapeD508 { label: string; title: string; summary: string } + +type Combined508 = ShapeA508 & ShapeB508 & ShapeC508 & ShapeD508; +type OptionalAll508 = { [K in keyof Combined508]?: Combined508[K] }; +type RequiredAll508 = { [K in keyof Combined508]-?: Combined508[K] }; +type ReadonlyAll508 = { readonly [K in keyof Combined508]: Combined508[K] }; +type NullableAll508 = { [K in keyof Combined508]: Combined508[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString508 = T extends string ? true : false; +type IsNumber508 = T extends number ? true : false; +type TypeName508 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames508 = { + [K in keyof BigRecord508]: TypeName508; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb508 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource508 = "user" | "post" | "comment" | "tag" | "category"; +type Action508 = `${Verb508}_${Resource508}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise508 = T extends Promise ? UnwrapPromise508 : T; +type UnwrapArray508 = T extends (infer U)[] ? UnwrapArray508 : T; +type Head508 = T extends [infer H, ...infer _] ? H : never; +type Tail508 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation508 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation508>] + : never; + +type SmallUnion508 = "a" | "b" | "c" | "d"; +type AllPerms508 = Permutation508; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig508, + Flat508, + FR508, + BigUnion508, + ExtractAlpha508, + ExcludeZulu508, + OptionalAll508, + RequiredAll508, + ReadonlyAll508, + NullableAll508, + TypeNames508, + Action508, + AllPerms508, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts new file mode 100644 index 00000000..c028ff6e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-09 (seed 509) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord509 { + a509: { x: number; y: string; z: boolean }; + b509: { p: string[]; q: Record }; + c509: { nested: { deep: { deeper: { deepest: string } } } }; + d509: number; + e509: string; + f509: boolean; + g509: null; + h509: undefined; + i509: bigint; + j509: symbol; +} + +type PartialBig509 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten509 = T extends Array ? Flatten509 : T; +type Nested509 = number[][][][][][][][][][]; +type Flat509 = Flatten509; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly509 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly509 : T[K]; +}; +type DeepRequired509 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired509 : T[K]; +}; +type FR509 = DeepReadonly509>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion509 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha509 = Extract; +type ExcludeZulu509 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA509 { width: number; height: number; depth: number } +interface ShapeB509 { color: string; opacity: number; blend: string } +interface ShapeC509 { x: number; y: number; z: number; w: number } +interface ShapeD509 { label: string; title: string; summary: string } + +type Combined509 = ShapeA509 & ShapeB509 & ShapeC509 & ShapeD509; +type OptionalAll509 = { [K in keyof Combined509]?: Combined509[K] }; +type RequiredAll509 = { [K in keyof Combined509]-?: Combined509[K] }; +type ReadonlyAll509 = { readonly [K in keyof Combined509]: Combined509[K] }; +type NullableAll509 = { [K in keyof Combined509]: Combined509[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString509 = T extends string ? true : false; +type IsNumber509 = T extends number ? true : false; +type TypeName509 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames509 = { + [K in keyof BigRecord509]: TypeName509; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb509 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource509 = "user" | "post" | "comment" | "tag" | "category"; +type Action509 = `${Verb509}_${Resource509}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise509 = T extends Promise ? UnwrapPromise509 : T; +type UnwrapArray509 = T extends (infer U)[] ? UnwrapArray509 : T; +type Head509 = T extends [infer H, ...infer _] ? H : never; +type Tail509 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation509 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation509>] + : never; + +type SmallUnion509 = "a" | "b" | "c" | "d"; +type AllPerms509 = Permutation509; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig509, + Flat509, + FR509, + BigUnion509, + ExtractAlpha509, + ExcludeZulu509, + OptionalAll509, + RequiredAll509, + ReadonlyAll509, + NullableAll509, + TypeNames509, + Action509, + AllPerms509, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts new file mode 100644 index 00000000..957c8916 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-10 (seed 510) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord510 { + a510: { x: number; y: string; z: boolean }; + b510: { p: string[]; q: Record }; + c510: { nested: { deep: { deeper: { deepest: string } } } }; + d510: number; + e510: string; + f510: boolean; + g510: null; + h510: undefined; + i510: bigint; + j510: symbol; +} + +type PartialBig510 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten510 = T extends Array ? Flatten510 : T; +type Nested510 = number[][][][][][][][][][]; +type Flat510 = Flatten510; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly510 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly510 : T[K]; +}; +type DeepRequired510 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired510 : T[K]; +}; +type FR510 = DeepReadonly510>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion510 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha510 = Extract; +type ExcludeZulu510 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA510 { width: number; height: number; depth: number } +interface ShapeB510 { color: string; opacity: number; blend: string } +interface ShapeC510 { x: number; y: number; z: number; w: number } +interface ShapeD510 { label: string; title: string; summary: string } + +type Combined510 = ShapeA510 & ShapeB510 & ShapeC510 & ShapeD510; +type OptionalAll510 = { [K in keyof Combined510]?: Combined510[K] }; +type RequiredAll510 = { [K in keyof Combined510]-?: Combined510[K] }; +type ReadonlyAll510 = { readonly [K in keyof Combined510]: Combined510[K] }; +type NullableAll510 = { [K in keyof Combined510]: Combined510[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString510 = T extends string ? true : false; +type IsNumber510 = T extends number ? true : false; +type TypeName510 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames510 = { + [K in keyof BigRecord510]: TypeName510; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb510 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource510 = "user" | "post" | "comment" | "tag" | "category"; +type Action510 = `${Verb510}_${Resource510}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise510 = T extends Promise ? UnwrapPromise510 : T; +type UnwrapArray510 = T extends (infer U)[] ? UnwrapArray510 : T; +type Head510 = T extends [infer H, ...infer _] ? H : never; +type Tail510 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation510 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation510>] + : never; + +type SmallUnion510 = "a" | "b" | "c" | "d"; +type AllPerms510 = Permutation510; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig510, + Flat510, + FR510, + BigUnion510, + ExtractAlpha510, + ExcludeZulu510, + OptionalAll510, + RequiredAll510, + ReadonlyAll510, + NullableAll510, + TypeNames510, + Action510, + AllPerms510, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts new file mode 100644 index 00000000..b55d61d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-11 (seed 511) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord511 { + a511: { x: number; y: string; z: boolean }; + b511: { p: string[]; q: Record }; + c511: { nested: { deep: { deeper: { deepest: string } } } }; + d511: number; + e511: string; + f511: boolean; + g511: null; + h511: undefined; + i511: bigint; + j511: symbol; +} + +type PartialBig511 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten511 = T extends Array ? Flatten511 : T; +type Nested511 = number[][][][][][][][][][]; +type Flat511 = Flatten511; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly511 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly511 : T[K]; +}; +type DeepRequired511 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired511 : T[K]; +}; +type FR511 = DeepReadonly511>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion511 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha511 = Extract; +type ExcludeZulu511 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA511 { width: number; height: number; depth: number } +interface ShapeB511 { color: string; opacity: number; blend: string } +interface ShapeC511 { x: number; y: number; z: number; w: number } +interface ShapeD511 { label: string; title: string; summary: string } + +type Combined511 = ShapeA511 & ShapeB511 & ShapeC511 & ShapeD511; +type OptionalAll511 = { [K in keyof Combined511]?: Combined511[K] }; +type RequiredAll511 = { [K in keyof Combined511]-?: Combined511[K] }; +type ReadonlyAll511 = { readonly [K in keyof Combined511]: Combined511[K] }; +type NullableAll511 = { [K in keyof Combined511]: Combined511[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString511 = T extends string ? true : false; +type IsNumber511 = T extends number ? true : false; +type TypeName511 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames511 = { + [K in keyof BigRecord511]: TypeName511; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb511 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource511 = "user" | "post" | "comment" | "tag" | "category"; +type Action511 = `${Verb511}_${Resource511}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise511 = T extends Promise ? UnwrapPromise511 : T; +type UnwrapArray511 = T extends (infer U)[] ? UnwrapArray511 : T; +type Head511 = T extends [infer H, ...infer _] ? H : never; +type Tail511 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation511 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation511>] + : never; + +type SmallUnion511 = "a" | "b" | "c" | "d"; +type AllPerms511 = Permutation511; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig511, + Flat511, + FR511, + BigUnion511, + ExtractAlpha511, + ExcludeZulu511, + OptionalAll511, + RequiredAll511, + ReadonlyAll511, + NullableAll511, + TypeNames511, + Action511, + AllPerms511, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts new file mode 100644 index 00000000..873a1085 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-12 (seed 512) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord512 { + a512: { x: number; y: string; z: boolean }; + b512: { p: string[]; q: Record }; + c512: { nested: { deep: { deeper: { deepest: string } } } }; + d512: number; + e512: string; + f512: boolean; + g512: null; + h512: undefined; + i512: bigint; + j512: symbol; +} + +type PartialBig512 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten512 = T extends Array ? Flatten512 : T; +type Nested512 = number[][][][][][][][][][]; +type Flat512 = Flatten512; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly512 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly512 : T[K]; +}; +type DeepRequired512 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired512 : T[K]; +}; +type FR512 = DeepReadonly512>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion512 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha512 = Extract; +type ExcludeZulu512 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA512 { width: number; height: number; depth: number } +interface ShapeB512 { color: string; opacity: number; blend: string } +interface ShapeC512 { x: number; y: number; z: number; w: number } +interface ShapeD512 { label: string; title: string; summary: string } + +type Combined512 = ShapeA512 & ShapeB512 & ShapeC512 & ShapeD512; +type OptionalAll512 = { [K in keyof Combined512]?: Combined512[K] }; +type RequiredAll512 = { [K in keyof Combined512]-?: Combined512[K] }; +type ReadonlyAll512 = { readonly [K in keyof Combined512]: Combined512[K] }; +type NullableAll512 = { [K in keyof Combined512]: Combined512[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString512 = T extends string ? true : false; +type IsNumber512 = T extends number ? true : false; +type TypeName512 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames512 = { + [K in keyof BigRecord512]: TypeName512; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb512 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource512 = "user" | "post" | "comment" | "tag" | "category"; +type Action512 = `${Verb512}_${Resource512}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise512 = T extends Promise ? UnwrapPromise512 : T; +type UnwrapArray512 = T extends (infer U)[] ? UnwrapArray512 : T; +type Head512 = T extends [infer H, ...infer _] ? H : never; +type Tail512 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation512 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation512>] + : never; + +type SmallUnion512 = "a" | "b" | "c" | "d"; +type AllPerms512 = Permutation512; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig512, + Flat512, + FR512, + BigUnion512, + ExtractAlpha512, + ExcludeZulu512, + OptionalAll512, + RequiredAll512, + ReadonlyAll512, + NullableAll512, + TypeNames512, + Action512, + AllPerms512, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts new file mode 100644 index 00000000..e40df8c7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-13 (seed 513) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord513 { + a513: { x: number; y: string; z: boolean }; + b513: { p: string[]; q: Record }; + c513: { nested: { deep: { deeper: { deepest: string } } } }; + d513: number; + e513: string; + f513: boolean; + g513: null; + h513: undefined; + i513: bigint; + j513: symbol; +} + +type PartialBig513 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten513 = T extends Array ? Flatten513 : T; +type Nested513 = number[][][][][][][][][][]; +type Flat513 = Flatten513; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly513 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly513 : T[K]; +}; +type DeepRequired513 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired513 : T[K]; +}; +type FR513 = DeepReadonly513>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion513 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha513 = Extract; +type ExcludeZulu513 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA513 { width: number; height: number; depth: number } +interface ShapeB513 { color: string; opacity: number; blend: string } +interface ShapeC513 { x: number; y: number; z: number; w: number } +interface ShapeD513 { label: string; title: string; summary: string } + +type Combined513 = ShapeA513 & ShapeB513 & ShapeC513 & ShapeD513; +type OptionalAll513 = { [K in keyof Combined513]?: Combined513[K] }; +type RequiredAll513 = { [K in keyof Combined513]-?: Combined513[K] }; +type ReadonlyAll513 = { readonly [K in keyof Combined513]: Combined513[K] }; +type NullableAll513 = { [K in keyof Combined513]: Combined513[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString513 = T extends string ? true : false; +type IsNumber513 = T extends number ? true : false; +type TypeName513 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames513 = { + [K in keyof BigRecord513]: TypeName513; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb513 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource513 = "user" | "post" | "comment" | "tag" | "category"; +type Action513 = `${Verb513}_${Resource513}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise513 = T extends Promise ? UnwrapPromise513 : T; +type UnwrapArray513 = T extends (infer U)[] ? UnwrapArray513 : T; +type Head513 = T extends [infer H, ...infer _] ? H : never; +type Tail513 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation513 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation513>] + : never; + +type SmallUnion513 = "a" | "b" | "c" | "d"; +type AllPerms513 = Permutation513; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig513, + Flat513, + FR513, + BigUnion513, + ExtractAlpha513, + ExcludeZulu513, + OptionalAll513, + RequiredAll513, + ReadonlyAll513, + NullableAll513, + TypeNames513, + Action513, + AllPerms513, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts new file mode 100644 index 00000000..0f58bb94 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-14 (seed 514) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord514 { + a514: { x: number; y: string; z: boolean }; + b514: { p: string[]; q: Record }; + c514: { nested: { deep: { deeper: { deepest: string } } } }; + d514: number; + e514: string; + f514: boolean; + g514: null; + h514: undefined; + i514: bigint; + j514: symbol; +} + +type PartialBig514 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten514 = T extends Array ? Flatten514 : T; +type Nested514 = number[][][][][][][][][][]; +type Flat514 = Flatten514; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly514 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly514 : T[K]; +}; +type DeepRequired514 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired514 : T[K]; +}; +type FR514 = DeepReadonly514>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion514 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha514 = Extract; +type ExcludeZulu514 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA514 { width: number; height: number; depth: number } +interface ShapeB514 { color: string; opacity: number; blend: string } +interface ShapeC514 { x: number; y: number; z: number; w: number } +interface ShapeD514 { label: string; title: string; summary: string } + +type Combined514 = ShapeA514 & ShapeB514 & ShapeC514 & ShapeD514; +type OptionalAll514 = { [K in keyof Combined514]?: Combined514[K] }; +type RequiredAll514 = { [K in keyof Combined514]-?: Combined514[K] }; +type ReadonlyAll514 = { readonly [K in keyof Combined514]: Combined514[K] }; +type NullableAll514 = { [K in keyof Combined514]: Combined514[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString514 = T extends string ? true : false; +type IsNumber514 = T extends number ? true : false; +type TypeName514 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames514 = { + [K in keyof BigRecord514]: TypeName514; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb514 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource514 = "user" | "post" | "comment" | "tag" | "category"; +type Action514 = `${Verb514}_${Resource514}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise514 = T extends Promise ? UnwrapPromise514 : T; +type UnwrapArray514 = T extends (infer U)[] ? UnwrapArray514 : T; +type Head514 = T extends [infer H, ...infer _] ? H : never; +type Tail514 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation514 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation514>] + : never; + +type SmallUnion514 = "a" | "b" | "c" | "d"; +type AllPerms514 = Permutation514; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig514, + Flat514, + FR514, + BigUnion514, + ExtractAlpha514, + ExcludeZulu514, + OptionalAll514, + RequiredAll514, + ReadonlyAll514, + NullableAll514, + TypeNames514, + Action514, + AllPerms514, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts new file mode 100644 index 00000000..438539dd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-15 (seed 515) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord515 { + a515: { x: number; y: string; z: boolean }; + b515: { p: string[]; q: Record }; + c515: { nested: { deep: { deeper: { deepest: string } } } }; + d515: number; + e515: string; + f515: boolean; + g515: null; + h515: undefined; + i515: bigint; + j515: symbol; +} + +type PartialBig515 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten515 = T extends Array ? Flatten515 : T; +type Nested515 = number[][][][][][][][][][]; +type Flat515 = Flatten515; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly515 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly515 : T[K]; +}; +type DeepRequired515 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired515 : T[K]; +}; +type FR515 = DeepReadonly515>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion515 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha515 = Extract; +type ExcludeZulu515 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA515 { width: number; height: number; depth: number } +interface ShapeB515 { color: string; opacity: number; blend: string } +interface ShapeC515 { x: number; y: number; z: number; w: number } +interface ShapeD515 { label: string; title: string; summary: string } + +type Combined515 = ShapeA515 & ShapeB515 & ShapeC515 & ShapeD515; +type OptionalAll515 = { [K in keyof Combined515]?: Combined515[K] }; +type RequiredAll515 = { [K in keyof Combined515]-?: Combined515[K] }; +type ReadonlyAll515 = { readonly [K in keyof Combined515]: Combined515[K] }; +type NullableAll515 = { [K in keyof Combined515]: Combined515[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString515 = T extends string ? true : false; +type IsNumber515 = T extends number ? true : false; +type TypeName515 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames515 = { + [K in keyof BigRecord515]: TypeName515; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb515 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource515 = "user" | "post" | "comment" | "tag" | "category"; +type Action515 = `${Verb515}_${Resource515}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise515 = T extends Promise ? UnwrapPromise515 : T; +type UnwrapArray515 = T extends (infer U)[] ? UnwrapArray515 : T; +type Head515 = T extends [infer H, ...infer _] ? H : never; +type Tail515 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation515 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation515>] + : never; + +type SmallUnion515 = "a" | "b" | "c" | "d"; +type AllPerms515 = Permutation515; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig515, + Flat515, + FR515, + BigUnion515, + ExtractAlpha515, + ExcludeZulu515, + OptionalAll515, + RequiredAll515, + ReadonlyAll515, + NullableAll515, + TypeNames515, + Action515, + AllPerms515, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts new file mode 100644 index 00000000..1950acc9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-16 (seed 516) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord516 { + a516: { x: number; y: string; z: boolean }; + b516: { p: string[]; q: Record }; + c516: { nested: { deep: { deeper: { deepest: string } } } }; + d516: number; + e516: string; + f516: boolean; + g516: null; + h516: undefined; + i516: bigint; + j516: symbol; +} + +type PartialBig516 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten516 = T extends Array ? Flatten516 : T; +type Nested516 = number[][][][][][][][][][]; +type Flat516 = Flatten516; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly516 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly516 : T[K]; +}; +type DeepRequired516 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired516 : T[K]; +}; +type FR516 = DeepReadonly516>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion516 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha516 = Extract; +type ExcludeZulu516 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA516 { width: number; height: number; depth: number } +interface ShapeB516 { color: string; opacity: number; blend: string } +interface ShapeC516 { x: number; y: number; z: number; w: number } +interface ShapeD516 { label: string; title: string; summary: string } + +type Combined516 = ShapeA516 & ShapeB516 & ShapeC516 & ShapeD516; +type OptionalAll516 = { [K in keyof Combined516]?: Combined516[K] }; +type RequiredAll516 = { [K in keyof Combined516]-?: Combined516[K] }; +type ReadonlyAll516 = { readonly [K in keyof Combined516]: Combined516[K] }; +type NullableAll516 = { [K in keyof Combined516]: Combined516[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString516 = T extends string ? true : false; +type IsNumber516 = T extends number ? true : false; +type TypeName516 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames516 = { + [K in keyof BigRecord516]: TypeName516; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb516 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource516 = "user" | "post" | "comment" | "tag" | "category"; +type Action516 = `${Verb516}_${Resource516}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise516 = T extends Promise ? UnwrapPromise516 : T; +type UnwrapArray516 = T extends (infer U)[] ? UnwrapArray516 : T; +type Head516 = T extends [infer H, ...infer _] ? H : never; +type Tail516 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation516 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation516>] + : never; + +type SmallUnion516 = "a" | "b" | "c" | "d"; +type AllPerms516 = Permutation516; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig516, + Flat516, + FR516, + BigUnion516, + ExtractAlpha516, + ExcludeZulu516, + OptionalAll516, + RequiredAll516, + ReadonlyAll516, + NullableAll516, + TypeNames516, + Action516, + AllPerms516, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts new file mode 100644 index 00000000..c10adda9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-17 (seed 517) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord517 { + a517: { x: number; y: string; z: boolean }; + b517: { p: string[]; q: Record }; + c517: { nested: { deep: { deeper: { deepest: string } } } }; + d517: number; + e517: string; + f517: boolean; + g517: null; + h517: undefined; + i517: bigint; + j517: symbol; +} + +type PartialBig517 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten517 = T extends Array ? Flatten517 : T; +type Nested517 = number[][][][][][][][][][]; +type Flat517 = Flatten517; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly517 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly517 : T[K]; +}; +type DeepRequired517 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired517 : T[K]; +}; +type FR517 = DeepReadonly517>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion517 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha517 = Extract; +type ExcludeZulu517 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA517 { width: number; height: number; depth: number } +interface ShapeB517 { color: string; opacity: number; blend: string } +interface ShapeC517 { x: number; y: number; z: number; w: number } +interface ShapeD517 { label: string; title: string; summary: string } + +type Combined517 = ShapeA517 & ShapeB517 & ShapeC517 & ShapeD517; +type OptionalAll517 = { [K in keyof Combined517]?: Combined517[K] }; +type RequiredAll517 = { [K in keyof Combined517]-?: Combined517[K] }; +type ReadonlyAll517 = { readonly [K in keyof Combined517]: Combined517[K] }; +type NullableAll517 = { [K in keyof Combined517]: Combined517[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString517 = T extends string ? true : false; +type IsNumber517 = T extends number ? true : false; +type TypeName517 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames517 = { + [K in keyof BigRecord517]: TypeName517; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb517 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource517 = "user" | "post" | "comment" | "tag" | "category"; +type Action517 = `${Verb517}_${Resource517}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise517 = T extends Promise ? UnwrapPromise517 : T; +type UnwrapArray517 = T extends (infer U)[] ? UnwrapArray517 : T; +type Head517 = T extends [infer H, ...infer _] ? H : never; +type Tail517 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation517 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation517>] + : never; + +type SmallUnion517 = "a" | "b" | "c" | "d"; +type AllPerms517 = Permutation517; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig517, + Flat517, + FR517, + BigUnion517, + ExtractAlpha517, + ExcludeZulu517, + OptionalAll517, + RequiredAll517, + ReadonlyAll517, + NullableAll517, + TypeNames517, + Action517, + AllPerms517, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts new file mode 100644 index 00000000..35fdf30d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-18 (seed 518) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord518 { + a518: { x: number; y: string; z: boolean }; + b518: { p: string[]; q: Record }; + c518: { nested: { deep: { deeper: { deepest: string } } } }; + d518: number; + e518: string; + f518: boolean; + g518: null; + h518: undefined; + i518: bigint; + j518: symbol; +} + +type PartialBig518 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten518 = T extends Array ? Flatten518 : T; +type Nested518 = number[][][][][][][][][][]; +type Flat518 = Flatten518; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly518 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly518 : T[K]; +}; +type DeepRequired518 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired518 : T[K]; +}; +type FR518 = DeepReadonly518>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion518 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha518 = Extract; +type ExcludeZulu518 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA518 { width: number; height: number; depth: number } +interface ShapeB518 { color: string; opacity: number; blend: string } +interface ShapeC518 { x: number; y: number; z: number; w: number } +interface ShapeD518 { label: string; title: string; summary: string } + +type Combined518 = ShapeA518 & ShapeB518 & ShapeC518 & ShapeD518; +type OptionalAll518 = { [K in keyof Combined518]?: Combined518[K] }; +type RequiredAll518 = { [K in keyof Combined518]-?: Combined518[K] }; +type ReadonlyAll518 = { readonly [K in keyof Combined518]: Combined518[K] }; +type NullableAll518 = { [K in keyof Combined518]: Combined518[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString518 = T extends string ? true : false; +type IsNumber518 = T extends number ? true : false; +type TypeName518 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames518 = { + [K in keyof BigRecord518]: TypeName518; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb518 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource518 = "user" | "post" | "comment" | "tag" | "category"; +type Action518 = `${Verb518}_${Resource518}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise518 = T extends Promise ? UnwrapPromise518 : T; +type UnwrapArray518 = T extends (infer U)[] ? UnwrapArray518 : T; +type Head518 = T extends [infer H, ...infer _] ? H : never; +type Tail518 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation518 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation518>] + : never; + +type SmallUnion518 = "a" | "b" | "c" | "d"; +type AllPerms518 = Permutation518; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig518, + Flat518, + FR518, + BigUnion518, + ExtractAlpha518, + ExcludeZulu518, + OptionalAll518, + RequiredAll518, + ReadonlyAll518, + NullableAll518, + TypeNames518, + Action518, + AllPerms518, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts new file mode 100644 index 00000000..9cfc2d6c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-19 (seed 519) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord519 { + a519: { x: number; y: string; z: boolean }; + b519: { p: string[]; q: Record }; + c519: { nested: { deep: { deeper: { deepest: string } } } }; + d519: number; + e519: string; + f519: boolean; + g519: null; + h519: undefined; + i519: bigint; + j519: symbol; +} + +type PartialBig519 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten519 = T extends Array ? Flatten519 : T; +type Nested519 = number[][][][][][][][][][]; +type Flat519 = Flatten519; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly519 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly519 : T[K]; +}; +type DeepRequired519 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired519 : T[K]; +}; +type FR519 = DeepReadonly519>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion519 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha519 = Extract; +type ExcludeZulu519 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA519 { width: number; height: number; depth: number } +interface ShapeB519 { color: string; opacity: number; blend: string } +interface ShapeC519 { x: number; y: number; z: number; w: number } +interface ShapeD519 { label: string; title: string; summary: string } + +type Combined519 = ShapeA519 & ShapeB519 & ShapeC519 & ShapeD519; +type OptionalAll519 = { [K in keyof Combined519]?: Combined519[K] }; +type RequiredAll519 = { [K in keyof Combined519]-?: Combined519[K] }; +type ReadonlyAll519 = { readonly [K in keyof Combined519]: Combined519[K] }; +type NullableAll519 = { [K in keyof Combined519]: Combined519[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString519 = T extends string ? true : false; +type IsNumber519 = T extends number ? true : false; +type TypeName519 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames519 = { + [K in keyof BigRecord519]: TypeName519; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb519 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource519 = "user" | "post" | "comment" | "tag" | "category"; +type Action519 = `${Verb519}_${Resource519}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise519 = T extends Promise ? UnwrapPromise519 : T; +type UnwrapArray519 = T extends (infer U)[] ? UnwrapArray519 : T; +type Head519 = T extends [infer H, ...infer _] ? H : never; +type Tail519 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation519 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation519>] + : never; + +type SmallUnion519 = "a" | "b" | "c" | "d"; +type AllPerms519 = Permutation519; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig519, + Flat519, + FR519, + BigUnion519, + ExtractAlpha519, + ExcludeZulu519, + OptionalAll519, + RequiredAll519, + ReadonlyAll519, + NullableAll519, + TypeNames519, + Action519, + AllPerms519, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts new file mode 100644 index 00000000..1f4baef4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-20 (seed 520) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord520 { + a520: { x: number; y: string; z: boolean }; + b520: { p: string[]; q: Record }; + c520: { nested: { deep: { deeper: { deepest: string } } } }; + d520: number; + e520: string; + f520: boolean; + g520: null; + h520: undefined; + i520: bigint; + j520: symbol; +} + +type PartialBig520 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten520 = T extends Array ? Flatten520 : T; +type Nested520 = number[][][][][][][][][][]; +type Flat520 = Flatten520; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly520 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly520 : T[K]; +}; +type DeepRequired520 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired520 : T[K]; +}; +type FR520 = DeepReadonly520>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion520 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha520 = Extract; +type ExcludeZulu520 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA520 { width: number; height: number; depth: number } +interface ShapeB520 { color: string; opacity: number; blend: string } +interface ShapeC520 { x: number; y: number; z: number; w: number } +interface ShapeD520 { label: string; title: string; summary: string } + +type Combined520 = ShapeA520 & ShapeB520 & ShapeC520 & ShapeD520; +type OptionalAll520 = { [K in keyof Combined520]?: Combined520[K] }; +type RequiredAll520 = { [K in keyof Combined520]-?: Combined520[K] }; +type ReadonlyAll520 = { readonly [K in keyof Combined520]: Combined520[K] }; +type NullableAll520 = { [K in keyof Combined520]: Combined520[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString520 = T extends string ? true : false; +type IsNumber520 = T extends number ? true : false; +type TypeName520 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames520 = { + [K in keyof BigRecord520]: TypeName520; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb520 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource520 = "user" | "post" | "comment" | "tag" | "category"; +type Action520 = `${Verb520}_${Resource520}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise520 = T extends Promise ? UnwrapPromise520 : T; +type UnwrapArray520 = T extends (infer U)[] ? UnwrapArray520 : T; +type Head520 = T extends [infer H, ...infer _] ? H : never; +type Tail520 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation520 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation520>] + : never; + +type SmallUnion520 = "a" | "b" | "c" | "d"; +type AllPerms520 = Permutation520; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig520, + Flat520, + FR520, + BigUnion520, + ExtractAlpha520, + ExcludeZulu520, + OptionalAll520, + RequiredAll520, + ReadonlyAll520, + NullableAll520, + TypeNames520, + Action520, + AllPerms520, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts new file mode 100644 index 00000000..9629bd79 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-21 (seed 521) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord521 { + a521: { x: number; y: string; z: boolean }; + b521: { p: string[]; q: Record }; + c521: { nested: { deep: { deeper: { deepest: string } } } }; + d521: number; + e521: string; + f521: boolean; + g521: null; + h521: undefined; + i521: bigint; + j521: symbol; +} + +type PartialBig521 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten521 = T extends Array ? Flatten521 : T; +type Nested521 = number[][][][][][][][][][]; +type Flat521 = Flatten521; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly521 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly521 : T[K]; +}; +type DeepRequired521 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired521 : T[K]; +}; +type FR521 = DeepReadonly521>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion521 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha521 = Extract; +type ExcludeZulu521 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA521 { width: number; height: number; depth: number } +interface ShapeB521 { color: string; opacity: number; blend: string } +interface ShapeC521 { x: number; y: number; z: number; w: number } +interface ShapeD521 { label: string; title: string; summary: string } + +type Combined521 = ShapeA521 & ShapeB521 & ShapeC521 & ShapeD521; +type OptionalAll521 = { [K in keyof Combined521]?: Combined521[K] }; +type RequiredAll521 = { [K in keyof Combined521]-?: Combined521[K] }; +type ReadonlyAll521 = { readonly [K in keyof Combined521]: Combined521[K] }; +type NullableAll521 = { [K in keyof Combined521]: Combined521[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString521 = T extends string ? true : false; +type IsNumber521 = T extends number ? true : false; +type TypeName521 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames521 = { + [K in keyof BigRecord521]: TypeName521; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb521 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource521 = "user" | "post" | "comment" | "tag" | "category"; +type Action521 = `${Verb521}_${Resource521}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise521 = T extends Promise ? UnwrapPromise521 : T; +type UnwrapArray521 = T extends (infer U)[] ? UnwrapArray521 : T; +type Head521 = T extends [infer H, ...infer _] ? H : never; +type Tail521 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation521 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation521>] + : never; + +type SmallUnion521 = "a" | "b" | "c" | "d"; +type AllPerms521 = Permutation521; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig521, + Flat521, + FR521, + BigUnion521, + ExtractAlpha521, + ExcludeZulu521, + OptionalAll521, + RequiredAll521, + ReadonlyAll521, + NullableAll521, + TypeNames521, + Action521, + AllPerms521, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts new file mode 100644 index 00000000..9077cc47 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-22 (seed 522) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord522 { + a522: { x: number; y: string; z: boolean }; + b522: { p: string[]; q: Record }; + c522: { nested: { deep: { deeper: { deepest: string } } } }; + d522: number; + e522: string; + f522: boolean; + g522: null; + h522: undefined; + i522: bigint; + j522: symbol; +} + +type PartialBig522 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten522 = T extends Array ? Flatten522 : T; +type Nested522 = number[][][][][][][][][][]; +type Flat522 = Flatten522; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly522 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly522 : T[K]; +}; +type DeepRequired522 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired522 : T[K]; +}; +type FR522 = DeepReadonly522>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion522 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha522 = Extract; +type ExcludeZulu522 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA522 { width: number; height: number; depth: number } +interface ShapeB522 { color: string; opacity: number; blend: string } +interface ShapeC522 { x: number; y: number; z: number; w: number } +interface ShapeD522 { label: string; title: string; summary: string } + +type Combined522 = ShapeA522 & ShapeB522 & ShapeC522 & ShapeD522; +type OptionalAll522 = { [K in keyof Combined522]?: Combined522[K] }; +type RequiredAll522 = { [K in keyof Combined522]-?: Combined522[K] }; +type ReadonlyAll522 = { readonly [K in keyof Combined522]: Combined522[K] }; +type NullableAll522 = { [K in keyof Combined522]: Combined522[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString522 = T extends string ? true : false; +type IsNumber522 = T extends number ? true : false; +type TypeName522 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames522 = { + [K in keyof BigRecord522]: TypeName522; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb522 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource522 = "user" | "post" | "comment" | "tag" | "category"; +type Action522 = `${Verb522}_${Resource522}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise522 = T extends Promise ? UnwrapPromise522 : T; +type UnwrapArray522 = T extends (infer U)[] ? UnwrapArray522 : T; +type Head522 = T extends [infer H, ...infer _] ? H : never; +type Tail522 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation522 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation522>] + : never; + +type SmallUnion522 = "a" | "b" | "c" | "d"; +type AllPerms522 = Permutation522; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig522, + Flat522, + FR522, + BigUnion522, + ExtractAlpha522, + ExcludeZulu522, + OptionalAll522, + RequiredAll522, + ReadonlyAll522, + NullableAll522, + TypeNames522, + Action522, + AllPerms522, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts new file mode 100644 index 00000000..c5a8f98b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-23 (seed 523) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord523 { + a523: { x: number; y: string; z: boolean }; + b523: { p: string[]; q: Record }; + c523: { nested: { deep: { deeper: { deepest: string } } } }; + d523: number; + e523: string; + f523: boolean; + g523: null; + h523: undefined; + i523: bigint; + j523: symbol; +} + +type PartialBig523 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten523 = T extends Array ? Flatten523 : T; +type Nested523 = number[][][][][][][][][][]; +type Flat523 = Flatten523; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly523 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly523 : T[K]; +}; +type DeepRequired523 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired523 : T[K]; +}; +type FR523 = DeepReadonly523>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion523 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha523 = Extract; +type ExcludeZulu523 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA523 { width: number; height: number; depth: number } +interface ShapeB523 { color: string; opacity: number; blend: string } +interface ShapeC523 { x: number; y: number; z: number; w: number } +interface ShapeD523 { label: string; title: string; summary: string } + +type Combined523 = ShapeA523 & ShapeB523 & ShapeC523 & ShapeD523; +type OptionalAll523 = { [K in keyof Combined523]?: Combined523[K] }; +type RequiredAll523 = { [K in keyof Combined523]-?: Combined523[K] }; +type ReadonlyAll523 = { readonly [K in keyof Combined523]: Combined523[K] }; +type NullableAll523 = { [K in keyof Combined523]: Combined523[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString523 = T extends string ? true : false; +type IsNumber523 = T extends number ? true : false; +type TypeName523 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames523 = { + [K in keyof BigRecord523]: TypeName523; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb523 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource523 = "user" | "post" | "comment" | "tag" | "category"; +type Action523 = `${Verb523}_${Resource523}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise523 = T extends Promise ? UnwrapPromise523 : T; +type UnwrapArray523 = T extends (infer U)[] ? UnwrapArray523 : T; +type Head523 = T extends [infer H, ...infer _] ? H : never; +type Tail523 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation523 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation523>] + : never; + +type SmallUnion523 = "a" | "b" | "c" | "d"; +type AllPerms523 = Permutation523; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig523, + Flat523, + FR523, + BigUnion523, + ExtractAlpha523, + ExcludeZulu523, + OptionalAll523, + RequiredAll523, + ReadonlyAll523, + NullableAll523, + TypeNames523, + Action523, + AllPerms523, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts new file mode 100644 index 00000000..636ca60d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-24 (seed 524) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord524 { + a524: { x: number; y: string; z: boolean }; + b524: { p: string[]; q: Record }; + c524: { nested: { deep: { deeper: { deepest: string } } } }; + d524: number; + e524: string; + f524: boolean; + g524: null; + h524: undefined; + i524: bigint; + j524: symbol; +} + +type PartialBig524 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten524 = T extends Array ? Flatten524 : T; +type Nested524 = number[][][][][][][][][][]; +type Flat524 = Flatten524; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly524 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly524 : T[K]; +}; +type DeepRequired524 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired524 : T[K]; +}; +type FR524 = DeepReadonly524>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion524 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha524 = Extract; +type ExcludeZulu524 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA524 { width: number; height: number; depth: number } +interface ShapeB524 { color: string; opacity: number; blend: string } +interface ShapeC524 { x: number; y: number; z: number; w: number } +interface ShapeD524 { label: string; title: string; summary: string } + +type Combined524 = ShapeA524 & ShapeB524 & ShapeC524 & ShapeD524; +type OptionalAll524 = { [K in keyof Combined524]?: Combined524[K] }; +type RequiredAll524 = { [K in keyof Combined524]-?: Combined524[K] }; +type ReadonlyAll524 = { readonly [K in keyof Combined524]: Combined524[K] }; +type NullableAll524 = { [K in keyof Combined524]: Combined524[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString524 = T extends string ? true : false; +type IsNumber524 = T extends number ? true : false; +type TypeName524 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames524 = { + [K in keyof BigRecord524]: TypeName524; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb524 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource524 = "user" | "post" | "comment" | "tag" | "category"; +type Action524 = `${Verb524}_${Resource524}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise524 = T extends Promise ? UnwrapPromise524 : T; +type UnwrapArray524 = T extends (infer U)[] ? UnwrapArray524 : T; +type Head524 = T extends [infer H, ...infer _] ? H : never; +type Tail524 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation524 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation524>] + : never; + +type SmallUnion524 = "a" | "b" | "c" | "d"; +type AllPerms524 = Permutation524; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig524, + Flat524, + FR524, + BigUnion524, + ExtractAlpha524, + ExcludeZulu524, + OptionalAll524, + RequiredAll524, + ReadonlyAll524, + NullableAll524, + TypeNames524, + Action524, + AllPerms524, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts new file mode 100644 index 00000000..81604220 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-25 (seed 525) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord525 { + a525: { x: number; y: string; z: boolean }; + b525: { p: string[]; q: Record }; + c525: { nested: { deep: { deeper: { deepest: string } } } }; + d525: number; + e525: string; + f525: boolean; + g525: null; + h525: undefined; + i525: bigint; + j525: symbol; +} + +type PartialBig525 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten525 = T extends Array ? Flatten525 : T; +type Nested525 = number[][][][][][][][][][]; +type Flat525 = Flatten525; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly525 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly525 : T[K]; +}; +type DeepRequired525 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired525 : T[K]; +}; +type FR525 = DeepReadonly525>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion525 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha525 = Extract; +type ExcludeZulu525 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA525 { width: number; height: number; depth: number } +interface ShapeB525 { color: string; opacity: number; blend: string } +interface ShapeC525 { x: number; y: number; z: number; w: number } +interface ShapeD525 { label: string; title: string; summary: string } + +type Combined525 = ShapeA525 & ShapeB525 & ShapeC525 & ShapeD525; +type OptionalAll525 = { [K in keyof Combined525]?: Combined525[K] }; +type RequiredAll525 = { [K in keyof Combined525]-?: Combined525[K] }; +type ReadonlyAll525 = { readonly [K in keyof Combined525]: Combined525[K] }; +type NullableAll525 = { [K in keyof Combined525]: Combined525[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString525 = T extends string ? true : false; +type IsNumber525 = T extends number ? true : false; +type TypeName525 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames525 = { + [K in keyof BigRecord525]: TypeName525; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb525 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource525 = "user" | "post" | "comment" | "tag" | "category"; +type Action525 = `${Verb525}_${Resource525}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise525 = T extends Promise ? UnwrapPromise525 : T; +type UnwrapArray525 = T extends (infer U)[] ? UnwrapArray525 : T; +type Head525 = T extends [infer H, ...infer _] ? H : never; +type Tail525 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation525 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation525>] + : never; + +type SmallUnion525 = "a" | "b" | "c" | "d"; +type AllPerms525 = Permutation525; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig525, + Flat525, + FR525, + BigUnion525, + ExtractAlpha525, + ExcludeZulu525, + OptionalAll525, + RequiredAll525, + ReadonlyAll525, + NullableAll525, + TypeNames525, + Action525, + AllPerms525, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts new file mode 100644 index 00000000..7a90e401 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-26 (seed 526) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord526 { + a526: { x: number; y: string; z: boolean }; + b526: { p: string[]; q: Record }; + c526: { nested: { deep: { deeper: { deepest: string } } } }; + d526: number; + e526: string; + f526: boolean; + g526: null; + h526: undefined; + i526: bigint; + j526: symbol; +} + +type PartialBig526 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten526 = T extends Array ? Flatten526 : T; +type Nested526 = number[][][][][][][][][][]; +type Flat526 = Flatten526; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly526 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly526 : T[K]; +}; +type DeepRequired526 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired526 : T[K]; +}; +type FR526 = DeepReadonly526>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion526 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha526 = Extract; +type ExcludeZulu526 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA526 { width: number; height: number; depth: number } +interface ShapeB526 { color: string; opacity: number; blend: string } +interface ShapeC526 { x: number; y: number; z: number; w: number } +interface ShapeD526 { label: string; title: string; summary: string } + +type Combined526 = ShapeA526 & ShapeB526 & ShapeC526 & ShapeD526; +type OptionalAll526 = { [K in keyof Combined526]?: Combined526[K] }; +type RequiredAll526 = { [K in keyof Combined526]-?: Combined526[K] }; +type ReadonlyAll526 = { readonly [K in keyof Combined526]: Combined526[K] }; +type NullableAll526 = { [K in keyof Combined526]: Combined526[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString526 = T extends string ? true : false; +type IsNumber526 = T extends number ? true : false; +type TypeName526 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames526 = { + [K in keyof BigRecord526]: TypeName526; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb526 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource526 = "user" | "post" | "comment" | "tag" | "category"; +type Action526 = `${Verb526}_${Resource526}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise526 = T extends Promise ? UnwrapPromise526 : T; +type UnwrapArray526 = T extends (infer U)[] ? UnwrapArray526 : T; +type Head526 = T extends [infer H, ...infer _] ? H : never; +type Tail526 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation526 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation526>] + : never; + +type SmallUnion526 = "a" | "b" | "c" | "d"; +type AllPerms526 = Permutation526; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig526, + Flat526, + FR526, + BigUnion526, + ExtractAlpha526, + ExcludeZulu526, + OptionalAll526, + RequiredAll526, + ReadonlyAll526, + NullableAll526, + TypeNames526, + Action526, + AllPerms526, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts new file mode 100644 index 00000000..e1fb0a53 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-27 (seed 527) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord527 { + a527: { x: number; y: string; z: boolean }; + b527: { p: string[]; q: Record }; + c527: { nested: { deep: { deeper: { deepest: string } } } }; + d527: number; + e527: string; + f527: boolean; + g527: null; + h527: undefined; + i527: bigint; + j527: symbol; +} + +type PartialBig527 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten527 = T extends Array ? Flatten527 : T; +type Nested527 = number[][][][][][][][][][]; +type Flat527 = Flatten527; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly527 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly527 : T[K]; +}; +type DeepRequired527 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired527 : T[K]; +}; +type FR527 = DeepReadonly527>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion527 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha527 = Extract; +type ExcludeZulu527 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA527 { width: number; height: number; depth: number } +interface ShapeB527 { color: string; opacity: number; blend: string } +interface ShapeC527 { x: number; y: number; z: number; w: number } +interface ShapeD527 { label: string; title: string; summary: string } + +type Combined527 = ShapeA527 & ShapeB527 & ShapeC527 & ShapeD527; +type OptionalAll527 = { [K in keyof Combined527]?: Combined527[K] }; +type RequiredAll527 = { [K in keyof Combined527]-?: Combined527[K] }; +type ReadonlyAll527 = { readonly [K in keyof Combined527]: Combined527[K] }; +type NullableAll527 = { [K in keyof Combined527]: Combined527[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString527 = T extends string ? true : false; +type IsNumber527 = T extends number ? true : false; +type TypeName527 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames527 = { + [K in keyof BigRecord527]: TypeName527; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb527 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource527 = "user" | "post" | "comment" | "tag" | "category"; +type Action527 = `${Verb527}_${Resource527}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise527 = T extends Promise ? UnwrapPromise527 : T; +type UnwrapArray527 = T extends (infer U)[] ? UnwrapArray527 : T; +type Head527 = T extends [infer H, ...infer _] ? H : never; +type Tail527 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation527 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation527>] + : never; + +type SmallUnion527 = "a" | "b" | "c" | "d"; +type AllPerms527 = Permutation527; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig527, + Flat527, + FR527, + BigUnion527, + ExtractAlpha527, + ExcludeZulu527, + OptionalAll527, + RequiredAll527, + ReadonlyAll527, + NullableAll527, + TypeNames527, + Action527, + AllPerms527, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts new file mode 100644 index 00000000..97b9011c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-28 (seed 528) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord528 { + a528: { x: number; y: string; z: boolean }; + b528: { p: string[]; q: Record }; + c528: { nested: { deep: { deeper: { deepest: string } } } }; + d528: number; + e528: string; + f528: boolean; + g528: null; + h528: undefined; + i528: bigint; + j528: symbol; +} + +type PartialBig528 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten528 = T extends Array ? Flatten528 : T; +type Nested528 = number[][][][][][][][][][]; +type Flat528 = Flatten528; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly528 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly528 : T[K]; +}; +type DeepRequired528 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired528 : T[K]; +}; +type FR528 = DeepReadonly528>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion528 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha528 = Extract; +type ExcludeZulu528 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA528 { width: number; height: number; depth: number } +interface ShapeB528 { color: string; opacity: number; blend: string } +interface ShapeC528 { x: number; y: number; z: number; w: number } +interface ShapeD528 { label: string; title: string; summary: string } + +type Combined528 = ShapeA528 & ShapeB528 & ShapeC528 & ShapeD528; +type OptionalAll528 = { [K in keyof Combined528]?: Combined528[K] }; +type RequiredAll528 = { [K in keyof Combined528]-?: Combined528[K] }; +type ReadonlyAll528 = { readonly [K in keyof Combined528]: Combined528[K] }; +type NullableAll528 = { [K in keyof Combined528]: Combined528[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString528 = T extends string ? true : false; +type IsNumber528 = T extends number ? true : false; +type TypeName528 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames528 = { + [K in keyof BigRecord528]: TypeName528; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb528 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource528 = "user" | "post" | "comment" | "tag" | "category"; +type Action528 = `${Verb528}_${Resource528}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise528 = T extends Promise ? UnwrapPromise528 : T; +type UnwrapArray528 = T extends (infer U)[] ? UnwrapArray528 : T; +type Head528 = T extends [infer H, ...infer _] ? H : never; +type Tail528 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation528 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation528>] + : never; + +type SmallUnion528 = "a" | "b" | "c" | "d"; +type AllPerms528 = Permutation528; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig528, + Flat528, + FR528, + BigUnion528, + ExtractAlpha528, + ExcludeZulu528, + OptionalAll528, + RequiredAll528, + ReadonlyAll528, + NullableAll528, + TypeNames528, + Action528, + AllPerms528, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts new file mode 100644 index 00000000..327eb879 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-29 (seed 529) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord529 { + a529: { x: number; y: string; z: boolean }; + b529: { p: string[]; q: Record }; + c529: { nested: { deep: { deeper: { deepest: string } } } }; + d529: number; + e529: string; + f529: boolean; + g529: null; + h529: undefined; + i529: bigint; + j529: symbol; +} + +type PartialBig529 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten529 = T extends Array ? Flatten529 : T; +type Nested529 = number[][][][][][][][][][]; +type Flat529 = Flatten529; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly529 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly529 : T[K]; +}; +type DeepRequired529 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired529 : T[K]; +}; +type FR529 = DeepReadonly529>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion529 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha529 = Extract; +type ExcludeZulu529 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA529 { width: number; height: number; depth: number } +interface ShapeB529 { color: string; opacity: number; blend: string } +interface ShapeC529 { x: number; y: number; z: number; w: number } +interface ShapeD529 { label: string; title: string; summary: string } + +type Combined529 = ShapeA529 & ShapeB529 & ShapeC529 & ShapeD529; +type OptionalAll529 = { [K in keyof Combined529]?: Combined529[K] }; +type RequiredAll529 = { [K in keyof Combined529]-?: Combined529[K] }; +type ReadonlyAll529 = { readonly [K in keyof Combined529]: Combined529[K] }; +type NullableAll529 = { [K in keyof Combined529]: Combined529[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString529 = T extends string ? true : false; +type IsNumber529 = T extends number ? true : false; +type TypeName529 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames529 = { + [K in keyof BigRecord529]: TypeName529; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb529 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource529 = "user" | "post" | "comment" | "tag" | "category"; +type Action529 = `${Verb529}_${Resource529}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise529 = T extends Promise ? UnwrapPromise529 : T; +type UnwrapArray529 = T extends (infer U)[] ? UnwrapArray529 : T; +type Head529 = T extends [infer H, ...infer _] ? H : never; +type Tail529 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation529 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation529>] + : never; + +type SmallUnion529 = "a" | "b" | "c" | "d"; +type AllPerms529 = Permutation529; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig529, + Flat529, + FR529, + BigUnion529, + ExtractAlpha529, + ExcludeZulu529, + OptionalAll529, + RequiredAll529, + ReadonlyAll529, + NullableAll529, + TypeNames529, + Action529, + AllPerms529, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts new file mode 100644 index 00000000..32129b7a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-30 (seed 530) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord530 { + a530: { x: number; y: string; z: boolean }; + b530: { p: string[]; q: Record }; + c530: { nested: { deep: { deeper: { deepest: string } } } }; + d530: number; + e530: string; + f530: boolean; + g530: null; + h530: undefined; + i530: bigint; + j530: symbol; +} + +type PartialBig530 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten530 = T extends Array ? Flatten530 : T; +type Nested530 = number[][][][][][][][][][]; +type Flat530 = Flatten530; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly530 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly530 : T[K]; +}; +type DeepRequired530 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired530 : T[K]; +}; +type FR530 = DeepReadonly530>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion530 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha530 = Extract; +type ExcludeZulu530 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA530 { width: number; height: number; depth: number } +interface ShapeB530 { color: string; opacity: number; blend: string } +interface ShapeC530 { x: number; y: number; z: number; w: number } +interface ShapeD530 { label: string; title: string; summary: string } + +type Combined530 = ShapeA530 & ShapeB530 & ShapeC530 & ShapeD530; +type OptionalAll530 = { [K in keyof Combined530]?: Combined530[K] }; +type RequiredAll530 = { [K in keyof Combined530]-?: Combined530[K] }; +type ReadonlyAll530 = { readonly [K in keyof Combined530]: Combined530[K] }; +type NullableAll530 = { [K in keyof Combined530]: Combined530[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString530 = T extends string ? true : false; +type IsNumber530 = T extends number ? true : false; +type TypeName530 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames530 = { + [K in keyof BigRecord530]: TypeName530; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb530 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource530 = "user" | "post" | "comment" | "tag" | "category"; +type Action530 = `${Verb530}_${Resource530}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise530 = T extends Promise ? UnwrapPromise530 : T; +type UnwrapArray530 = T extends (infer U)[] ? UnwrapArray530 : T; +type Head530 = T extends [infer H, ...infer _] ? H : never; +type Tail530 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation530 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation530>] + : never; + +type SmallUnion530 = "a" | "b" | "c" | "d"; +type AllPerms530 = Permutation530; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig530, + Flat530, + FR530, + BigUnion530, + ExtractAlpha530, + ExcludeZulu530, + OptionalAll530, + RequiredAll530, + ReadonlyAll530, + NullableAll530, + TypeNames530, + Action530, + AllPerms530, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts new file mode 100644 index 00000000..f58b58e4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-31 (seed 531) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord531 { + a531: { x: number; y: string; z: boolean }; + b531: { p: string[]; q: Record }; + c531: { nested: { deep: { deeper: { deepest: string } } } }; + d531: number; + e531: string; + f531: boolean; + g531: null; + h531: undefined; + i531: bigint; + j531: symbol; +} + +type PartialBig531 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten531 = T extends Array ? Flatten531 : T; +type Nested531 = number[][][][][][][][][][]; +type Flat531 = Flatten531; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly531 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly531 : T[K]; +}; +type DeepRequired531 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired531 : T[K]; +}; +type FR531 = DeepReadonly531>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion531 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha531 = Extract; +type ExcludeZulu531 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA531 { width: number; height: number; depth: number } +interface ShapeB531 { color: string; opacity: number; blend: string } +interface ShapeC531 { x: number; y: number; z: number; w: number } +interface ShapeD531 { label: string; title: string; summary: string } + +type Combined531 = ShapeA531 & ShapeB531 & ShapeC531 & ShapeD531; +type OptionalAll531 = { [K in keyof Combined531]?: Combined531[K] }; +type RequiredAll531 = { [K in keyof Combined531]-?: Combined531[K] }; +type ReadonlyAll531 = { readonly [K in keyof Combined531]: Combined531[K] }; +type NullableAll531 = { [K in keyof Combined531]: Combined531[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString531 = T extends string ? true : false; +type IsNumber531 = T extends number ? true : false; +type TypeName531 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames531 = { + [K in keyof BigRecord531]: TypeName531; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb531 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource531 = "user" | "post" | "comment" | "tag" | "category"; +type Action531 = `${Verb531}_${Resource531}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise531 = T extends Promise ? UnwrapPromise531 : T; +type UnwrapArray531 = T extends (infer U)[] ? UnwrapArray531 : T; +type Head531 = T extends [infer H, ...infer _] ? H : never; +type Tail531 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation531 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation531>] + : never; + +type SmallUnion531 = "a" | "b" | "c" | "d"; +type AllPerms531 = Permutation531; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig531, + Flat531, + FR531, + BigUnion531, + ExtractAlpha531, + ExcludeZulu531, + OptionalAll531, + RequiredAll531, + ReadonlyAll531, + NullableAll531, + TypeNames531, + Action531, + AllPerms531, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts new file mode 100644 index 00000000..fa60b158 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-32 (seed 532) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord532 { + a532: { x: number; y: string; z: boolean }; + b532: { p: string[]; q: Record }; + c532: { nested: { deep: { deeper: { deepest: string } } } }; + d532: number; + e532: string; + f532: boolean; + g532: null; + h532: undefined; + i532: bigint; + j532: symbol; +} + +type PartialBig532 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten532 = T extends Array ? Flatten532 : T; +type Nested532 = number[][][][][][][][][][]; +type Flat532 = Flatten532; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly532 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly532 : T[K]; +}; +type DeepRequired532 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired532 : T[K]; +}; +type FR532 = DeepReadonly532>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion532 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha532 = Extract; +type ExcludeZulu532 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA532 { width: number; height: number; depth: number } +interface ShapeB532 { color: string; opacity: number; blend: string } +interface ShapeC532 { x: number; y: number; z: number; w: number } +interface ShapeD532 { label: string; title: string; summary: string } + +type Combined532 = ShapeA532 & ShapeB532 & ShapeC532 & ShapeD532; +type OptionalAll532 = { [K in keyof Combined532]?: Combined532[K] }; +type RequiredAll532 = { [K in keyof Combined532]-?: Combined532[K] }; +type ReadonlyAll532 = { readonly [K in keyof Combined532]: Combined532[K] }; +type NullableAll532 = { [K in keyof Combined532]: Combined532[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString532 = T extends string ? true : false; +type IsNumber532 = T extends number ? true : false; +type TypeName532 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames532 = { + [K in keyof BigRecord532]: TypeName532; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb532 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource532 = "user" | "post" | "comment" | "tag" | "category"; +type Action532 = `${Verb532}_${Resource532}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise532 = T extends Promise ? UnwrapPromise532 : T; +type UnwrapArray532 = T extends (infer U)[] ? UnwrapArray532 : T; +type Head532 = T extends [infer H, ...infer _] ? H : never; +type Tail532 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation532 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation532>] + : never; + +type SmallUnion532 = "a" | "b" | "c" | "d"; +type AllPerms532 = Permutation532; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig532, + Flat532, + FR532, + BigUnion532, + ExtractAlpha532, + ExcludeZulu532, + OptionalAll532, + RequiredAll532, + ReadonlyAll532, + NullableAll532, + TypeNames532, + Action532, + AllPerms532, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts new file mode 100644 index 00000000..8fa1521b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-33 (seed 533) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord533 { + a533: { x: number; y: string; z: boolean }; + b533: { p: string[]; q: Record }; + c533: { nested: { deep: { deeper: { deepest: string } } } }; + d533: number; + e533: string; + f533: boolean; + g533: null; + h533: undefined; + i533: bigint; + j533: symbol; +} + +type PartialBig533 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten533 = T extends Array ? Flatten533 : T; +type Nested533 = number[][][][][][][][][][]; +type Flat533 = Flatten533; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly533 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly533 : T[K]; +}; +type DeepRequired533 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired533 : T[K]; +}; +type FR533 = DeepReadonly533>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion533 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha533 = Extract; +type ExcludeZulu533 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA533 { width: number; height: number; depth: number } +interface ShapeB533 { color: string; opacity: number; blend: string } +interface ShapeC533 { x: number; y: number; z: number; w: number } +interface ShapeD533 { label: string; title: string; summary: string } + +type Combined533 = ShapeA533 & ShapeB533 & ShapeC533 & ShapeD533; +type OptionalAll533 = { [K in keyof Combined533]?: Combined533[K] }; +type RequiredAll533 = { [K in keyof Combined533]-?: Combined533[K] }; +type ReadonlyAll533 = { readonly [K in keyof Combined533]: Combined533[K] }; +type NullableAll533 = { [K in keyof Combined533]: Combined533[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString533 = T extends string ? true : false; +type IsNumber533 = T extends number ? true : false; +type TypeName533 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames533 = { + [K in keyof BigRecord533]: TypeName533; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb533 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource533 = "user" | "post" | "comment" | "tag" | "category"; +type Action533 = `${Verb533}_${Resource533}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise533 = T extends Promise ? UnwrapPromise533 : T; +type UnwrapArray533 = T extends (infer U)[] ? UnwrapArray533 : T; +type Head533 = T extends [infer H, ...infer _] ? H : never; +type Tail533 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation533 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation533>] + : never; + +type SmallUnion533 = "a" | "b" | "c" | "d"; +type AllPerms533 = Permutation533; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig533, + Flat533, + FR533, + BigUnion533, + ExtractAlpha533, + ExcludeZulu533, + OptionalAll533, + RequiredAll533, + ReadonlyAll533, + NullableAll533, + TypeNames533, + Action533, + AllPerms533, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts new file mode 100644 index 00000000..79b4b55a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-34 (seed 534) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord534 { + a534: { x: number; y: string; z: boolean }; + b534: { p: string[]; q: Record }; + c534: { nested: { deep: { deeper: { deepest: string } } } }; + d534: number; + e534: string; + f534: boolean; + g534: null; + h534: undefined; + i534: bigint; + j534: symbol; +} + +type PartialBig534 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten534 = T extends Array ? Flatten534 : T; +type Nested534 = number[][][][][][][][][][]; +type Flat534 = Flatten534; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly534 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly534 : T[K]; +}; +type DeepRequired534 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired534 : T[K]; +}; +type FR534 = DeepReadonly534>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion534 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha534 = Extract; +type ExcludeZulu534 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA534 { width: number; height: number; depth: number } +interface ShapeB534 { color: string; opacity: number; blend: string } +interface ShapeC534 { x: number; y: number; z: number; w: number } +interface ShapeD534 { label: string; title: string; summary: string } + +type Combined534 = ShapeA534 & ShapeB534 & ShapeC534 & ShapeD534; +type OptionalAll534 = { [K in keyof Combined534]?: Combined534[K] }; +type RequiredAll534 = { [K in keyof Combined534]-?: Combined534[K] }; +type ReadonlyAll534 = { readonly [K in keyof Combined534]: Combined534[K] }; +type NullableAll534 = { [K in keyof Combined534]: Combined534[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString534 = T extends string ? true : false; +type IsNumber534 = T extends number ? true : false; +type TypeName534 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames534 = { + [K in keyof BigRecord534]: TypeName534; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb534 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource534 = "user" | "post" | "comment" | "tag" | "category"; +type Action534 = `${Verb534}_${Resource534}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise534 = T extends Promise ? UnwrapPromise534 : T; +type UnwrapArray534 = T extends (infer U)[] ? UnwrapArray534 : T; +type Head534 = T extends [infer H, ...infer _] ? H : never; +type Tail534 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation534 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation534>] + : never; + +type SmallUnion534 = "a" | "b" | "c" | "d"; +type AllPerms534 = Permutation534; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig534, + Flat534, + FR534, + BigUnion534, + ExtractAlpha534, + ExcludeZulu534, + OptionalAll534, + RequiredAll534, + ReadonlyAll534, + NullableAll534, + TypeNames534, + Action534, + AllPerms534, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts new file mode 100644 index 00000000..2452ec1a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-35 (seed 535) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord535 { + a535: { x: number; y: string; z: boolean }; + b535: { p: string[]; q: Record }; + c535: { nested: { deep: { deeper: { deepest: string } } } }; + d535: number; + e535: string; + f535: boolean; + g535: null; + h535: undefined; + i535: bigint; + j535: symbol; +} + +type PartialBig535 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten535 = T extends Array ? Flatten535 : T; +type Nested535 = number[][][][][][][][][][]; +type Flat535 = Flatten535; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly535 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly535 : T[K]; +}; +type DeepRequired535 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired535 : T[K]; +}; +type FR535 = DeepReadonly535>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion535 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha535 = Extract; +type ExcludeZulu535 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA535 { width: number; height: number; depth: number } +interface ShapeB535 { color: string; opacity: number; blend: string } +interface ShapeC535 { x: number; y: number; z: number; w: number } +interface ShapeD535 { label: string; title: string; summary: string } + +type Combined535 = ShapeA535 & ShapeB535 & ShapeC535 & ShapeD535; +type OptionalAll535 = { [K in keyof Combined535]?: Combined535[K] }; +type RequiredAll535 = { [K in keyof Combined535]-?: Combined535[K] }; +type ReadonlyAll535 = { readonly [K in keyof Combined535]: Combined535[K] }; +type NullableAll535 = { [K in keyof Combined535]: Combined535[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString535 = T extends string ? true : false; +type IsNumber535 = T extends number ? true : false; +type TypeName535 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames535 = { + [K in keyof BigRecord535]: TypeName535; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb535 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource535 = "user" | "post" | "comment" | "tag" | "category"; +type Action535 = `${Verb535}_${Resource535}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise535 = T extends Promise ? UnwrapPromise535 : T; +type UnwrapArray535 = T extends (infer U)[] ? UnwrapArray535 : T; +type Head535 = T extends [infer H, ...infer _] ? H : never; +type Tail535 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation535 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation535>] + : never; + +type SmallUnion535 = "a" | "b" | "c" | "d"; +type AllPerms535 = Permutation535; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig535, + Flat535, + FR535, + BigUnion535, + ExtractAlpha535, + ExcludeZulu535, + OptionalAll535, + RequiredAll535, + ReadonlyAll535, + NullableAll535, + TypeNames535, + Action535, + AllPerms535, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts new file mode 100644 index 00000000..9f7c96dd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-36 (seed 536) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord536 { + a536: { x: number; y: string; z: boolean }; + b536: { p: string[]; q: Record }; + c536: { nested: { deep: { deeper: { deepest: string } } } }; + d536: number; + e536: string; + f536: boolean; + g536: null; + h536: undefined; + i536: bigint; + j536: symbol; +} + +type PartialBig536 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten536 = T extends Array ? Flatten536 : T; +type Nested536 = number[][][][][][][][][][]; +type Flat536 = Flatten536; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly536 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly536 : T[K]; +}; +type DeepRequired536 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired536 : T[K]; +}; +type FR536 = DeepReadonly536>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion536 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha536 = Extract; +type ExcludeZulu536 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA536 { width: number; height: number; depth: number } +interface ShapeB536 { color: string; opacity: number; blend: string } +interface ShapeC536 { x: number; y: number; z: number; w: number } +interface ShapeD536 { label: string; title: string; summary: string } + +type Combined536 = ShapeA536 & ShapeB536 & ShapeC536 & ShapeD536; +type OptionalAll536 = { [K in keyof Combined536]?: Combined536[K] }; +type RequiredAll536 = { [K in keyof Combined536]-?: Combined536[K] }; +type ReadonlyAll536 = { readonly [K in keyof Combined536]: Combined536[K] }; +type NullableAll536 = { [K in keyof Combined536]: Combined536[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString536 = T extends string ? true : false; +type IsNumber536 = T extends number ? true : false; +type TypeName536 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames536 = { + [K in keyof BigRecord536]: TypeName536; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb536 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource536 = "user" | "post" | "comment" | "tag" | "category"; +type Action536 = `${Verb536}_${Resource536}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise536 = T extends Promise ? UnwrapPromise536 : T; +type UnwrapArray536 = T extends (infer U)[] ? UnwrapArray536 : T; +type Head536 = T extends [infer H, ...infer _] ? H : never; +type Tail536 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation536 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation536>] + : never; + +type SmallUnion536 = "a" | "b" | "c" | "d"; +type AllPerms536 = Permutation536; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig536, + Flat536, + FR536, + BigUnion536, + ExtractAlpha536, + ExcludeZulu536, + OptionalAll536, + RequiredAll536, + ReadonlyAll536, + NullableAll536, + TypeNames536, + Action536, + AllPerms536, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts new file mode 100644 index 00000000..a0fae258 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-37 (seed 537) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord537 { + a537: { x: number; y: string; z: boolean }; + b537: { p: string[]; q: Record }; + c537: { nested: { deep: { deeper: { deepest: string } } } }; + d537: number; + e537: string; + f537: boolean; + g537: null; + h537: undefined; + i537: bigint; + j537: symbol; +} + +type PartialBig537 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten537 = T extends Array ? Flatten537 : T; +type Nested537 = number[][][][][][][][][][]; +type Flat537 = Flatten537; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly537 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly537 : T[K]; +}; +type DeepRequired537 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired537 : T[K]; +}; +type FR537 = DeepReadonly537>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion537 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha537 = Extract; +type ExcludeZulu537 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA537 { width: number; height: number; depth: number } +interface ShapeB537 { color: string; opacity: number; blend: string } +interface ShapeC537 { x: number; y: number; z: number; w: number } +interface ShapeD537 { label: string; title: string; summary: string } + +type Combined537 = ShapeA537 & ShapeB537 & ShapeC537 & ShapeD537; +type OptionalAll537 = { [K in keyof Combined537]?: Combined537[K] }; +type RequiredAll537 = { [K in keyof Combined537]-?: Combined537[K] }; +type ReadonlyAll537 = { readonly [K in keyof Combined537]: Combined537[K] }; +type NullableAll537 = { [K in keyof Combined537]: Combined537[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString537 = T extends string ? true : false; +type IsNumber537 = T extends number ? true : false; +type TypeName537 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames537 = { + [K in keyof BigRecord537]: TypeName537; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb537 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource537 = "user" | "post" | "comment" | "tag" | "category"; +type Action537 = `${Verb537}_${Resource537}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise537 = T extends Promise ? UnwrapPromise537 : T; +type UnwrapArray537 = T extends (infer U)[] ? UnwrapArray537 : T; +type Head537 = T extends [infer H, ...infer _] ? H : never; +type Tail537 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation537 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation537>] + : never; + +type SmallUnion537 = "a" | "b" | "c" | "d"; +type AllPerms537 = Permutation537; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig537, + Flat537, + FR537, + BigUnion537, + ExtractAlpha537, + ExcludeZulu537, + OptionalAll537, + RequiredAll537, + ReadonlyAll537, + NullableAll537, + TypeNames537, + Action537, + AllPerms537, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts new file mode 100644 index 00000000..066f0e6b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-38 (seed 538) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord538 { + a538: { x: number; y: string; z: boolean }; + b538: { p: string[]; q: Record }; + c538: { nested: { deep: { deeper: { deepest: string } } } }; + d538: number; + e538: string; + f538: boolean; + g538: null; + h538: undefined; + i538: bigint; + j538: symbol; +} + +type PartialBig538 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten538 = T extends Array ? Flatten538 : T; +type Nested538 = number[][][][][][][][][][]; +type Flat538 = Flatten538; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly538 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly538 : T[K]; +}; +type DeepRequired538 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired538 : T[K]; +}; +type FR538 = DeepReadonly538>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion538 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha538 = Extract; +type ExcludeZulu538 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA538 { width: number; height: number; depth: number } +interface ShapeB538 { color: string; opacity: number; blend: string } +interface ShapeC538 { x: number; y: number; z: number; w: number } +interface ShapeD538 { label: string; title: string; summary: string } + +type Combined538 = ShapeA538 & ShapeB538 & ShapeC538 & ShapeD538; +type OptionalAll538 = { [K in keyof Combined538]?: Combined538[K] }; +type RequiredAll538 = { [K in keyof Combined538]-?: Combined538[K] }; +type ReadonlyAll538 = { readonly [K in keyof Combined538]: Combined538[K] }; +type NullableAll538 = { [K in keyof Combined538]: Combined538[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString538 = T extends string ? true : false; +type IsNumber538 = T extends number ? true : false; +type TypeName538 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames538 = { + [K in keyof BigRecord538]: TypeName538; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb538 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource538 = "user" | "post" | "comment" | "tag" | "category"; +type Action538 = `${Verb538}_${Resource538}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise538 = T extends Promise ? UnwrapPromise538 : T; +type UnwrapArray538 = T extends (infer U)[] ? UnwrapArray538 : T; +type Head538 = T extends [infer H, ...infer _] ? H : never; +type Tail538 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation538 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation538>] + : never; + +type SmallUnion538 = "a" | "b" | "c" | "d"; +type AllPerms538 = Permutation538; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig538, + Flat538, + FR538, + BigUnion538, + ExtractAlpha538, + ExcludeZulu538, + OptionalAll538, + RequiredAll538, + ReadonlyAll538, + NullableAll538, + TypeNames538, + Action538, + AllPerms538, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts new file mode 100644 index 00000000..ca927d9c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-39 (seed 539) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord539 { + a539: { x: number; y: string; z: boolean }; + b539: { p: string[]; q: Record }; + c539: { nested: { deep: { deeper: { deepest: string } } } }; + d539: number; + e539: string; + f539: boolean; + g539: null; + h539: undefined; + i539: bigint; + j539: symbol; +} + +type PartialBig539 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten539 = T extends Array ? Flatten539 : T; +type Nested539 = number[][][][][][][][][][]; +type Flat539 = Flatten539; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly539 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly539 : T[K]; +}; +type DeepRequired539 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired539 : T[K]; +}; +type FR539 = DeepReadonly539>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion539 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha539 = Extract; +type ExcludeZulu539 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA539 { width: number; height: number; depth: number } +interface ShapeB539 { color: string; opacity: number; blend: string } +interface ShapeC539 { x: number; y: number; z: number; w: number } +interface ShapeD539 { label: string; title: string; summary: string } + +type Combined539 = ShapeA539 & ShapeB539 & ShapeC539 & ShapeD539; +type OptionalAll539 = { [K in keyof Combined539]?: Combined539[K] }; +type RequiredAll539 = { [K in keyof Combined539]-?: Combined539[K] }; +type ReadonlyAll539 = { readonly [K in keyof Combined539]: Combined539[K] }; +type NullableAll539 = { [K in keyof Combined539]: Combined539[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString539 = T extends string ? true : false; +type IsNumber539 = T extends number ? true : false; +type TypeName539 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames539 = { + [K in keyof BigRecord539]: TypeName539; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb539 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource539 = "user" | "post" | "comment" | "tag" | "category"; +type Action539 = `${Verb539}_${Resource539}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise539 = T extends Promise ? UnwrapPromise539 : T; +type UnwrapArray539 = T extends (infer U)[] ? UnwrapArray539 : T; +type Head539 = T extends [infer H, ...infer _] ? H : never; +type Tail539 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation539 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation539>] + : never; + +type SmallUnion539 = "a" | "b" | "c" | "d"; +type AllPerms539 = Permutation539; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig539, + Flat539, + FR539, + BigUnion539, + ExtractAlpha539, + ExcludeZulu539, + OptionalAll539, + RequiredAll539, + ReadonlyAll539, + NullableAll539, + TypeNames539, + Action539, + AllPerms539, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts new file mode 100644 index 00000000..f1b21ce0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-40 (seed 540) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord540 { + a540: { x: number; y: string; z: boolean }; + b540: { p: string[]; q: Record }; + c540: { nested: { deep: { deeper: { deepest: string } } } }; + d540: number; + e540: string; + f540: boolean; + g540: null; + h540: undefined; + i540: bigint; + j540: symbol; +} + +type PartialBig540 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten540 = T extends Array ? Flatten540 : T; +type Nested540 = number[][][][][][][][][][]; +type Flat540 = Flatten540; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly540 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly540 : T[K]; +}; +type DeepRequired540 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired540 : T[K]; +}; +type FR540 = DeepReadonly540>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion540 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha540 = Extract; +type ExcludeZulu540 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA540 { width: number; height: number; depth: number } +interface ShapeB540 { color: string; opacity: number; blend: string } +interface ShapeC540 { x: number; y: number; z: number; w: number } +interface ShapeD540 { label: string; title: string; summary: string } + +type Combined540 = ShapeA540 & ShapeB540 & ShapeC540 & ShapeD540; +type OptionalAll540 = { [K in keyof Combined540]?: Combined540[K] }; +type RequiredAll540 = { [K in keyof Combined540]-?: Combined540[K] }; +type ReadonlyAll540 = { readonly [K in keyof Combined540]: Combined540[K] }; +type NullableAll540 = { [K in keyof Combined540]: Combined540[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString540 = T extends string ? true : false; +type IsNumber540 = T extends number ? true : false; +type TypeName540 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames540 = { + [K in keyof BigRecord540]: TypeName540; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb540 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource540 = "user" | "post" | "comment" | "tag" | "category"; +type Action540 = `${Verb540}_${Resource540}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise540 = T extends Promise ? UnwrapPromise540 : T; +type UnwrapArray540 = T extends (infer U)[] ? UnwrapArray540 : T; +type Head540 = T extends [infer H, ...infer _] ? H : never; +type Tail540 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation540 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation540>] + : never; + +type SmallUnion540 = "a" | "b" | "c" | "d"; +type AllPerms540 = Permutation540; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig540, + Flat540, + FR540, + BigUnion540, + ExtractAlpha540, + ExcludeZulu540, + OptionalAll540, + RequiredAll540, + ReadonlyAll540, + NullableAll540, + TypeNames540, + Action540, + AllPerms540, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts new file mode 100644 index 00000000..75bf0e66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-41 (seed 541) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord541 { + a541: { x: number; y: string; z: boolean }; + b541: { p: string[]; q: Record }; + c541: { nested: { deep: { deeper: { deepest: string } } } }; + d541: number; + e541: string; + f541: boolean; + g541: null; + h541: undefined; + i541: bigint; + j541: symbol; +} + +type PartialBig541 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten541 = T extends Array ? Flatten541 : T; +type Nested541 = number[][][][][][][][][][]; +type Flat541 = Flatten541; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly541 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly541 : T[K]; +}; +type DeepRequired541 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired541 : T[K]; +}; +type FR541 = DeepReadonly541>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion541 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha541 = Extract; +type ExcludeZulu541 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA541 { width: number; height: number; depth: number } +interface ShapeB541 { color: string; opacity: number; blend: string } +interface ShapeC541 { x: number; y: number; z: number; w: number } +interface ShapeD541 { label: string; title: string; summary: string } + +type Combined541 = ShapeA541 & ShapeB541 & ShapeC541 & ShapeD541; +type OptionalAll541 = { [K in keyof Combined541]?: Combined541[K] }; +type RequiredAll541 = { [K in keyof Combined541]-?: Combined541[K] }; +type ReadonlyAll541 = { readonly [K in keyof Combined541]: Combined541[K] }; +type NullableAll541 = { [K in keyof Combined541]: Combined541[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString541 = T extends string ? true : false; +type IsNumber541 = T extends number ? true : false; +type TypeName541 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames541 = { + [K in keyof BigRecord541]: TypeName541; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb541 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource541 = "user" | "post" | "comment" | "tag" | "category"; +type Action541 = `${Verb541}_${Resource541}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise541 = T extends Promise ? UnwrapPromise541 : T; +type UnwrapArray541 = T extends (infer U)[] ? UnwrapArray541 : T; +type Head541 = T extends [infer H, ...infer _] ? H : never; +type Tail541 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation541 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation541>] + : never; + +type SmallUnion541 = "a" | "b" | "c" | "d"; +type AllPerms541 = Permutation541; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig541, + Flat541, + FR541, + BigUnion541, + ExtractAlpha541, + ExcludeZulu541, + OptionalAll541, + RequiredAll541, + ReadonlyAll541, + NullableAll541, + TypeNames541, + Action541, + AllPerms541, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts new file mode 100644 index 00000000..82237cd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-42 (seed 542) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord542 { + a542: { x: number; y: string; z: boolean }; + b542: { p: string[]; q: Record }; + c542: { nested: { deep: { deeper: { deepest: string } } } }; + d542: number; + e542: string; + f542: boolean; + g542: null; + h542: undefined; + i542: bigint; + j542: symbol; +} + +type PartialBig542 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten542 = T extends Array ? Flatten542 : T; +type Nested542 = number[][][][][][][][][][]; +type Flat542 = Flatten542; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly542 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly542 : T[K]; +}; +type DeepRequired542 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired542 : T[K]; +}; +type FR542 = DeepReadonly542>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion542 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha542 = Extract; +type ExcludeZulu542 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA542 { width: number; height: number; depth: number } +interface ShapeB542 { color: string; opacity: number; blend: string } +interface ShapeC542 { x: number; y: number; z: number; w: number } +interface ShapeD542 { label: string; title: string; summary: string } + +type Combined542 = ShapeA542 & ShapeB542 & ShapeC542 & ShapeD542; +type OptionalAll542 = { [K in keyof Combined542]?: Combined542[K] }; +type RequiredAll542 = { [K in keyof Combined542]-?: Combined542[K] }; +type ReadonlyAll542 = { readonly [K in keyof Combined542]: Combined542[K] }; +type NullableAll542 = { [K in keyof Combined542]: Combined542[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString542 = T extends string ? true : false; +type IsNumber542 = T extends number ? true : false; +type TypeName542 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames542 = { + [K in keyof BigRecord542]: TypeName542; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb542 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource542 = "user" | "post" | "comment" | "tag" | "category"; +type Action542 = `${Verb542}_${Resource542}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise542 = T extends Promise ? UnwrapPromise542 : T; +type UnwrapArray542 = T extends (infer U)[] ? UnwrapArray542 : T; +type Head542 = T extends [infer H, ...infer _] ? H : never; +type Tail542 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation542 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation542>] + : never; + +type SmallUnion542 = "a" | "b" | "c" | "d"; +type AllPerms542 = Permutation542; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig542, + Flat542, + FR542, + BigUnion542, + ExtractAlpha542, + ExcludeZulu542, + OptionalAll542, + RequiredAll542, + ReadonlyAll542, + NullableAll542, + TypeNames542, + Action542, + AllPerms542, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts new file mode 100644 index 00000000..36ee3f68 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-43 (seed 543) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord543 { + a543: { x: number; y: string; z: boolean }; + b543: { p: string[]; q: Record }; + c543: { nested: { deep: { deeper: { deepest: string } } } }; + d543: number; + e543: string; + f543: boolean; + g543: null; + h543: undefined; + i543: bigint; + j543: symbol; +} + +type PartialBig543 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten543 = T extends Array ? Flatten543 : T; +type Nested543 = number[][][][][][][][][][]; +type Flat543 = Flatten543; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly543 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly543 : T[K]; +}; +type DeepRequired543 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired543 : T[K]; +}; +type FR543 = DeepReadonly543>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion543 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha543 = Extract; +type ExcludeZulu543 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA543 { width: number; height: number; depth: number } +interface ShapeB543 { color: string; opacity: number; blend: string } +interface ShapeC543 { x: number; y: number; z: number; w: number } +interface ShapeD543 { label: string; title: string; summary: string } + +type Combined543 = ShapeA543 & ShapeB543 & ShapeC543 & ShapeD543; +type OptionalAll543 = { [K in keyof Combined543]?: Combined543[K] }; +type RequiredAll543 = { [K in keyof Combined543]-?: Combined543[K] }; +type ReadonlyAll543 = { readonly [K in keyof Combined543]: Combined543[K] }; +type NullableAll543 = { [K in keyof Combined543]: Combined543[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString543 = T extends string ? true : false; +type IsNumber543 = T extends number ? true : false; +type TypeName543 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames543 = { + [K in keyof BigRecord543]: TypeName543; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb543 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource543 = "user" | "post" | "comment" | "tag" | "category"; +type Action543 = `${Verb543}_${Resource543}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise543 = T extends Promise ? UnwrapPromise543 : T; +type UnwrapArray543 = T extends (infer U)[] ? UnwrapArray543 : T; +type Head543 = T extends [infer H, ...infer _] ? H : never; +type Tail543 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation543 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation543>] + : never; + +type SmallUnion543 = "a" | "b" | "c" | "d"; +type AllPerms543 = Permutation543; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig543, + Flat543, + FR543, + BigUnion543, + ExtractAlpha543, + ExcludeZulu543, + OptionalAll543, + RequiredAll543, + ReadonlyAll543, + NullableAll543, + TypeNames543, + Action543, + AllPerms543, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts new file mode 100644 index 00000000..db69deb7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-44 (seed 544) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord544 { + a544: { x: number; y: string; z: boolean }; + b544: { p: string[]; q: Record }; + c544: { nested: { deep: { deeper: { deepest: string } } } }; + d544: number; + e544: string; + f544: boolean; + g544: null; + h544: undefined; + i544: bigint; + j544: symbol; +} + +type PartialBig544 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten544 = T extends Array ? Flatten544 : T; +type Nested544 = number[][][][][][][][][][]; +type Flat544 = Flatten544; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly544 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly544 : T[K]; +}; +type DeepRequired544 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired544 : T[K]; +}; +type FR544 = DeepReadonly544>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion544 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha544 = Extract; +type ExcludeZulu544 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA544 { width: number; height: number; depth: number } +interface ShapeB544 { color: string; opacity: number; blend: string } +interface ShapeC544 { x: number; y: number; z: number; w: number } +interface ShapeD544 { label: string; title: string; summary: string } + +type Combined544 = ShapeA544 & ShapeB544 & ShapeC544 & ShapeD544; +type OptionalAll544 = { [K in keyof Combined544]?: Combined544[K] }; +type RequiredAll544 = { [K in keyof Combined544]-?: Combined544[K] }; +type ReadonlyAll544 = { readonly [K in keyof Combined544]: Combined544[K] }; +type NullableAll544 = { [K in keyof Combined544]: Combined544[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString544 = T extends string ? true : false; +type IsNumber544 = T extends number ? true : false; +type TypeName544 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames544 = { + [K in keyof BigRecord544]: TypeName544; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb544 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource544 = "user" | "post" | "comment" | "tag" | "category"; +type Action544 = `${Verb544}_${Resource544}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise544 = T extends Promise ? UnwrapPromise544 : T; +type UnwrapArray544 = T extends (infer U)[] ? UnwrapArray544 : T; +type Head544 = T extends [infer H, ...infer _] ? H : never; +type Tail544 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation544 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation544>] + : never; + +type SmallUnion544 = "a" | "b" | "c" | "d"; +type AllPerms544 = Permutation544; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig544, + Flat544, + FR544, + BigUnion544, + ExtractAlpha544, + ExcludeZulu544, + OptionalAll544, + RequiredAll544, + ReadonlyAll544, + NullableAll544, + TypeNames544, + Action544, + AllPerms544, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts new file mode 100644 index 00000000..ad594ed4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-45 (seed 545) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord545 { + a545: { x: number; y: string; z: boolean }; + b545: { p: string[]; q: Record }; + c545: { nested: { deep: { deeper: { deepest: string } } } }; + d545: number; + e545: string; + f545: boolean; + g545: null; + h545: undefined; + i545: bigint; + j545: symbol; +} + +type PartialBig545 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten545 = T extends Array ? Flatten545 : T; +type Nested545 = number[][][][][][][][][][]; +type Flat545 = Flatten545; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly545 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly545 : T[K]; +}; +type DeepRequired545 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired545 : T[K]; +}; +type FR545 = DeepReadonly545>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion545 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha545 = Extract; +type ExcludeZulu545 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA545 { width: number; height: number; depth: number } +interface ShapeB545 { color: string; opacity: number; blend: string } +interface ShapeC545 { x: number; y: number; z: number; w: number } +interface ShapeD545 { label: string; title: string; summary: string } + +type Combined545 = ShapeA545 & ShapeB545 & ShapeC545 & ShapeD545; +type OptionalAll545 = { [K in keyof Combined545]?: Combined545[K] }; +type RequiredAll545 = { [K in keyof Combined545]-?: Combined545[K] }; +type ReadonlyAll545 = { readonly [K in keyof Combined545]: Combined545[K] }; +type NullableAll545 = { [K in keyof Combined545]: Combined545[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString545 = T extends string ? true : false; +type IsNumber545 = T extends number ? true : false; +type TypeName545 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames545 = { + [K in keyof BigRecord545]: TypeName545; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb545 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource545 = "user" | "post" | "comment" | "tag" | "category"; +type Action545 = `${Verb545}_${Resource545}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise545 = T extends Promise ? UnwrapPromise545 : T; +type UnwrapArray545 = T extends (infer U)[] ? UnwrapArray545 : T; +type Head545 = T extends [infer H, ...infer _] ? H : never; +type Tail545 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation545 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation545>] + : never; + +type SmallUnion545 = "a" | "b" | "c" | "d"; +type AllPerms545 = Permutation545; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig545, + Flat545, + FR545, + BigUnion545, + ExtractAlpha545, + ExcludeZulu545, + OptionalAll545, + RequiredAll545, + ReadonlyAll545, + NullableAll545, + TypeNames545, + Action545, + AllPerms545, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts new file mode 100644 index 00000000..7d6a40e9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-46 (seed 546) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord546 { + a546: { x: number; y: string; z: boolean }; + b546: { p: string[]; q: Record }; + c546: { nested: { deep: { deeper: { deepest: string } } } }; + d546: number; + e546: string; + f546: boolean; + g546: null; + h546: undefined; + i546: bigint; + j546: symbol; +} + +type PartialBig546 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten546 = T extends Array ? Flatten546 : T; +type Nested546 = number[][][][][][][][][][]; +type Flat546 = Flatten546; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly546 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly546 : T[K]; +}; +type DeepRequired546 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired546 : T[K]; +}; +type FR546 = DeepReadonly546>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion546 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha546 = Extract; +type ExcludeZulu546 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA546 { width: number; height: number; depth: number } +interface ShapeB546 { color: string; opacity: number; blend: string } +interface ShapeC546 { x: number; y: number; z: number; w: number } +interface ShapeD546 { label: string; title: string; summary: string } + +type Combined546 = ShapeA546 & ShapeB546 & ShapeC546 & ShapeD546; +type OptionalAll546 = { [K in keyof Combined546]?: Combined546[K] }; +type RequiredAll546 = { [K in keyof Combined546]-?: Combined546[K] }; +type ReadonlyAll546 = { readonly [K in keyof Combined546]: Combined546[K] }; +type NullableAll546 = { [K in keyof Combined546]: Combined546[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString546 = T extends string ? true : false; +type IsNumber546 = T extends number ? true : false; +type TypeName546 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames546 = { + [K in keyof BigRecord546]: TypeName546; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb546 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource546 = "user" | "post" | "comment" | "tag" | "category"; +type Action546 = `${Verb546}_${Resource546}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise546 = T extends Promise ? UnwrapPromise546 : T; +type UnwrapArray546 = T extends (infer U)[] ? UnwrapArray546 : T; +type Head546 = T extends [infer H, ...infer _] ? H : never; +type Tail546 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation546 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation546>] + : never; + +type SmallUnion546 = "a" | "b" | "c" | "d"; +type AllPerms546 = Permutation546; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig546, + Flat546, + FR546, + BigUnion546, + ExtractAlpha546, + ExcludeZulu546, + OptionalAll546, + RequiredAll546, + ReadonlyAll546, + NullableAll546, + TypeNames546, + Action546, + AllPerms546, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts new file mode 100644 index 00000000..3d8014f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-47 (seed 547) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord547 { + a547: { x: number; y: string; z: boolean }; + b547: { p: string[]; q: Record }; + c547: { nested: { deep: { deeper: { deepest: string } } } }; + d547: number; + e547: string; + f547: boolean; + g547: null; + h547: undefined; + i547: bigint; + j547: symbol; +} + +type PartialBig547 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten547 = T extends Array ? Flatten547 : T; +type Nested547 = number[][][][][][][][][][]; +type Flat547 = Flatten547; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly547 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly547 : T[K]; +}; +type DeepRequired547 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired547 : T[K]; +}; +type FR547 = DeepReadonly547>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion547 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha547 = Extract; +type ExcludeZulu547 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA547 { width: number; height: number; depth: number } +interface ShapeB547 { color: string; opacity: number; blend: string } +interface ShapeC547 { x: number; y: number; z: number; w: number } +interface ShapeD547 { label: string; title: string; summary: string } + +type Combined547 = ShapeA547 & ShapeB547 & ShapeC547 & ShapeD547; +type OptionalAll547 = { [K in keyof Combined547]?: Combined547[K] }; +type RequiredAll547 = { [K in keyof Combined547]-?: Combined547[K] }; +type ReadonlyAll547 = { readonly [K in keyof Combined547]: Combined547[K] }; +type NullableAll547 = { [K in keyof Combined547]: Combined547[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString547 = T extends string ? true : false; +type IsNumber547 = T extends number ? true : false; +type TypeName547 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames547 = { + [K in keyof BigRecord547]: TypeName547; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb547 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource547 = "user" | "post" | "comment" | "tag" | "category"; +type Action547 = `${Verb547}_${Resource547}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise547 = T extends Promise ? UnwrapPromise547 : T; +type UnwrapArray547 = T extends (infer U)[] ? UnwrapArray547 : T; +type Head547 = T extends [infer H, ...infer _] ? H : never; +type Tail547 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation547 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation547>] + : never; + +type SmallUnion547 = "a" | "b" | "c" | "d"; +type AllPerms547 = Permutation547; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig547, + Flat547, + FR547, + BigUnion547, + ExtractAlpha547, + ExcludeZulu547, + OptionalAll547, + RequiredAll547, + ReadonlyAll547, + NullableAll547, + TypeNames547, + Action547, + AllPerms547, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts new file mode 100644 index 00000000..f3f320ae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-48 (seed 548) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord548 { + a548: { x: number; y: string; z: boolean }; + b548: { p: string[]; q: Record }; + c548: { nested: { deep: { deeper: { deepest: string } } } }; + d548: number; + e548: string; + f548: boolean; + g548: null; + h548: undefined; + i548: bigint; + j548: symbol; +} + +type PartialBig548 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten548 = T extends Array ? Flatten548 : T; +type Nested548 = number[][][][][][][][][][]; +type Flat548 = Flatten548; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly548 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly548 : T[K]; +}; +type DeepRequired548 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired548 : T[K]; +}; +type FR548 = DeepReadonly548>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion548 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha548 = Extract; +type ExcludeZulu548 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA548 { width: number; height: number; depth: number } +interface ShapeB548 { color: string; opacity: number; blend: string } +interface ShapeC548 { x: number; y: number; z: number; w: number } +interface ShapeD548 { label: string; title: string; summary: string } + +type Combined548 = ShapeA548 & ShapeB548 & ShapeC548 & ShapeD548; +type OptionalAll548 = { [K in keyof Combined548]?: Combined548[K] }; +type RequiredAll548 = { [K in keyof Combined548]-?: Combined548[K] }; +type ReadonlyAll548 = { readonly [K in keyof Combined548]: Combined548[K] }; +type NullableAll548 = { [K in keyof Combined548]: Combined548[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString548 = T extends string ? true : false; +type IsNumber548 = T extends number ? true : false; +type TypeName548 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames548 = { + [K in keyof BigRecord548]: TypeName548; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb548 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource548 = "user" | "post" | "comment" | "tag" | "category"; +type Action548 = `${Verb548}_${Resource548}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise548 = T extends Promise ? UnwrapPromise548 : T; +type UnwrapArray548 = T extends (infer U)[] ? UnwrapArray548 : T; +type Head548 = T extends [infer H, ...infer _] ? H : never; +type Tail548 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation548 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation548>] + : never; + +type SmallUnion548 = "a" | "b" | "c" | "d"; +type AllPerms548 = Permutation548; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig548, + Flat548, + FR548, + BigUnion548, + ExtractAlpha548, + ExcludeZulu548, + OptionalAll548, + RequiredAll548, + ReadonlyAll548, + NullableAll548, + TypeNames548, + Action548, + AllPerms548, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts new file mode 100644 index 00000000..caecd666 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-49 (seed 549) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord549 { + a549: { x: number; y: string; z: boolean }; + b549: { p: string[]; q: Record }; + c549: { nested: { deep: { deeper: { deepest: string } } } }; + d549: number; + e549: string; + f549: boolean; + g549: null; + h549: undefined; + i549: bigint; + j549: symbol; +} + +type PartialBig549 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten549 = T extends Array ? Flatten549 : T; +type Nested549 = number[][][][][][][][][][]; +type Flat549 = Flatten549; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly549 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly549 : T[K]; +}; +type DeepRequired549 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired549 : T[K]; +}; +type FR549 = DeepReadonly549>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion549 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha549 = Extract; +type ExcludeZulu549 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA549 { width: number; height: number; depth: number } +interface ShapeB549 { color: string; opacity: number; blend: string } +interface ShapeC549 { x: number; y: number; z: number; w: number } +interface ShapeD549 { label: string; title: string; summary: string } + +type Combined549 = ShapeA549 & ShapeB549 & ShapeC549 & ShapeD549; +type OptionalAll549 = { [K in keyof Combined549]?: Combined549[K] }; +type RequiredAll549 = { [K in keyof Combined549]-?: Combined549[K] }; +type ReadonlyAll549 = { readonly [K in keyof Combined549]: Combined549[K] }; +type NullableAll549 = { [K in keyof Combined549]: Combined549[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString549 = T extends string ? true : false; +type IsNumber549 = T extends number ? true : false; +type TypeName549 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames549 = { + [K in keyof BigRecord549]: TypeName549; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb549 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource549 = "user" | "post" | "comment" | "tag" | "category"; +type Action549 = `${Verb549}_${Resource549}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise549 = T extends Promise ? UnwrapPromise549 : T; +type UnwrapArray549 = T extends (infer U)[] ? UnwrapArray549 : T; +type Head549 = T extends [infer H, ...infer _] ? H : never; +type Tail549 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation549 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation549>] + : never; + +type SmallUnion549 = "a" | "b" | "c" | "d"; +type AllPerms549 = Permutation549; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig549, + Flat549, + FR549, + BigUnion549, + ExtractAlpha549, + ExcludeZulu549, + OptionalAll549, + RequiredAll549, + ReadonlyAll549, + NullableAll549, + TypeNames549, + Action549, + AllPerms549, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts new file mode 100644 index 00000000..9975d32c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts @@ -0,0 +1,125 @@ +// pkg-05 / types-50 (seed 550) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord550 { + a550: { x: number; y: string; z: boolean }; + b550: { p: string[]; q: Record }; + c550: { nested: { deep: { deeper: { deepest: string } } } }; + d550: number; + e550: string; + f550: boolean; + g550: null; + h550: undefined; + i550: bigint; + j550: symbol; +} + +type PartialBig550 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten550 = T extends Array ? Flatten550 : T; +type Nested550 = number[][][][][][][][][][]; +type Flat550 = Flatten550; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly550 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly550 : T[K]; +}; +type DeepRequired550 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired550 : T[K]; +}; +type FR550 = DeepReadonly550>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion550 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha550 = Extract; +type ExcludeZulu550 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA550 { width: number; height: number; depth: number } +interface ShapeB550 { color: string; opacity: number; blend: string } +interface ShapeC550 { x: number; y: number; z: number; w: number } +interface ShapeD550 { label: string; title: string; summary: string } + +type Combined550 = ShapeA550 & ShapeB550 & ShapeC550 & ShapeD550; +type OptionalAll550 = { [K in keyof Combined550]?: Combined550[K] }; +type RequiredAll550 = { [K in keyof Combined550]-?: Combined550[K] }; +type ReadonlyAll550 = { readonly [K in keyof Combined550]: Combined550[K] }; +type NullableAll550 = { [K in keyof Combined550]: Combined550[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString550 = T extends string ? true : false; +type IsNumber550 = T extends number ? true : false; +type TypeName550 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames550 = { + [K in keyof BigRecord550]: TypeName550; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb550 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource550 = "user" | "post" | "comment" | "tag" | "category"; +type Action550 = `${Verb550}_${Resource550}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise550 = T extends Promise ? UnwrapPromise550 : T; +type UnwrapArray550 = T extends (infer U)[] ? UnwrapArray550 : T; +type Head550 = T extends [infer H, ...infer _] ? H : never; +type Tail550 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation550 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation550>] + : never; + +type SmallUnion550 = "a" | "b" | "c" | "d"; +type AllPerms550 = Permutation550; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig550, + Flat550, + FR550, + BigUnion550, + ExtractAlpha550, + ExcludeZulu550, + OptionalAll550, + RequiredAll550, + ReadonlyAll550, + NullableAll550, + TypeNames550, + Action550, + AllPerms550, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts new file mode 100644 index 00000000..878e1cd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-01 (seed 601) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord601 { + a601: { x: number; y: string; z: boolean }; + b601: { p: string[]; q: Record }; + c601: { nested: { deep: { deeper: { deepest: string } } } }; + d601: number; + e601: string; + f601: boolean; + g601: null; + h601: undefined; + i601: bigint; + j601: symbol; +} + +type PartialBig601 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten601 = T extends Array ? Flatten601 : T; +type Nested601 = number[][][][][][][][][][]; +type Flat601 = Flatten601; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly601 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly601 : T[K]; +}; +type DeepRequired601 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired601 : T[K]; +}; +type FR601 = DeepReadonly601>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion601 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha601 = Extract; +type ExcludeZulu601 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA601 { width: number; height: number; depth: number } +interface ShapeB601 { color: string; opacity: number; blend: string } +interface ShapeC601 { x: number; y: number; z: number; w: number } +interface ShapeD601 { label: string; title: string; summary: string } + +type Combined601 = ShapeA601 & ShapeB601 & ShapeC601 & ShapeD601; +type OptionalAll601 = { [K in keyof Combined601]?: Combined601[K] }; +type RequiredAll601 = { [K in keyof Combined601]-?: Combined601[K] }; +type ReadonlyAll601 = { readonly [K in keyof Combined601]: Combined601[K] }; +type NullableAll601 = { [K in keyof Combined601]: Combined601[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString601 = T extends string ? true : false; +type IsNumber601 = T extends number ? true : false; +type TypeName601 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames601 = { + [K in keyof BigRecord601]: TypeName601; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb601 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource601 = "user" | "post" | "comment" | "tag" | "category"; +type Action601 = `${Verb601}_${Resource601}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise601 = T extends Promise ? UnwrapPromise601 : T; +type UnwrapArray601 = T extends (infer U)[] ? UnwrapArray601 : T; +type Head601 = T extends [infer H, ...infer _] ? H : never; +type Tail601 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation601 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation601>] + : never; + +type SmallUnion601 = "a" | "b" | "c" | "d"; +type AllPerms601 = Permutation601; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig601, + Flat601, + FR601, + BigUnion601, + ExtractAlpha601, + ExcludeZulu601, + OptionalAll601, + RequiredAll601, + ReadonlyAll601, + NullableAll601, + TypeNames601, + Action601, + AllPerms601, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts new file mode 100644 index 00000000..2ff3431f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-02 (seed 602) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord602 { + a602: { x: number; y: string; z: boolean }; + b602: { p: string[]; q: Record }; + c602: { nested: { deep: { deeper: { deepest: string } } } }; + d602: number; + e602: string; + f602: boolean; + g602: null; + h602: undefined; + i602: bigint; + j602: symbol; +} + +type PartialBig602 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten602 = T extends Array ? Flatten602 : T; +type Nested602 = number[][][][][][][][][][]; +type Flat602 = Flatten602; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly602 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly602 : T[K]; +}; +type DeepRequired602 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired602 : T[K]; +}; +type FR602 = DeepReadonly602>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion602 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha602 = Extract; +type ExcludeZulu602 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA602 { width: number; height: number; depth: number } +interface ShapeB602 { color: string; opacity: number; blend: string } +interface ShapeC602 { x: number; y: number; z: number; w: number } +interface ShapeD602 { label: string; title: string; summary: string } + +type Combined602 = ShapeA602 & ShapeB602 & ShapeC602 & ShapeD602; +type OptionalAll602 = { [K in keyof Combined602]?: Combined602[K] }; +type RequiredAll602 = { [K in keyof Combined602]-?: Combined602[K] }; +type ReadonlyAll602 = { readonly [K in keyof Combined602]: Combined602[K] }; +type NullableAll602 = { [K in keyof Combined602]: Combined602[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString602 = T extends string ? true : false; +type IsNumber602 = T extends number ? true : false; +type TypeName602 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames602 = { + [K in keyof BigRecord602]: TypeName602; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb602 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource602 = "user" | "post" | "comment" | "tag" | "category"; +type Action602 = `${Verb602}_${Resource602}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise602 = T extends Promise ? UnwrapPromise602 : T; +type UnwrapArray602 = T extends (infer U)[] ? UnwrapArray602 : T; +type Head602 = T extends [infer H, ...infer _] ? H : never; +type Tail602 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation602 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation602>] + : never; + +type SmallUnion602 = "a" | "b" | "c" | "d"; +type AllPerms602 = Permutation602; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig602, + Flat602, + FR602, + BigUnion602, + ExtractAlpha602, + ExcludeZulu602, + OptionalAll602, + RequiredAll602, + ReadonlyAll602, + NullableAll602, + TypeNames602, + Action602, + AllPerms602, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts new file mode 100644 index 00000000..523830ad --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-03 (seed 603) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord603 { + a603: { x: number; y: string; z: boolean }; + b603: { p: string[]; q: Record }; + c603: { nested: { deep: { deeper: { deepest: string } } } }; + d603: number; + e603: string; + f603: boolean; + g603: null; + h603: undefined; + i603: bigint; + j603: symbol; +} + +type PartialBig603 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten603 = T extends Array ? Flatten603 : T; +type Nested603 = number[][][][][][][][][][]; +type Flat603 = Flatten603; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly603 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly603 : T[K]; +}; +type DeepRequired603 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired603 : T[K]; +}; +type FR603 = DeepReadonly603>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion603 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha603 = Extract; +type ExcludeZulu603 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA603 { width: number; height: number; depth: number } +interface ShapeB603 { color: string; opacity: number; blend: string } +interface ShapeC603 { x: number; y: number; z: number; w: number } +interface ShapeD603 { label: string; title: string; summary: string } + +type Combined603 = ShapeA603 & ShapeB603 & ShapeC603 & ShapeD603; +type OptionalAll603 = { [K in keyof Combined603]?: Combined603[K] }; +type RequiredAll603 = { [K in keyof Combined603]-?: Combined603[K] }; +type ReadonlyAll603 = { readonly [K in keyof Combined603]: Combined603[K] }; +type NullableAll603 = { [K in keyof Combined603]: Combined603[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString603 = T extends string ? true : false; +type IsNumber603 = T extends number ? true : false; +type TypeName603 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames603 = { + [K in keyof BigRecord603]: TypeName603; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb603 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource603 = "user" | "post" | "comment" | "tag" | "category"; +type Action603 = `${Verb603}_${Resource603}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise603 = T extends Promise ? UnwrapPromise603 : T; +type UnwrapArray603 = T extends (infer U)[] ? UnwrapArray603 : T; +type Head603 = T extends [infer H, ...infer _] ? H : never; +type Tail603 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation603 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation603>] + : never; + +type SmallUnion603 = "a" | "b" | "c" | "d"; +type AllPerms603 = Permutation603; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig603, + Flat603, + FR603, + BigUnion603, + ExtractAlpha603, + ExcludeZulu603, + OptionalAll603, + RequiredAll603, + ReadonlyAll603, + NullableAll603, + TypeNames603, + Action603, + AllPerms603, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts new file mode 100644 index 00000000..47a87a3e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-04 (seed 604) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord604 { + a604: { x: number; y: string; z: boolean }; + b604: { p: string[]; q: Record }; + c604: { nested: { deep: { deeper: { deepest: string } } } }; + d604: number; + e604: string; + f604: boolean; + g604: null; + h604: undefined; + i604: bigint; + j604: symbol; +} + +type PartialBig604 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten604 = T extends Array ? Flatten604 : T; +type Nested604 = number[][][][][][][][][][]; +type Flat604 = Flatten604; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly604 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly604 : T[K]; +}; +type DeepRequired604 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired604 : T[K]; +}; +type FR604 = DeepReadonly604>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion604 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha604 = Extract; +type ExcludeZulu604 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA604 { width: number; height: number; depth: number } +interface ShapeB604 { color: string; opacity: number; blend: string } +interface ShapeC604 { x: number; y: number; z: number; w: number } +interface ShapeD604 { label: string; title: string; summary: string } + +type Combined604 = ShapeA604 & ShapeB604 & ShapeC604 & ShapeD604; +type OptionalAll604 = { [K in keyof Combined604]?: Combined604[K] }; +type RequiredAll604 = { [K in keyof Combined604]-?: Combined604[K] }; +type ReadonlyAll604 = { readonly [K in keyof Combined604]: Combined604[K] }; +type NullableAll604 = { [K in keyof Combined604]: Combined604[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString604 = T extends string ? true : false; +type IsNumber604 = T extends number ? true : false; +type TypeName604 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames604 = { + [K in keyof BigRecord604]: TypeName604; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb604 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource604 = "user" | "post" | "comment" | "tag" | "category"; +type Action604 = `${Verb604}_${Resource604}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise604 = T extends Promise ? UnwrapPromise604 : T; +type UnwrapArray604 = T extends (infer U)[] ? UnwrapArray604 : T; +type Head604 = T extends [infer H, ...infer _] ? H : never; +type Tail604 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation604 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation604>] + : never; + +type SmallUnion604 = "a" | "b" | "c" | "d"; +type AllPerms604 = Permutation604; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig604, + Flat604, + FR604, + BigUnion604, + ExtractAlpha604, + ExcludeZulu604, + OptionalAll604, + RequiredAll604, + ReadonlyAll604, + NullableAll604, + TypeNames604, + Action604, + AllPerms604, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts new file mode 100644 index 00000000..6b6c3ee5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-05 (seed 605) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord605 { + a605: { x: number; y: string; z: boolean }; + b605: { p: string[]; q: Record }; + c605: { nested: { deep: { deeper: { deepest: string } } } }; + d605: number; + e605: string; + f605: boolean; + g605: null; + h605: undefined; + i605: bigint; + j605: symbol; +} + +type PartialBig605 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten605 = T extends Array ? Flatten605 : T; +type Nested605 = number[][][][][][][][][][]; +type Flat605 = Flatten605; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly605 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly605 : T[K]; +}; +type DeepRequired605 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired605 : T[K]; +}; +type FR605 = DeepReadonly605>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion605 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha605 = Extract; +type ExcludeZulu605 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA605 { width: number; height: number; depth: number } +interface ShapeB605 { color: string; opacity: number; blend: string } +interface ShapeC605 { x: number; y: number; z: number; w: number } +interface ShapeD605 { label: string; title: string; summary: string } + +type Combined605 = ShapeA605 & ShapeB605 & ShapeC605 & ShapeD605; +type OptionalAll605 = { [K in keyof Combined605]?: Combined605[K] }; +type RequiredAll605 = { [K in keyof Combined605]-?: Combined605[K] }; +type ReadonlyAll605 = { readonly [K in keyof Combined605]: Combined605[K] }; +type NullableAll605 = { [K in keyof Combined605]: Combined605[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString605 = T extends string ? true : false; +type IsNumber605 = T extends number ? true : false; +type TypeName605 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames605 = { + [K in keyof BigRecord605]: TypeName605; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb605 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource605 = "user" | "post" | "comment" | "tag" | "category"; +type Action605 = `${Verb605}_${Resource605}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise605 = T extends Promise ? UnwrapPromise605 : T; +type UnwrapArray605 = T extends (infer U)[] ? UnwrapArray605 : T; +type Head605 = T extends [infer H, ...infer _] ? H : never; +type Tail605 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation605 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation605>] + : never; + +type SmallUnion605 = "a" | "b" | "c" | "d"; +type AllPerms605 = Permutation605; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig605, + Flat605, + FR605, + BigUnion605, + ExtractAlpha605, + ExcludeZulu605, + OptionalAll605, + RequiredAll605, + ReadonlyAll605, + NullableAll605, + TypeNames605, + Action605, + AllPerms605, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts new file mode 100644 index 00000000..7302eb5f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-06 (seed 606) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord606 { + a606: { x: number; y: string; z: boolean }; + b606: { p: string[]; q: Record }; + c606: { nested: { deep: { deeper: { deepest: string } } } }; + d606: number; + e606: string; + f606: boolean; + g606: null; + h606: undefined; + i606: bigint; + j606: symbol; +} + +type PartialBig606 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten606 = T extends Array ? Flatten606 : T; +type Nested606 = number[][][][][][][][][][]; +type Flat606 = Flatten606; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly606 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly606 : T[K]; +}; +type DeepRequired606 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired606 : T[K]; +}; +type FR606 = DeepReadonly606>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion606 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha606 = Extract; +type ExcludeZulu606 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA606 { width: number; height: number; depth: number } +interface ShapeB606 { color: string; opacity: number; blend: string } +interface ShapeC606 { x: number; y: number; z: number; w: number } +interface ShapeD606 { label: string; title: string; summary: string } + +type Combined606 = ShapeA606 & ShapeB606 & ShapeC606 & ShapeD606; +type OptionalAll606 = { [K in keyof Combined606]?: Combined606[K] }; +type RequiredAll606 = { [K in keyof Combined606]-?: Combined606[K] }; +type ReadonlyAll606 = { readonly [K in keyof Combined606]: Combined606[K] }; +type NullableAll606 = { [K in keyof Combined606]: Combined606[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString606 = T extends string ? true : false; +type IsNumber606 = T extends number ? true : false; +type TypeName606 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames606 = { + [K in keyof BigRecord606]: TypeName606; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb606 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource606 = "user" | "post" | "comment" | "tag" | "category"; +type Action606 = `${Verb606}_${Resource606}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise606 = T extends Promise ? UnwrapPromise606 : T; +type UnwrapArray606 = T extends (infer U)[] ? UnwrapArray606 : T; +type Head606 = T extends [infer H, ...infer _] ? H : never; +type Tail606 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation606 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation606>] + : never; + +type SmallUnion606 = "a" | "b" | "c" | "d"; +type AllPerms606 = Permutation606; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig606, + Flat606, + FR606, + BigUnion606, + ExtractAlpha606, + ExcludeZulu606, + OptionalAll606, + RequiredAll606, + ReadonlyAll606, + NullableAll606, + TypeNames606, + Action606, + AllPerms606, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts new file mode 100644 index 00000000..74dd477d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-07 (seed 607) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord607 { + a607: { x: number; y: string; z: boolean }; + b607: { p: string[]; q: Record }; + c607: { nested: { deep: { deeper: { deepest: string } } } }; + d607: number; + e607: string; + f607: boolean; + g607: null; + h607: undefined; + i607: bigint; + j607: symbol; +} + +type PartialBig607 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten607 = T extends Array ? Flatten607 : T; +type Nested607 = number[][][][][][][][][][]; +type Flat607 = Flatten607; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly607 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly607 : T[K]; +}; +type DeepRequired607 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired607 : T[K]; +}; +type FR607 = DeepReadonly607>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion607 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha607 = Extract; +type ExcludeZulu607 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA607 { width: number; height: number; depth: number } +interface ShapeB607 { color: string; opacity: number; blend: string } +interface ShapeC607 { x: number; y: number; z: number; w: number } +interface ShapeD607 { label: string; title: string; summary: string } + +type Combined607 = ShapeA607 & ShapeB607 & ShapeC607 & ShapeD607; +type OptionalAll607 = { [K in keyof Combined607]?: Combined607[K] }; +type RequiredAll607 = { [K in keyof Combined607]-?: Combined607[K] }; +type ReadonlyAll607 = { readonly [K in keyof Combined607]: Combined607[K] }; +type NullableAll607 = { [K in keyof Combined607]: Combined607[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString607 = T extends string ? true : false; +type IsNumber607 = T extends number ? true : false; +type TypeName607 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames607 = { + [K in keyof BigRecord607]: TypeName607; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb607 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource607 = "user" | "post" | "comment" | "tag" | "category"; +type Action607 = `${Verb607}_${Resource607}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise607 = T extends Promise ? UnwrapPromise607 : T; +type UnwrapArray607 = T extends (infer U)[] ? UnwrapArray607 : T; +type Head607 = T extends [infer H, ...infer _] ? H : never; +type Tail607 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation607 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation607>] + : never; + +type SmallUnion607 = "a" | "b" | "c" | "d"; +type AllPerms607 = Permutation607; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig607, + Flat607, + FR607, + BigUnion607, + ExtractAlpha607, + ExcludeZulu607, + OptionalAll607, + RequiredAll607, + ReadonlyAll607, + NullableAll607, + TypeNames607, + Action607, + AllPerms607, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts new file mode 100644 index 00000000..2f572696 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-08 (seed 608) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord608 { + a608: { x: number; y: string; z: boolean }; + b608: { p: string[]; q: Record }; + c608: { nested: { deep: { deeper: { deepest: string } } } }; + d608: number; + e608: string; + f608: boolean; + g608: null; + h608: undefined; + i608: bigint; + j608: symbol; +} + +type PartialBig608 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten608 = T extends Array ? Flatten608 : T; +type Nested608 = number[][][][][][][][][][]; +type Flat608 = Flatten608; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly608 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly608 : T[K]; +}; +type DeepRequired608 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired608 : T[K]; +}; +type FR608 = DeepReadonly608>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion608 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha608 = Extract; +type ExcludeZulu608 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA608 { width: number; height: number; depth: number } +interface ShapeB608 { color: string; opacity: number; blend: string } +interface ShapeC608 { x: number; y: number; z: number; w: number } +interface ShapeD608 { label: string; title: string; summary: string } + +type Combined608 = ShapeA608 & ShapeB608 & ShapeC608 & ShapeD608; +type OptionalAll608 = { [K in keyof Combined608]?: Combined608[K] }; +type RequiredAll608 = { [K in keyof Combined608]-?: Combined608[K] }; +type ReadonlyAll608 = { readonly [K in keyof Combined608]: Combined608[K] }; +type NullableAll608 = { [K in keyof Combined608]: Combined608[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString608 = T extends string ? true : false; +type IsNumber608 = T extends number ? true : false; +type TypeName608 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames608 = { + [K in keyof BigRecord608]: TypeName608; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb608 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource608 = "user" | "post" | "comment" | "tag" | "category"; +type Action608 = `${Verb608}_${Resource608}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise608 = T extends Promise ? UnwrapPromise608 : T; +type UnwrapArray608 = T extends (infer U)[] ? UnwrapArray608 : T; +type Head608 = T extends [infer H, ...infer _] ? H : never; +type Tail608 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation608 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation608>] + : never; + +type SmallUnion608 = "a" | "b" | "c" | "d"; +type AllPerms608 = Permutation608; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig608, + Flat608, + FR608, + BigUnion608, + ExtractAlpha608, + ExcludeZulu608, + OptionalAll608, + RequiredAll608, + ReadonlyAll608, + NullableAll608, + TypeNames608, + Action608, + AllPerms608, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts new file mode 100644 index 00000000..31e7b83b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-09 (seed 609) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord609 { + a609: { x: number; y: string; z: boolean }; + b609: { p: string[]; q: Record }; + c609: { nested: { deep: { deeper: { deepest: string } } } }; + d609: number; + e609: string; + f609: boolean; + g609: null; + h609: undefined; + i609: bigint; + j609: symbol; +} + +type PartialBig609 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten609 = T extends Array ? Flatten609 : T; +type Nested609 = number[][][][][][][][][][]; +type Flat609 = Flatten609; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly609 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly609 : T[K]; +}; +type DeepRequired609 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired609 : T[K]; +}; +type FR609 = DeepReadonly609>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion609 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha609 = Extract; +type ExcludeZulu609 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA609 { width: number; height: number; depth: number } +interface ShapeB609 { color: string; opacity: number; blend: string } +interface ShapeC609 { x: number; y: number; z: number; w: number } +interface ShapeD609 { label: string; title: string; summary: string } + +type Combined609 = ShapeA609 & ShapeB609 & ShapeC609 & ShapeD609; +type OptionalAll609 = { [K in keyof Combined609]?: Combined609[K] }; +type RequiredAll609 = { [K in keyof Combined609]-?: Combined609[K] }; +type ReadonlyAll609 = { readonly [K in keyof Combined609]: Combined609[K] }; +type NullableAll609 = { [K in keyof Combined609]: Combined609[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString609 = T extends string ? true : false; +type IsNumber609 = T extends number ? true : false; +type TypeName609 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames609 = { + [K in keyof BigRecord609]: TypeName609; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb609 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource609 = "user" | "post" | "comment" | "tag" | "category"; +type Action609 = `${Verb609}_${Resource609}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise609 = T extends Promise ? UnwrapPromise609 : T; +type UnwrapArray609 = T extends (infer U)[] ? UnwrapArray609 : T; +type Head609 = T extends [infer H, ...infer _] ? H : never; +type Tail609 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation609 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation609>] + : never; + +type SmallUnion609 = "a" | "b" | "c" | "d"; +type AllPerms609 = Permutation609; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig609, + Flat609, + FR609, + BigUnion609, + ExtractAlpha609, + ExcludeZulu609, + OptionalAll609, + RequiredAll609, + ReadonlyAll609, + NullableAll609, + TypeNames609, + Action609, + AllPerms609, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts new file mode 100644 index 00000000..2763471a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-10 (seed 610) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord610 { + a610: { x: number; y: string; z: boolean }; + b610: { p: string[]; q: Record }; + c610: { nested: { deep: { deeper: { deepest: string } } } }; + d610: number; + e610: string; + f610: boolean; + g610: null; + h610: undefined; + i610: bigint; + j610: symbol; +} + +type PartialBig610 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten610 = T extends Array ? Flatten610 : T; +type Nested610 = number[][][][][][][][][][]; +type Flat610 = Flatten610; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly610 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly610 : T[K]; +}; +type DeepRequired610 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired610 : T[K]; +}; +type FR610 = DeepReadonly610>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion610 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha610 = Extract; +type ExcludeZulu610 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA610 { width: number; height: number; depth: number } +interface ShapeB610 { color: string; opacity: number; blend: string } +interface ShapeC610 { x: number; y: number; z: number; w: number } +interface ShapeD610 { label: string; title: string; summary: string } + +type Combined610 = ShapeA610 & ShapeB610 & ShapeC610 & ShapeD610; +type OptionalAll610 = { [K in keyof Combined610]?: Combined610[K] }; +type RequiredAll610 = { [K in keyof Combined610]-?: Combined610[K] }; +type ReadonlyAll610 = { readonly [K in keyof Combined610]: Combined610[K] }; +type NullableAll610 = { [K in keyof Combined610]: Combined610[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString610 = T extends string ? true : false; +type IsNumber610 = T extends number ? true : false; +type TypeName610 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames610 = { + [K in keyof BigRecord610]: TypeName610; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb610 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource610 = "user" | "post" | "comment" | "tag" | "category"; +type Action610 = `${Verb610}_${Resource610}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise610 = T extends Promise ? UnwrapPromise610 : T; +type UnwrapArray610 = T extends (infer U)[] ? UnwrapArray610 : T; +type Head610 = T extends [infer H, ...infer _] ? H : never; +type Tail610 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation610 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation610>] + : never; + +type SmallUnion610 = "a" | "b" | "c" | "d"; +type AllPerms610 = Permutation610; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig610, + Flat610, + FR610, + BigUnion610, + ExtractAlpha610, + ExcludeZulu610, + OptionalAll610, + RequiredAll610, + ReadonlyAll610, + NullableAll610, + TypeNames610, + Action610, + AllPerms610, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts new file mode 100644 index 00000000..719eb81c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-11 (seed 611) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord611 { + a611: { x: number; y: string; z: boolean }; + b611: { p: string[]; q: Record }; + c611: { nested: { deep: { deeper: { deepest: string } } } }; + d611: number; + e611: string; + f611: boolean; + g611: null; + h611: undefined; + i611: bigint; + j611: symbol; +} + +type PartialBig611 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten611 = T extends Array ? Flatten611 : T; +type Nested611 = number[][][][][][][][][][]; +type Flat611 = Flatten611; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly611 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly611 : T[K]; +}; +type DeepRequired611 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired611 : T[K]; +}; +type FR611 = DeepReadonly611>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion611 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha611 = Extract; +type ExcludeZulu611 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA611 { width: number; height: number; depth: number } +interface ShapeB611 { color: string; opacity: number; blend: string } +interface ShapeC611 { x: number; y: number; z: number; w: number } +interface ShapeD611 { label: string; title: string; summary: string } + +type Combined611 = ShapeA611 & ShapeB611 & ShapeC611 & ShapeD611; +type OptionalAll611 = { [K in keyof Combined611]?: Combined611[K] }; +type RequiredAll611 = { [K in keyof Combined611]-?: Combined611[K] }; +type ReadonlyAll611 = { readonly [K in keyof Combined611]: Combined611[K] }; +type NullableAll611 = { [K in keyof Combined611]: Combined611[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString611 = T extends string ? true : false; +type IsNumber611 = T extends number ? true : false; +type TypeName611 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames611 = { + [K in keyof BigRecord611]: TypeName611; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb611 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource611 = "user" | "post" | "comment" | "tag" | "category"; +type Action611 = `${Verb611}_${Resource611}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise611 = T extends Promise ? UnwrapPromise611 : T; +type UnwrapArray611 = T extends (infer U)[] ? UnwrapArray611 : T; +type Head611 = T extends [infer H, ...infer _] ? H : never; +type Tail611 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation611 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation611>] + : never; + +type SmallUnion611 = "a" | "b" | "c" | "d"; +type AllPerms611 = Permutation611; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig611, + Flat611, + FR611, + BigUnion611, + ExtractAlpha611, + ExcludeZulu611, + OptionalAll611, + RequiredAll611, + ReadonlyAll611, + NullableAll611, + TypeNames611, + Action611, + AllPerms611, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts new file mode 100644 index 00000000..6384182e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-12 (seed 612) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord612 { + a612: { x: number; y: string; z: boolean }; + b612: { p: string[]; q: Record }; + c612: { nested: { deep: { deeper: { deepest: string } } } }; + d612: number; + e612: string; + f612: boolean; + g612: null; + h612: undefined; + i612: bigint; + j612: symbol; +} + +type PartialBig612 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten612 = T extends Array ? Flatten612 : T; +type Nested612 = number[][][][][][][][][][]; +type Flat612 = Flatten612; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly612 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly612 : T[K]; +}; +type DeepRequired612 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired612 : T[K]; +}; +type FR612 = DeepReadonly612>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion612 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha612 = Extract; +type ExcludeZulu612 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA612 { width: number; height: number; depth: number } +interface ShapeB612 { color: string; opacity: number; blend: string } +interface ShapeC612 { x: number; y: number; z: number; w: number } +interface ShapeD612 { label: string; title: string; summary: string } + +type Combined612 = ShapeA612 & ShapeB612 & ShapeC612 & ShapeD612; +type OptionalAll612 = { [K in keyof Combined612]?: Combined612[K] }; +type RequiredAll612 = { [K in keyof Combined612]-?: Combined612[K] }; +type ReadonlyAll612 = { readonly [K in keyof Combined612]: Combined612[K] }; +type NullableAll612 = { [K in keyof Combined612]: Combined612[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString612 = T extends string ? true : false; +type IsNumber612 = T extends number ? true : false; +type TypeName612 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames612 = { + [K in keyof BigRecord612]: TypeName612; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb612 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource612 = "user" | "post" | "comment" | "tag" | "category"; +type Action612 = `${Verb612}_${Resource612}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise612 = T extends Promise ? UnwrapPromise612 : T; +type UnwrapArray612 = T extends (infer U)[] ? UnwrapArray612 : T; +type Head612 = T extends [infer H, ...infer _] ? H : never; +type Tail612 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation612 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation612>] + : never; + +type SmallUnion612 = "a" | "b" | "c" | "d"; +type AllPerms612 = Permutation612; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig612, + Flat612, + FR612, + BigUnion612, + ExtractAlpha612, + ExcludeZulu612, + OptionalAll612, + RequiredAll612, + ReadonlyAll612, + NullableAll612, + TypeNames612, + Action612, + AllPerms612, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts new file mode 100644 index 00000000..57b53d47 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-13 (seed 613) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord613 { + a613: { x: number; y: string; z: boolean }; + b613: { p: string[]; q: Record }; + c613: { nested: { deep: { deeper: { deepest: string } } } }; + d613: number; + e613: string; + f613: boolean; + g613: null; + h613: undefined; + i613: bigint; + j613: symbol; +} + +type PartialBig613 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten613 = T extends Array ? Flatten613 : T; +type Nested613 = number[][][][][][][][][][]; +type Flat613 = Flatten613; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly613 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly613 : T[K]; +}; +type DeepRequired613 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired613 : T[K]; +}; +type FR613 = DeepReadonly613>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion613 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha613 = Extract; +type ExcludeZulu613 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA613 { width: number; height: number; depth: number } +interface ShapeB613 { color: string; opacity: number; blend: string } +interface ShapeC613 { x: number; y: number; z: number; w: number } +interface ShapeD613 { label: string; title: string; summary: string } + +type Combined613 = ShapeA613 & ShapeB613 & ShapeC613 & ShapeD613; +type OptionalAll613 = { [K in keyof Combined613]?: Combined613[K] }; +type RequiredAll613 = { [K in keyof Combined613]-?: Combined613[K] }; +type ReadonlyAll613 = { readonly [K in keyof Combined613]: Combined613[K] }; +type NullableAll613 = { [K in keyof Combined613]: Combined613[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString613 = T extends string ? true : false; +type IsNumber613 = T extends number ? true : false; +type TypeName613 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames613 = { + [K in keyof BigRecord613]: TypeName613; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb613 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource613 = "user" | "post" | "comment" | "tag" | "category"; +type Action613 = `${Verb613}_${Resource613}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise613 = T extends Promise ? UnwrapPromise613 : T; +type UnwrapArray613 = T extends (infer U)[] ? UnwrapArray613 : T; +type Head613 = T extends [infer H, ...infer _] ? H : never; +type Tail613 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation613 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation613>] + : never; + +type SmallUnion613 = "a" | "b" | "c" | "d"; +type AllPerms613 = Permutation613; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig613, + Flat613, + FR613, + BigUnion613, + ExtractAlpha613, + ExcludeZulu613, + OptionalAll613, + RequiredAll613, + ReadonlyAll613, + NullableAll613, + TypeNames613, + Action613, + AllPerms613, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts new file mode 100644 index 00000000..175642a5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-14 (seed 614) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord614 { + a614: { x: number; y: string; z: boolean }; + b614: { p: string[]; q: Record }; + c614: { nested: { deep: { deeper: { deepest: string } } } }; + d614: number; + e614: string; + f614: boolean; + g614: null; + h614: undefined; + i614: bigint; + j614: symbol; +} + +type PartialBig614 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten614 = T extends Array ? Flatten614 : T; +type Nested614 = number[][][][][][][][][][]; +type Flat614 = Flatten614; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly614 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly614 : T[K]; +}; +type DeepRequired614 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired614 : T[K]; +}; +type FR614 = DeepReadonly614>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion614 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha614 = Extract; +type ExcludeZulu614 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA614 { width: number; height: number; depth: number } +interface ShapeB614 { color: string; opacity: number; blend: string } +interface ShapeC614 { x: number; y: number; z: number; w: number } +interface ShapeD614 { label: string; title: string; summary: string } + +type Combined614 = ShapeA614 & ShapeB614 & ShapeC614 & ShapeD614; +type OptionalAll614 = { [K in keyof Combined614]?: Combined614[K] }; +type RequiredAll614 = { [K in keyof Combined614]-?: Combined614[K] }; +type ReadonlyAll614 = { readonly [K in keyof Combined614]: Combined614[K] }; +type NullableAll614 = { [K in keyof Combined614]: Combined614[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString614 = T extends string ? true : false; +type IsNumber614 = T extends number ? true : false; +type TypeName614 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames614 = { + [K in keyof BigRecord614]: TypeName614; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb614 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource614 = "user" | "post" | "comment" | "tag" | "category"; +type Action614 = `${Verb614}_${Resource614}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise614 = T extends Promise ? UnwrapPromise614 : T; +type UnwrapArray614 = T extends (infer U)[] ? UnwrapArray614 : T; +type Head614 = T extends [infer H, ...infer _] ? H : never; +type Tail614 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation614 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation614>] + : never; + +type SmallUnion614 = "a" | "b" | "c" | "d"; +type AllPerms614 = Permutation614; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig614, + Flat614, + FR614, + BigUnion614, + ExtractAlpha614, + ExcludeZulu614, + OptionalAll614, + RequiredAll614, + ReadonlyAll614, + NullableAll614, + TypeNames614, + Action614, + AllPerms614, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts new file mode 100644 index 00000000..f8fa7eda --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-15 (seed 615) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord615 { + a615: { x: number; y: string; z: boolean }; + b615: { p: string[]; q: Record }; + c615: { nested: { deep: { deeper: { deepest: string } } } }; + d615: number; + e615: string; + f615: boolean; + g615: null; + h615: undefined; + i615: bigint; + j615: symbol; +} + +type PartialBig615 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten615 = T extends Array ? Flatten615 : T; +type Nested615 = number[][][][][][][][][][]; +type Flat615 = Flatten615; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly615 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly615 : T[K]; +}; +type DeepRequired615 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired615 : T[K]; +}; +type FR615 = DeepReadonly615>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion615 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha615 = Extract; +type ExcludeZulu615 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA615 { width: number; height: number; depth: number } +interface ShapeB615 { color: string; opacity: number; blend: string } +interface ShapeC615 { x: number; y: number; z: number; w: number } +interface ShapeD615 { label: string; title: string; summary: string } + +type Combined615 = ShapeA615 & ShapeB615 & ShapeC615 & ShapeD615; +type OptionalAll615 = { [K in keyof Combined615]?: Combined615[K] }; +type RequiredAll615 = { [K in keyof Combined615]-?: Combined615[K] }; +type ReadonlyAll615 = { readonly [K in keyof Combined615]: Combined615[K] }; +type NullableAll615 = { [K in keyof Combined615]: Combined615[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString615 = T extends string ? true : false; +type IsNumber615 = T extends number ? true : false; +type TypeName615 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames615 = { + [K in keyof BigRecord615]: TypeName615; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb615 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource615 = "user" | "post" | "comment" | "tag" | "category"; +type Action615 = `${Verb615}_${Resource615}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise615 = T extends Promise ? UnwrapPromise615 : T; +type UnwrapArray615 = T extends (infer U)[] ? UnwrapArray615 : T; +type Head615 = T extends [infer H, ...infer _] ? H : never; +type Tail615 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation615 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation615>] + : never; + +type SmallUnion615 = "a" | "b" | "c" | "d"; +type AllPerms615 = Permutation615; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig615, + Flat615, + FR615, + BigUnion615, + ExtractAlpha615, + ExcludeZulu615, + OptionalAll615, + RequiredAll615, + ReadonlyAll615, + NullableAll615, + TypeNames615, + Action615, + AllPerms615, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts new file mode 100644 index 00000000..eb4fb68a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-16 (seed 616) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord616 { + a616: { x: number; y: string; z: boolean }; + b616: { p: string[]; q: Record }; + c616: { nested: { deep: { deeper: { deepest: string } } } }; + d616: number; + e616: string; + f616: boolean; + g616: null; + h616: undefined; + i616: bigint; + j616: symbol; +} + +type PartialBig616 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten616 = T extends Array ? Flatten616 : T; +type Nested616 = number[][][][][][][][][][]; +type Flat616 = Flatten616; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly616 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly616 : T[K]; +}; +type DeepRequired616 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired616 : T[K]; +}; +type FR616 = DeepReadonly616>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion616 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha616 = Extract; +type ExcludeZulu616 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA616 { width: number; height: number; depth: number } +interface ShapeB616 { color: string; opacity: number; blend: string } +interface ShapeC616 { x: number; y: number; z: number; w: number } +interface ShapeD616 { label: string; title: string; summary: string } + +type Combined616 = ShapeA616 & ShapeB616 & ShapeC616 & ShapeD616; +type OptionalAll616 = { [K in keyof Combined616]?: Combined616[K] }; +type RequiredAll616 = { [K in keyof Combined616]-?: Combined616[K] }; +type ReadonlyAll616 = { readonly [K in keyof Combined616]: Combined616[K] }; +type NullableAll616 = { [K in keyof Combined616]: Combined616[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString616 = T extends string ? true : false; +type IsNumber616 = T extends number ? true : false; +type TypeName616 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames616 = { + [K in keyof BigRecord616]: TypeName616; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb616 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource616 = "user" | "post" | "comment" | "tag" | "category"; +type Action616 = `${Verb616}_${Resource616}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise616 = T extends Promise ? UnwrapPromise616 : T; +type UnwrapArray616 = T extends (infer U)[] ? UnwrapArray616 : T; +type Head616 = T extends [infer H, ...infer _] ? H : never; +type Tail616 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation616 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation616>] + : never; + +type SmallUnion616 = "a" | "b" | "c" | "d"; +type AllPerms616 = Permutation616; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig616, + Flat616, + FR616, + BigUnion616, + ExtractAlpha616, + ExcludeZulu616, + OptionalAll616, + RequiredAll616, + ReadonlyAll616, + NullableAll616, + TypeNames616, + Action616, + AllPerms616, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts new file mode 100644 index 00000000..1c54b36f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-17 (seed 617) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord617 { + a617: { x: number; y: string; z: boolean }; + b617: { p: string[]; q: Record }; + c617: { nested: { deep: { deeper: { deepest: string } } } }; + d617: number; + e617: string; + f617: boolean; + g617: null; + h617: undefined; + i617: bigint; + j617: symbol; +} + +type PartialBig617 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten617 = T extends Array ? Flatten617 : T; +type Nested617 = number[][][][][][][][][][]; +type Flat617 = Flatten617; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly617 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly617 : T[K]; +}; +type DeepRequired617 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired617 : T[K]; +}; +type FR617 = DeepReadonly617>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion617 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha617 = Extract; +type ExcludeZulu617 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA617 { width: number; height: number; depth: number } +interface ShapeB617 { color: string; opacity: number; blend: string } +interface ShapeC617 { x: number; y: number; z: number; w: number } +interface ShapeD617 { label: string; title: string; summary: string } + +type Combined617 = ShapeA617 & ShapeB617 & ShapeC617 & ShapeD617; +type OptionalAll617 = { [K in keyof Combined617]?: Combined617[K] }; +type RequiredAll617 = { [K in keyof Combined617]-?: Combined617[K] }; +type ReadonlyAll617 = { readonly [K in keyof Combined617]: Combined617[K] }; +type NullableAll617 = { [K in keyof Combined617]: Combined617[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString617 = T extends string ? true : false; +type IsNumber617 = T extends number ? true : false; +type TypeName617 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames617 = { + [K in keyof BigRecord617]: TypeName617; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb617 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource617 = "user" | "post" | "comment" | "tag" | "category"; +type Action617 = `${Verb617}_${Resource617}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise617 = T extends Promise ? UnwrapPromise617 : T; +type UnwrapArray617 = T extends (infer U)[] ? UnwrapArray617 : T; +type Head617 = T extends [infer H, ...infer _] ? H : never; +type Tail617 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation617 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation617>] + : never; + +type SmallUnion617 = "a" | "b" | "c" | "d"; +type AllPerms617 = Permutation617; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig617, + Flat617, + FR617, + BigUnion617, + ExtractAlpha617, + ExcludeZulu617, + OptionalAll617, + RequiredAll617, + ReadonlyAll617, + NullableAll617, + TypeNames617, + Action617, + AllPerms617, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts new file mode 100644 index 00000000..8cc7a7a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-18 (seed 618) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord618 { + a618: { x: number; y: string; z: boolean }; + b618: { p: string[]; q: Record }; + c618: { nested: { deep: { deeper: { deepest: string } } } }; + d618: number; + e618: string; + f618: boolean; + g618: null; + h618: undefined; + i618: bigint; + j618: symbol; +} + +type PartialBig618 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten618 = T extends Array ? Flatten618 : T; +type Nested618 = number[][][][][][][][][][]; +type Flat618 = Flatten618; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly618 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly618 : T[K]; +}; +type DeepRequired618 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired618 : T[K]; +}; +type FR618 = DeepReadonly618>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion618 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha618 = Extract; +type ExcludeZulu618 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA618 { width: number; height: number; depth: number } +interface ShapeB618 { color: string; opacity: number; blend: string } +interface ShapeC618 { x: number; y: number; z: number; w: number } +interface ShapeD618 { label: string; title: string; summary: string } + +type Combined618 = ShapeA618 & ShapeB618 & ShapeC618 & ShapeD618; +type OptionalAll618 = { [K in keyof Combined618]?: Combined618[K] }; +type RequiredAll618 = { [K in keyof Combined618]-?: Combined618[K] }; +type ReadonlyAll618 = { readonly [K in keyof Combined618]: Combined618[K] }; +type NullableAll618 = { [K in keyof Combined618]: Combined618[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString618 = T extends string ? true : false; +type IsNumber618 = T extends number ? true : false; +type TypeName618 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames618 = { + [K in keyof BigRecord618]: TypeName618; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb618 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource618 = "user" | "post" | "comment" | "tag" | "category"; +type Action618 = `${Verb618}_${Resource618}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise618 = T extends Promise ? UnwrapPromise618 : T; +type UnwrapArray618 = T extends (infer U)[] ? UnwrapArray618 : T; +type Head618 = T extends [infer H, ...infer _] ? H : never; +type Tail618 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation618 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation618>] + : never; + +type SmallUnion618 = "a" | "b" | "c" | "d"; +type AllPerms618 = Permutation618; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig618, + Flat618, + FR618, + BigUnion618, + ExtractAlpha618, + ExcludeZulu618, + OptionalAll618, + RequiredAll618, + ReadonlyAll618, + NullableAll618, + TypeNames618, + Action618, + AllPerms618, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts new file mode 100644 index 00000000..45961e36 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-19 (seed 619) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord619 { + a619: { x: number; y: string; z: boolean }; + b619: { p: string[]; q: Record }; + c619: { nested: { deep: { deeper: { deepest: string } } } }; + d619: number; + e619: string; + f619: boolean; + g619: null; + h619: undefined; + i619: bigint; + j619: symbol; +} + +type PartialBig619 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten619 = T extends Array ? Flatten619 : T; +type Nested619 = number[][][][][][][][][][]; +type Flat619 = Flatten619; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly619 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly619 : T[K]; +}; +type DeepRequired619 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired619 : T[K]; +}; +type FR619 = DeepReadonly619>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion619 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha619 = Extract; +type ExcludeZulu619 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA619 { width: number; height: number; depth: number } +interface ShapeB619 { color: string; opacity: number; blend: string } +interface ShapeC619 { x: number; y: number; z: number; w: number } +interface ShapeD619 { label: string; title: string; summary: string } + +type Combined619 = ShapeA619 & ShapeB619 & ShapeC619 & ShapeD619; +type OptionalAll619 = { [K in keyof Combined619]?: Combined619[K] }; +type RequiredAll619 = { [K in keyof Combined619]-?: Combined619[K] }; +type ReadonlyAll619 = { readonly [K in keyof Combined619]: Combined619[K] }; +type NullableAll619 = { [K in keyof Combined619]: Combined619[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString619 = T extends string ? true : false; +type IsNumber619 = T extends number ? true : false; +type TypeName619 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames619 = { + [K in keyof BigRecord619]: TypeName619; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb619 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource619 = "user" | "post" | "comment" | "tag" | "category"; +type Action619 = `${Verb619}_${Resource619}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise619 = T extends Promise ? UnwrapPromise619 : T; +type UnwrapArray619 = T extends (infer U)[] ? UnwrapArray619 : T; +type Head619 = T extends [infer H, ...infer _] ? H : never; +type Tail619 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation619 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation619>] + : never; + +type SmallUnion619 = "a" | "b" | "c" | "d"; +type AllPerms619 = Permutation619; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig619, + Flat619, + FR619, + BigUnion619, + ExtractAlpha619, + ExcludeZulu619, + OptionalAll619, + RequiredAll619, + ReadonlyAll619, + NullableAll619, + TypeNames619, + Action619, + AllPerms619, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts new file mode 100644 index 00000000..028286d4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-20 (seed 620) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord620 { + a620: { x: number; y: string; z: boolean }; + b620: { p: string[]; q: Record }; + c620: { nested: { deep: { deeper: { deepest: string } } } }; + d620: number; + e620: string; + f620: boolean; + g620: null; + h620: undefined; + i620: bigint; + j620: symbol; +} + +type PartialBig620 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten620 = T extends Array ? Flatten620 : T; +type Nested620 = number[][][][][][][][][][]; +type Flat620 = Flatten620; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly620 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly620 : T[K]; +}; +type DeepRequired620 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired620 : T[K]; +}; +type FR620 = DeepReadonly620>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion620 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha620 = Extract; +type ExcludeZulu620 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA620 { width: number; height: number; depth: number } +interface ShapeB620 { color: string; opacity: number; blend: string } +interface ShapeC620 { x: number; y: number; z: number; w: number } +interface ShapeD620 { label: string; title: string; summary: string } + +type Combined620 = ShapeA620 & ShapeB620 & ShapeC620 & ShapeD620; +type OptionalAll620 = { [K in keyof Combined620]?: Combined620[K] }; +type RequiredAll620 = { [K in keyof Combined620]-?: Combined620[K] }; +type ReadonlyAll620 = { readonly [K in keyof Combined620]: Combined620[K] }; +type NullableAll620 = { [K in keyof Combined620]: Combined620[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString620 = T extends string ? true : false; +type IsNumber620 = T extends number ? true : false; +type TypeName620 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames620 = { + [K in keyof BigRecord620]: TypeName620; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb620 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource620 = "user" | "post" | "comment" | "tag" | "category"; +type Action620 = `${Verb620}_${Resource620}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise620 = T extends Promise ? UnwrapPromise620 : T; +type UnwrapArray620 = T extends (infer U)[] ? UnwrapArray620 : T; +type Head620 = T extends [infer H, ...infer _] ? H : never; +type Tail620 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation620 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation620>] + : never; + +type SmallUnion620 = "a" | "b" | "c" | "d"; +type AllPerms620 = Permutation620; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig620, + Flat620, + FR620, + BigUnion620, + ExtractAlpha620, + ExcludeZulu620, + OptionalAll620, + RequiredAll620, + ReadonlyAll620, + NullableAll620, + TypeNames620, + Action620, + AllPerms620, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts new file mode 100644 index 00000000..4fb08024 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-21 (seed 621) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord621 { + a621: { x: number; y: string; z: boolean }; + b621: { p: string[]; q: Record }; + c621: { nested: { deep: { deeper: { deepest: string } } } }; + d621: number; + e621: string; + f621: boolean; + g621: null; + h621: undefined; + i621: bigint; + j621: symbol; +} + +type PartialBig621 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten621 = T extends Array ? Flatten621 : T; +type Nested621 = number[][][][][][][][][][]; +type Flat621 = Flatten621; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly621 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly621 : T[K]; +}; +type DeepRequired621 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired621 : T[K]; +}; +type FR621 = DeepReadonly621>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion621 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha621 = Extract; +type ExcludeZulu621 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA621 { width: number; height: number; depth: number } +interface ShapeB621 { color: string; opacity: number; blend: string } +interface ShapeC621 { x: number; y: number; z: number; w: number } +interface ShapeD621 { label: string; title: string; summary: string } + +type Combined621 = ShapeA621 & ShapeB621 & ShapeC621 & ShapeD621; +type OptionalAll621 = { [K in keyof Combined621]?: Combined621[K] }; +type RequiredAll621 = { [K in keyof Combined621]-?: Combined621[K] }; +type ReadonlyAll621 = { readonly [K in keyof Combined621]: Combined621[K] }; +type NullableAll621 = { [K in keyof Combined621]: Combined621[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString621 = T extends string ? true : false; +type IsNumber621 = T extends number ? true : false; +type TypeName621 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames621 = { + [K in keyof BigRecord621]: TypeName621; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb621 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource621 = "user" | "post" | "comment" | "tag" | "category"; +type Action621 = `${Verb621}_${Resource621}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise621 = T extends Promise ? UnwrapPromise621 : T; +type UnwrapArray621 = T extends (infer U)[] ? UnwrapArray621 : T; +type Head621 = T extends [infer H, ...infer _] ? H : never; +type Tail621 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation621 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation621>] + : never; + +type SmallUnion621 = "a" | "b" | "c" | "d"; +type AllPerms621 = Permutation621; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig621, + Flat621, + FR621, + BigUnion621, + ExtractAlpha621, + ExcludeZulu621, + OptionalAll621, + RequiredAll621, + ReadonlyAll621, + NullableAll621, + TypeNames621, + Action621, + AllPerms621, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts new file mode 100644 index 00000000..37c19a22 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-22 (seed 622) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord622 { + a622: { x: number; y: string; z: boolean }; + b622: { p: string[]; q: Record }; + c622: { nested: { deep: { deeper: { deepest: string } } } }; + d622: number; + e622: string; + f622: boolean; + g622: null; + h622: undefined; + i622: bigint; + j622: symbol; +} + +type PartialBig622 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten622 = T extends Array ? Flatten622 : T; +type Nested622 = number[][][][][][][][][][]; +type Flat622 = Flatten622; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly622 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly622 : T[K]; +}; +type DeepRequired622 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired622 : T[K]; +}; +type FR622 = DeepReadonly622>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion622 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha622 = Extract; +type ExcludeZulu622 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA622 { width: number; height: number; depth: number } +interface ShapeB622 { color: string; opacity: number; blend: string } +interface ShapeC622 { x: number; y: number; z: number; w: number } +interface ShapeD622 { label: string; title: string; summary: string } + +type Combined622 = ShapeA622 & ShapeB622 & ShapeC622 & ShapeD622; +type OptionalAll622 = { [K in keyof Combined622]?: Combined622[K] }; +type RequiredAll622 = { [K in keyof Combined622]-?: Combined622[K] }; +type ReadonlyAll622 = { readonly [K in keyof Combined622]: Combined622[K] }; +type NullableAll622 = { [K in keyof Combined622]: Combined622[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString622 = T extends string ? true : false; +type IsNumber622 = T extends number ? true : false; +type TypeName622 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames622 = { + [K in keyof BigRecord622]: TypeName622; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb622 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource622 = "user" | "post" | "comment" | "tag" | "category"; +type Action622 = `${Verb622}_${Resource622}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise622 = T extends Promise ? UnwrapPromise622 : T; +type UnwrapArray622 = T extends (infer U)[] ? UnwrapArray622 : T; +type Head622 = T extends [infer H, ...infer _] ? H : never; +type Tail622 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation622 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation622>] + : never; + +type SmallUnion622 = "a" | "b" | "c" | "d"; +type AllPerms622 = Permutation622; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig622, + Flat622, + FR622, + BigUnion622, + ExtractAlpha622, + ExcludeZulu622, + OptionalAll622, + RequiredAll622, + ReadonlyAll622, + NullableAll622, + TypeNames622, + Action622, + AllPerms622, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts new file mode 100644 index 00000000..5eb2e6cc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-23 (seed 623) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord623 { + a623: { x: number; y: string; z: boolean }; + b623: { p: string[]; q: Record }; + c623: { nested: { deep: { deeper: { deepest: string } } } }; + d623: number; + e623: string; + f623: boolean; + g623: null; + h623: undefined; + i623: bigint; + j623: symbol; +} + +type PartialBig623 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten623 = T extends Array ? Flatten623 : T; +type Nested623 = number[][][][][][][][][][]; +type Flat623 = Flatten623; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly623 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly623 : T[K]; +}; +type DeepRequired623 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired623 : T[K]; +}; +type FR623 = DeepReadonly623>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion623 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha623 = Extract; +type ExcludeZulu623 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA623 { width: number; height: number; depth: number } +interface ShapeB623 { color: string; opacity: number; blend: string } +interface ShapeC623 { x: number; y: number; z: number; w: number } +interface ShapeD623 { label: string; title: string; summary: string } + +type Combined623 = ShapeA623 & ShapeB623 & ShapeC623 & ShapeD623; +type OptionalAll623 = { [K in keyof Combined623]?: Combined623[K] }; +type RequiredAll623 = { [K in keyof Combined623]-?: Combined623[K] }; +type ReadonlyAll623 = { readonly [K in keyof Combined623]: Combined623[K] }; +type NullableAll623 = { [K in keyof Combined623]: Combined623[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString623 = T extends string ? true : false; +type IsNumber623 = T extends number ? true : false; +type TypeName623 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames623 = { + [K in keyof BigRecord623]: TypeName623; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb623 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource623 = "user" | "post" | "comment" | "tag" | "category"; +type Action623 = `${Verb623}_${Resource623}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise623 = T extends Promise ? UnwrapPromise623 : T; +type UnwrapArray623 = T extends (infer U)[] ? UnwrapArray623 : T; +type Head623 = T extends [infer H, ...infer _] ? H : never; +type Tail623 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation623 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation623>] + : never; + +type SmallUnion623 = "a" | "b" | "c" | "d"; +type AllPerms623 = Permutation623; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig623, + Flat623, + FR623, + BigUnion623, + ExtractAlpha623, + ExcludeZulu623, + OptionalAll623, + RequiredAll623, + ReadonlyAll623, + NullableAll623, + TypeNames623, + Action623, + AllPerms623, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts new file mode 100644 index 00000000..9750304b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-24 (seed 624) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord624 { + a624: { x: number; y: string; z: boolean }; + b624: { p: string[]; q: Record }; + c624: { nested: { deep: { deeper: { deepest: string } } } }; + d624: number; + e624: string; + f624: boolean; + g624: null; + h624: undefined; + i624: bigint; + j624: symbol; +} + +type PartialBig624 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten624 = T extends Array ? Flatten624 : T; +type Nested624 = number[][][][][][][][][][]; +type Flat624 = Flatten624; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly624 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly624 : T[K]; +}; +type DeepRequired624 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired624 : T[K]; +}; +type FR624 = DeepReadonly624>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion624 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha624 = Extract; +type ExcludeZulu624 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA624 { width: number; height: number; depth: number } +interface ShapeB624 { color: string; opacity: number; blend: string } +interface ShapeC624 { x: number; y: number; z: number; w: number } +interface ShapeD624 { label: string; title: string; summary: string } + +type Combined624 = ShapeA624 & ShapeB624 & ShapeC624 & ShapeD624; +type OptionalAll624 = { [K in keyof Combined624]?: Combined624[K] }; +type RequiredAll624 = { [K in keyof Combined624]-?: Combined624[K] }; +type ReadonlyAll624 = { readonly [K in keyof Combined624]: Combined624[K] }; +type NullableAll624 = { [K in keyof Combined624]: Combined624[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString624 = T extends string ? true : false; +type IsNumber624 = T extends number ? true : false; +type TypeName624 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames624 = { + [K in keyof BigRecord624]: TypeName624; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb624 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource624 = "user" | "post" | "comment" | "tag" | "category"; +type Action624 = `${Verb624}_${Resource624}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise624 = T extends Promise ? UnwrapPromise624 : T; +type UnwrapArray624 = T extends (infer U)[] ? UnwrapArray624 : T; +type Head624 = T extends [infer H, ...infer _] ? H : never; +type Tail624 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation624 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation624>] + : never; + +type SmallUnion624 = "a" | "b" | "c" | "d"; +type AllPerms624 = Permutation624; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig624, + Flat624, + FR624, + BigUnion624, + ExtractAlpha624, + ExcludeZulu624, + OptionalAll624, + RequiredAll624, + ReadonlyAll624, + NullableAll624, + TypeNames624, + Action624, + AllPerms624, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts new file mode 100644 index 00000000..b8d88c59 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-25 (seed 625) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord625 { + a625: { x: number; y: string; z: boolean }; + b625: { p: string[]; q: Record }; + c625: { nested: { deep: { deeper: { deepest: string } } } }; + d625: number; + e625: string; + f625: boolean; + g625: null; + h625: undefined; + i625: bigint; + j625: symbol; +} + +type PartialBig625 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten625 = T extends Array ? Flatten625 : T; +type Nested625 = number[][][][][][][][][][]; +type Flat625 = Flatten625; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly625 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly625 : T[K]; +}; +type DeepRequired625 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired625 : T[K]; +}; +type FR625 = DeepReadonly625>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion625 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha625 = Extract; +type ExcludeZulu625 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA625 { width: number; height: number; depth: number } +interface ShapeB625 { color: string; opacity: number; blend: string } +interface ShapeC625 { x: number; y: number; z: number; w: number } +interface ShapeD625 { label: string; title: string; summary: string } + +type Combined625 = ShapeA625 & ShapeB625 & ShapeC625 & ShapeD625; +type OptionalAll625 = { [K in keyof Combined625]?: Combined625[K] }; +type RequiredAll625 = { [K in keyof Combined625]-?: Combined625[K] }; +type ReadonlyAll625 = { readonly [K in keyof Combined625]: Combined625[K] }; +type NullableAll625 = { [K in keyof Combined625]: Combined625[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString625 = T extends string ? true : false; +type IsNumber625 = T extends number ? true : false; +type TypeName625 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames625 = { + [K in keyof BigRecord625]: TypeName625; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb625 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource625 = "user" | "post" | "comment" | "tag" | "category"; +type Action625 = `${Verb625}_${Resource625}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise625 = T extends Promise ? UnwrapPromise625 : T; +type UnwrapArray625 = T extends (infer U)[] ? UnwrapArray625 : T; +type Head625 = T extends [infer H, ...infer _] ? H : never; +type Tail625 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation625 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation625>] + : never; + +type SmallUnion625 = "a" | "b" | "c" | "d"; +type AllPerms625 = Permutation625; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig625, + Flat625, + FR625, + BigUnion625, + ExtractAlpha625, + ExcludeZulu625, + OptionalAll625, + RequiredAll625, + ReadonlyAll625, + NullableAll625, + TypeNames625, + Action625, + AllPerms625, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts new file mode 100644 index 00000000..77e888e5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-26 (seed 626) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord626 { + a626: { x: number; y: string; z: boolean }; + b626: { p: string[]; q: Record }; + c626: { nested: { deep: { deeper: { deepest: string } } } }; + d626: number; + e626: string; + f626: boolean; + g626: null; + h626: undefined; + i626: bigint; + j626: symbol; +} + +type PartialBig626 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten626 = T extends Array ? Flatten626 : T; +type Nested626 = number[][][][][][][][][][]; +type Flat626 = Flatten626; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly626 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly626 : T[K]; +}; +type DeepRequired626 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired626 : T[K]; +}; +type FR626 = DeepReadonly626>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion626 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha626 = Extract; +type ExcludeZulu626 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA626 { width: number; height: number; depth: number } +interface ShapeB626 { color: string; opacity: number; blend: string } +interface ShapeC626 { x: number; y: number; z: number; w: number } +interface ShapeD626 { label: string; title: string; summary: string } + +type Combined626 = ShapeA626 & ShapeB626 & ShapeC626 & ShapeD626; +type OptionalAll626 = { [K in keyof Combined626]?: Combined626[K] }; +type RequiredAll626 = { [K in keyof Combined626]-?: Combined626[K] }; +type ReadonlyAll626 = { readonly [K in keyof Combined626]: Combined626[K] }; +type NullableAll626 = { [K in keyof Combined626]: Combined626[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString626 = T extends string ? true : false; +type IsNumber626 = T extends number ? true : false; +type TypeName626 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames626 = { + [K in keyof BigRecord626]: TypeName626; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb626 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource626 = "user" | "post" | "comment" | "tag" | "category"; +type Action626 = `${Verb626}_${Resource626}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise626 = T extends Promise ? UnwrapPromise626 : T; +type UnwrapArray626 = T extends (infer U)[] ? UnwrapArray626 : T; +type Head626 = T extends [infer H, ...infer _] ? H : never; +type Tail626 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation626 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation626>] + : never; + +type SmallUnion626 = "a" | "b" | "c" | "d"; +type AllPerms626 = Permutation626; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig626, + Flat626, + FR626, + BigUnion626, + ExtractAlpha626, + ExcludeZulu626, + OptionalAll626, + RequiredAll626, + ReadonlyAll626, + NullableAll626, + TypeNames626, + Action626, + AllPerms626, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts new file mode 100644 index 00000000..54d01acb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-27 (seed 627) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord627 { + a627: { x: number; y: string; z: boolean }; + b627: { p: string[]; q: Record }; + c627: { nested: { deep: { deeper: { deepest: string } } } }; + d627: number; + e627: string; + f627: boolean; + g627: null; + h627: undefined; + i627: bigint; + j627: symbol; +} + +type PartialBig627 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten627 = T extends Array ? Flatten627 : T; +type Nested627 = number[][][][][][][][][][]; +type Flat627 = Flatten627; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly627 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly627 : T[K]; +}; +type DeepRequired627 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired627 : T[K]; +}; +type FR627 = DeepReadonly627>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion627 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha627 = Extract; +type ExcludeZulu627 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA627 { width: number; height: number; depth: number } +interface ShapeB627 { color: string; opacity: number; blend: string } +interface ShapeC627 { x: number; y: number; z: number; w: number } +interface ShapeD627 { label: string; title: string; summary: string } + +type Combined627 = ShapeA627 & ShapeB627 & ShapeC627 & ShapeD627; +type OptionalAll627 = { [K in keyof Combined627]?: Combined627[K] }; +type RequiredAll627 = { [K in keyof Combined627]-?: Combined627[K] }; +type ReadonlyAll627 = { readonly [K in keyof Combined627]: Combined627[K] }; +type NullableAll627 = { [K in keyof Combined627]: Combined627[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString627 = T extends string ? true : false; +type IsNumber627 = T extends number ? true : false; +type TypeName627 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames627 = { + [K in keyof BigRecord627]: TypeName627; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb627 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource627 = "user" | "post" | "comment" | "tag" | "category"; +type Action627 = `${Verb627}_${Resource627}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise627 = T extends Promise ? UnwrapPromise627 : T; +type UnwrapArray627 = T extends (infer U)[] ? UnwrapArray627 : T; +type Head627 = T extends [infer H, ...infer _] ? H : never; +type Tail627 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation627 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation627>] + : never; + +type SmallUnion627 = "a" | "b" | "c" | "d"; +type AllPerms627 = Permutation627; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig627, + Flat627, + FR627, + BigUnion627, + ExtractAlpha627, + ExcludeZulu627, + OptionalAll627, + RequiredAll627, + ReadonlyAll627, + NullableAll627, + TypeNames627, + Action627, + AllPerms627, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts new file mode 100644 index 00000000..8c109ce9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-28 (seed 628) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord628 { + a628: { x: number; y: string; z: boolean }; + b628: { p: string[]; q: Record }; + c628: { nested: { deep: { deeper: { deepest: string } } } }; + d628: number; + e628: string; + f628: boolean; + g628: null; + h628: undefined; + i628: bigint; + j628: symbol; +} + +type PartialBig628 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten628 = T extends Array ? Flatten628 : T; +type Nested628 = number[][][][][][][][][][]; +type Flat628 = Flatten628; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly628 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly628 : T[K]; +}; +type DeepRequired628 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired628 : T[K]; +}; +type FR628 = DeepReadonly628>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion628 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha628 = Extract; +type ExcludeZulu628 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA628 { width: number; height: number; depth: number } +interface ShapeB628 { color: string; opacity: number; blend: string } +interface ShapeC628 { x: number; y: number; z: number; w: number } +interface ShapeD628 { label: string; title: string; summary: string } + +type Combined628 = ShapeA628 & ShapeB628 & ShapeC628 & ShapeD628; +type OptionalAll628 = { [K in keyof Combined628]?: Combined628[K] }; +type RequiredAll628 = { [K in keyof Combined628]-?: Combined628[K] }; +type ReadonlyAll628 = { readonly [K in keyof Combined628]: Combined628[K] }; +type NullableAll628 = { [K in keyof Combined628]: Combined628[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString628 = T extends string ? true : false; +type IsNumber628 = T extends number ? true : false; +type TypeName628 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames628 = { + [K in keyof BigRecord628]: TypeName628; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb628 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource628 = "user" | "post" | "comment" | "tag" | "category"; +type Action628 = `${Verb628}_${Resource628}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise628 = T extends Promise ? UnwrapPromise628 : T; +type UnwrapArray628 = T extends (infer U)[] ? UnwrapArray628 : T; +type Head628 = T extends [infer H, ...infer _] ? H : never; +type Tail628 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation628 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation628>] + : never; + +type SmallUnion628 = "a" | "b" | "c" | "d"; +type AllPerms628 = Permutation628; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig628, + Flat628, + FR628, + BigUnion628, + ExtractAlpha628, + ExcludeZulu628, + OptionalAll628, + RequiredAll628, + ReadonlyAll628, + NullableAll628, + TypeNames628, + Action628, + AllPerms628, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts new file mode 100644 index 00000000..ead2f896 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-29 (seed 629) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord629 { + a629: { x: number; y: string; z: boolean }; + b629: { p: string[]; q: Record }; + c629: { nested: { deep: { deeper: { deepest: string } } } }; + d629: number; + e629: string; + f629: boolean; + g629: null; + h629: undefined; + i629: bigint; + j629: symbol; +} + +type PartialBig629 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten629 = T extends Array ? Flatten629 : T; +type Nested629 = number[][][][][][][][][][]; +type Flat629 = Flatten629; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly629 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly629 : T[K]; +}; +type DeepRequired629 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired629 : T[K]; +}; +type FR629 = DeepReadonly629>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion629 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha629 = Extract; +type ExcludeZulu629 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA629 { width: number; height: number; depth: number } +interface ShapeB629 { color: string; opacity: number; blend: string } +interface ShapeC629 { x: number; y: number; z: number; w: number } +interface ShapeD629 { label: string; title: string; summary: string } + +type Combined629 = ShapeA629 & ShapeB629 & ShapeC629 & ShapeD629; +type OptionalAll629 = { [K in keyof Combined629]?: Combined629[K] }; +type RequiredAll629 = { [K in keyof Combined629]-?: Combined629[K] }; +type ReadonlyAll629 = { readonly [K in keyof Combined629]: Combined629[K] }; +type NullableAll629 = { [K in keyof Combined629]: Combined629[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString629 = T extends string ? true : false; +type IsNumber629 = T extends number ? true : false; +type TypeName629 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames629 = { + [K in keyof BigRecord629]: TypeName629; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb629 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource629 = "user" | "post" | "comment" | "tag" | "category"; +type Action629 = `${Verb629}_${Resource629}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise629 = T extends Promise ? UnwrapPromise629 : T; +type UnwrapArray629 = T extends (infer U)[] ? UnwrapArray629 : T; +type Head629 = T extends [infer H, ...infer _] ? H : never; +type Tail629 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation629 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation629>] + : never; + +type SmallUnion629 = "a" | "b" | "c" | "d"; +type AllPerms629 = Permutation629; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig629, + Flat629, + FR629, + BigUnion629, + ExtractAlpha629, + ExcludeZulu629, + OptionalAll629, + RequiredAll629, + ReadonlyAll629, + NullableAll629, + TypeNames629, + Action629, + AllPerms629, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts new file mode 100644 index 00000000..e73b52ea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-30 (seed 630) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord630 { + a630: { x: number; y: string; z: boolean }; + b630: { p: string[]; q: Record }; + c630: { nested: { deep: { deeper: { deepest: string } } } }; + d630: number; + e630: string; + f630: boolean; + g630: null; + h630: undefined; + i630: bigint; + j630: symbol; +} + +type PartialBig630 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten630 = T extends Array ? Flatten630 : T; +type Nested630 = number[][][][][][][][][][]; +type Flat630 = Flatten630; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly630 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly630 : T[K]; +}; +type DeepRequired630 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired630 : T[K]; +}; +type FR630 = DeepReadonly630>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion630 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha630 = Extract; +type ExcludeZulu630 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA630 { width: number; height: number; depth: number } +interface ShapeB630 { color: string; opacity: number; blend: string } +interface ShapeC630 { x: number; y: number; z: number; w: number } +interface ShapeD630 { label: string; title: string; summary: string } + +type Combined630 = ShapeA630 & ShapeB630 & ShapeC630 & ShapeD630; +type OptionalAll630 = { [K in keyof Combined630]?: Combined630[K] }; +type RequiredAll630 = { [K in keyof Combined630]-?: Combined630[K] }; +type ReadonlyAll630 = { readonly [K in keyof Combined630]: Combined630[K] }; +type NullableAll630 = { [K in keyof Combined630]: Combined630[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString630 = T extends string ? true : false; +type IsNumber630 = T extends number ? true : false; +type TypeName630 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames630 = { + [K in keyof BigRecord630]: TypeName630; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb630 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource630 = "user" | "post" | "comment" | "tag" | "category"; +type Action630 = `${Verb630}_${Resource630}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise630 = T extends Promise ? UnwrapPromise630 : T; +type UnwrapArray630 = T extends (infer U)[] ? UnwrapArray630 : T; +type Head630 = T extends [infer H, ...infer _] ? H : never; +type Tail630 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation630 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation630>] + : never; + +type SmallUnion630 = "a" | "b" | "c" | "d"; +type AllPerms630 = Permutation630; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig630, + Flat630, + FR630, + BigUnion630, + ExtractAlpha630, + ExcludeZulu630, + OptionalAll630, + RequiredAll630, + ReadonlyAll630, + NullableAll630, + TypeNames630, + Action630, + AllPerms630, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts new file mode 100644 index 00000000..a1e2962c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-31 (seed 631) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord631 { + a631: { x: number; y: string; z: boolean }; + b631: { p: string[]; q: Record }; + c631: { nested: { deep: { deeper: { deepest: string } } } }; + d631: number; + e631: string; + f631: boolean; + g631: null; + h631: undefined; + i631: bigint; + j631: symbol; +} + +type PartialBig631 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten631 = T extends Array ? Flatten631 : T; +type Nested631 = number[][][][][][][][][][]; +type Flat631 = Flatten631; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly631 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly631 : T[K]; +}; +type DeepRequired631 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired631 : T[K]; +}; +type FR631 = DeepReadonly631>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion631 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha631 = Extract; +type ExcludeZulu631 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA631 { width: number; height: number; depth: number } +interface ShapeB631 { color: string; opacity: number; blend: string } +interface ShapeC631 { x: number; y: number; z: number; w: number } +interface ShapeD631 { label: string; title: string; summary: string } + +type Combined631 = ShapeA631 & ShapeB631 & ShapeC631 & ShapeD631; +type OptionalAll631 = { [K in keyof Combined631]?: Combined631[K] }; +type RequiredAll631 = { [K in keyof Combined631]-?: Combined631[K] }; +type ReadonlyAll631 = { readonly [K in keyof Combined631]: Combined631[K] }; +type NullableAll631 = { [K in keyof Combined631]: Combined631[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString631 = T extends string ? true : false; +type IsNumber631 = T extends number ? true : false; +type TypeName631 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames631 = { + [K in keyof BigRecord631]: TypeName631; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb631 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource631 = "user" | "post" | "comment" | "tag" | "category"; +type Action631 = `${Verb631}_${Resource631}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise631 = T extends Promise ? UnwrapPromise631 : T; +type UnwrapArray631 = T extends (infer U)[] ? UnwrapArray631 : T; +type Head631 = T extends [infer H, ...infer _] ? H : never; +type Tail631 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation631 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation631>] + : never; + +type SmallUnion631 = "a" | "b" | "c" | "d"; +type AllPerms631 = Permutation631; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig631, + Flat631, + FR631, + BigUnion631, + ExtractAlpha631, + ExcludeZulu631, + OptionalAll631, + RequiredAll631, + ReadonlyAll631, + NullableAll631, + TypeNames631, + Action631, + AllPerms631, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts new file mode 100644 index 00000000..9dcc9db1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-32 (seed 632) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord632 { + a632: { x: number; y: string; z: boolean }; + b632: { p: string[]; q: Record }; + c632: { nested: { deep: { deeper: { deepest: string } } } }; + d632: number; + e632: string; + f632: boolean; + g632: null; + h632: undefined; + i632: bigint; + j632: symbol; +} + +type PartialBig632 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten632 = T extends Array ? Flatten632 : T; +type Nested632 = number[][][][][][][][][][]; +type Flat632 = Flatten632; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly632 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly632 : T[K]; +}; +type DeepRequired632 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired632 : T[K]; +}; +type FR632 = DeepReadonly632>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion632 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha632 = Extract; +type ExcludeZulu632 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA632 { width: number; height: number; depth: number } +interface ShapeB632 { color: string; opacity: number; blend: string } +interface ShapeC632 { x: number; y: number; z: number; w: number } +interface ShapeD632 { label: string; title: string; summary: string } + +type Combined632 = ShapeA632 & ShapeB632 & ShapeC632 & ShapeD632; +type OptionalAll632 = { [K in keyof Combined632]?: Combined632[K] }; +type RequiredAll632 = { [K in keyof Combined632]-?: Combined632[K] }; +type ReadonlyAll632 = { readonly [K in keyof Combined632]: Combined632[K] }; +type NullableAll632 = { [K in keyof Combined632]: Combined632[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString632 = T extends string ? true : false; +type IsNumber632 = T extends number ? true : false; +type TypeName632 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames632 = { + [K in keyof BigRecord632]: TypeName632; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb632 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource632 = "user" | "post" | "comment" | "tag" | "category"; +type Action632 = `${Verb632}_${Resource632}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise632 = T extends Promise ? UnwrapPromise632 : T; +type UnwrapArray632 = T extends (infer U)[] ? UnwrapArray632 : T; +type Head632 = T extends [infer H, ...infer _] ? H : never; +type Tail632 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation632 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation632>] + : never; + +type SmallUnion632 = "a" | "b" | "c" | "d"; +type AllPerms632 = Permutation632; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig632, + Flat632, + FR632, + BigUnion632, + ExtractAlpha632, + ExcludeZulu632, + OptionalAll632, + RequiredAll632, + ReadonlyAll632, + NullableAll632, + TypeNames632, + Action632, + AllPerms632, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts new file mode 100644 index 00000000..5a50fa2a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-33 (seed 633) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord633 { + a633: { x: number; y: string; z: boolean }; + b633: { p: string[]; q: Record }; + c633: { nested: { deep: { deeper: { deepest: string } } } }; + d633: number; + e633: string; + f633: boolean; + g633: null; + h633: undefined; + i633: bigint; + j633: symbol; +} + +type PartialBig633 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten633 = T extends Array ? Flatten633 : T; +type Nested633 = number[][][][][][][][][][]; +type Flat633 = Flatten633; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly633 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly633 : T[K]; +}; +type DeepRequired633 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired633 : T[K]; +}; +type FR633 = DeepReadonly633>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion633 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha633 = Extract; +type ExcludeZulu633 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA633 { width: number; height: number; depth: number } +interface ShapeB633 { color: string; opacity: number; blend: string } +interface ShapeC633 { x: number; y: number; z: number; w: number } +interface ShapeD633 { label: string; title: string; summary: string } + +type Combined633 = ShapeA633 & ShapeB633 & ShapeC633 & ShapeD633; +type OptionalAll633 = { [K in keyof Combined633]?: Combined633[K] }; +type RequiredAll633 = { [K in keyof Combined633]-?: Combined633[K] }; +type ReadonlyAll633 = { readonly [K in keyof Combined633]: Combined633[K] }; +type NullableAll633 = { [K in keyof Combined633]: Combined633[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString633 = T extends string ? true : false; +type IsNumber633 = T extends number ? true : false; +type TypeName633 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames633 = { + [K in keyof BigRecord633]: TypeName633; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb633 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource633 = "user" | "post" | "comment" | "tag" | "category"; +type Action633 = `${Verb633}_${Resource633}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise633 = T extends Promise ? UnwrapPromise633 : T; +type UnwrapArray633 = T extends (infer U)[] ? UnwrapArray633 : T; +type Head633 = T extends [infer H, ...infer _] ? H : never; +type Tail633 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation633 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation633>] + : never; + +type SmallUnion633 = "a" | "b" | "c" | "d"; +type AllPerms633 = Permutation633; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig633, + Flat633, + FR633, + BigUnion633, + ExtractAlpha633, + ExcludeZulu633, + OptionalAll633, + RequiredAll633, + ReadonlyAll633, + NullableAll633, + TypeNames633, + Action633, + AllPerms633, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts new file mode 100644 index 00000000..637e5c42 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-34 (seed 634) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord634 { + a634: { x: number; y: string; z: boolean }; + b634: { p: string[]; q: Record }; + c634: { nested: { deep: { deeper: { deepest: string } } } }; + d634: number; + e634: string; + f634: boolean; + g634: null; + h634: undefined; + i634: bigint; + j634: symbol; +} + +type PartialBig634 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten634 = T extends Array ? Flatten634 : T; +type Nested634 = number[][][][][][][][][][]; +type Flat634 = Flatten634; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly634 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly634 : T[K]; +}; +type DeepRequired634 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired634 : T[K]; +}; +type FR634 = DeepReadonly634>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion634 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha634 = Extract; +type ExcludeZulu634 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA634 { width: number; height: number; depth: number } +interface ShapeB634 { color: string; opacity: number; blend: string } +interface ShapeC634 { x: number; y: number; z: number; w: number } +interface ShapeD634 { label: string; title: string; summary: string } + +type Combined634 = ShapeA634 & ShapeB634 & ShapeC634 & ShapeD634; +type OptionalAll634 = { [K in keyof Combined634]?: Combined634[K] }; +type RequiredAll634 = { [K in keyof Combined634]-?: Combined634[K] }; +type ReadonlyAll634 = { readonly [K in keyof Combined634]: Combined634[K] }; +type NullableAll634 = { [K in keyof Combined634]: Combined634[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString634 = T extends string ? true : false; +type IsNumber634 = T extends number ? true : false; +type TypeName634 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames634 = { + [K in keyof BigRecord634]: TypeName634; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb634 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource634 = "user" | "post" | "comment" | "tag" | "category"; +type Action634 = `${Verb634}_${Resource634}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise634 = T extends Promise ? UnwrapPromise634 : T; +type UnwrapArray634 = T extends (infer U)[] ? UnwrapArray634 : T; +type Head634 = T extends [infer H, ...infer _] ? H : never; +type Tail634 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation634 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation634>] + : never; + +type SmallUnion634 = "a" | "b" | "c" | "d"; +type AllPerms634 = Permutation634; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig634, + Flat634, + FR634, + BigUnion634, + ExtractAlpha634, + ExcludeZulu634, + OptionalAll634, + RequiredAll634, + ReadonlyAll634, + NullableAll634, + TypeNames634, + Action634, + AllPerms634, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts new file mode 100644 index 00000000..7bf20fc9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-35 (seed 635) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord635 { + a635: { x: number; y: string; z: boolean }; + b635: { p: string[]; q: Record }; + c635: { nested: { deep: { deeper: { deepest: string } } } }; + d635: number; + e635: string; + f635: boolean; + g635: null; + h635: undefined; + i635: bigint; + j635: symbol; +} + +type PartialBig635 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten635 = T extends Array ? Flatten635 : T; +type Nested635 = number[][][][][][][][][][]; +type Flat635 = Flatten635; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly635 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly635 : T[K]; +}; +type DeepRequired635 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired635 : T[K]; +}; +type FR635 = DeepReadonly635>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion635 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha635 = Extract; +type ExcludeZulu635 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA635 { width: number; height: number; depth: number } +interface ShapeB635 { color: string; opacity: number; blend: string } +interface ShapeC635 { x: number; y: number; z: number; w: number } +interface ShapeD635 { label: string; title: string; summary: string } + +type Combined635 = ShapeA635 & ShapeB635 & ShapeC635 & ShapeD635; +type OptionalAll635 = { [K in keyof Combined635]?: Combined635[K] }; +type RequiredAll635 = { [K in keyof Combined635]-?: Combined635[K] }; +type ReadonlyAll635 = { readonly [K in keyof Combined635]: Combined635[K] }; +type NullableAll635 = { [K in keyof Combined635]: Combined635[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString635 = T extends string ? true : false; +type IsNumber635 = T extends number ? true : false; +type TypeName635 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames635 = { + [K in keyof BigRecord635]: TypeName635; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb635 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource635 = "user" | "post" | "comment" | "tag" | "category"; +type Action635 = `${Verb635}_${Resource635}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise635 = T extends Promise ? UnwrapPromise635 : T; +type UnwrapArray635 = T extends (infer U)[] ? UnwrapArray635 : T; +type Head635 = T extends [infer H, ...infer _] ? H : never; +type Tail635 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation635 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation635>] + : never; + +type SmallUnion635 = "a" | "b" | "c" | "d"; +type AllPerms635 = Permutation635; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig635, + Flat635, + FR635, + BigUnion635, + ExtractAlpha635, + ExcludeZulu635, + OptionalAll635, + RequiredAll635, + ReadonlyAll635, + NullableAll635, + TypeNames635, + Action635, + AllPerms635, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts new file mode 100644 index 00000000..e2404dad --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-36 (seed 636) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord636 { + a636: { x: number; y: string; z: boolean }; + b636: { p: string[]; q: Record }; + c636: { nested: { deep: { deeper: { deepest: string } } } }; + d636: number; + e636: string; + f636: boolean; + g636: null; + h636: undefined; + i636: bigint; + j636: symbol; +} + +type PartialBig636 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten636 = T extends Array ? Flatten636 : T; +type Nested636 = number[][][][][][][][][][]; +type Flat636 = Flatten636; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly636 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly636 : T[K]; +}; +type DeepRequired636 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired636 : T[K]; +}; +type FR636 = DeepReadonly636>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion636 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha636 = Extract; +type ExcludeZulu636 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA636 { width: number; height: number; depth: number } +interface ShapeB636 { color: string; opacity: number; blend: string } +interface ShapeC636 { x: number; y: number; z: number; w: number } +interface ShapeD636 { label: string; title: string; summary: string } + +type Combined636 = ShapeA636 & ShapeB636 & ShapeC636 & ShapeD636; +type OptionalAll636 = { [K in keyof Combined636]?: Combined636[K] }; +type RequiredAll636 = { [K in keyof Combined636]-?: Combined636[K] }; +type ReadonlyAll636 = { readonly [K in keyof Combined636]: Combined636[K] }; +type NullableAll636 = { [K in keyof Combined636]: Combined636[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString636 = T extends string ? true : false; +type IsNumber636 = T extends number ? true : false; +type TypeName636 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames636 = { + [K in keyof BigRecord636]: TypeName636; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb636 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource636 = "user" | "post" | "comment" | "tag" | "category"; +type Action636 = `${Verb636}_${Resource636}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise636 = T extends Promise ? UnwrapPromise636 : T; +type UnwrapArray636 = T extends (infer U)[] ? UnwrapArray636 : T; +type Head636 = T extends [infer H, ...infer _] ? H : never; +type Tail636 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation636 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation636>] + : never; + +type SmallUnion636 = "a" | "b" | "c" | "d"; +type AllPerms636 = Permutation636; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig636, + Flat636, + FR636, + BigUnion636, + ExtractAlpha636, + ExcludeZulu636, + OptionalAll636, + RequiredAll636, + ReadonlyAll636, + NullableAll636, + TypeNames636, + Action636, + AllPerms636, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts new file mode 100644 index 00000000..75505280 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-37 (seed 637) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord637 { + a637: { x: number; y: string; z: boolean }; + b637: { p: string[]; q: Record }; + c637: { nested: { deep: { deeper: { deepest: string } } } }; + d637: number; + e637: string; + f637: boolean; + g637: null; + h637: undefined; + i637: bigint; + j637: symbol; +} + +type PartialBig637 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten637 = T extends Array ? Flatten637 : T; +type Nested637 = number[][][][][][][][][][]; +type Flat637 = Flatten637; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly637 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly637 : T[K]; +}; +type DeepRequired637 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired637 : T[K]; +}; +type FR637 = DeepReadonly637>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion637 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha637 = Extract; +type ExcludeZulu637 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA637 { width: number; height: number; depth: number } +interface ShapeB637 { color: string; opacity: number; blend: string } +interface ShapeC637 { x: number; y: number; z: number; w: number } +interface ShapeD637 { label: string; title: string; summary: string } + +type Combined637 = ShapeA637 & ShapeB637 & ShapeC637 & ShapeD637; +type OptionalAll637 = { [K in keyof Combined637]?: Combined637[K] }; +type RequiredAll637 = { [K in keyof Combined637]-?: Combined637[K] }; +type ReadonlyAll637 = { readonly [K in keyof Combined637]: Combined637[K] }; +type NullableAll637 = { [K in keyof Combined637]: Combined637[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString637 = T extends string ? true : false; +type IsNumber637 = T extends number ? true : false; +type TypeName637 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames637 = { + [K in keyof BigRecord637]: TypeName637; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb637 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource637 = "user" | "post" | "comment" | "tag" | "category"; +type Action637 = `${Verb637}_${Resource637}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise637 = T extends Promise ? UnwrapPromise637 : T; +type UnwrapArray637 = T extends (infer U)[] ? UnwrapArray637 : T; +type Head637 = T extends [infer H, ...infer _] ? H : never; +type Tail637 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation637 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation637>] + : never; + +type SmallUnion637 = "a" | "b" | "c" | "d"; +type AllPerms637 = Permutation637; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig637, + Flat637, + FR637, + BigUnion637, + ExtractAlpha637, + ExcludeZulu637, + OptionalAll637, + RequiredAll637, + ReadonlyAll637, + NullableAll637, + TypeNames637, + Action637, + AllPerms637, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts new file mode 100644 index 00000000..43d71860 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-38 (seed 638) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord638 { + a638: { x: number; y: string; z: boolean }; + b638: { p: string[]; q: Record }; + c638: { nested: { deep: { deeper: { deepest: string } } } }; + d638: number; + e638: string; + f638: boolean; + g638: null; + h638: undefined; + i638: bigint; + j638: symbol; +} + +type PartialBig638 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten638 = T extends Array ? Flatten638 : T; +type Nested638 = number[][][][][][][][][][]; +type Flat638 = Flatten638; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly638 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly638 : T[K]; +}; +type DeepRequired638 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired638 : T[K]; +}; +type FR638 = DeepReadonly638>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion638 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha638 = Extract; +type ExcludeZulu638 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA638 { width: number; height: number; depth: number } +interface ShapeB638 { color: string; opacity: number; blend: string } +interface ShapeC638 { x: number; y: number; z: number; w: number } +interface ShapeD638 { label: string; title: string; summary: string } + +type Combined638 = ShapeA638 & ShapeB638 & ShapeC638 & ShapeD638; +type OptionalAll638 = { [K in keyof Combined638]?: Combined638[K] }; +type RequiredAll638 = { [K in keyof Combined638]-?: Combined638[K] }; +type ReadonlyAll638 = { readonly [K in keyof Combined638]: Combined638[K] }; +type NullableAll638 = { [K in keyof Combined638]: Combined638[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString638 = T extends string ? true : false; +type IsNumber638 = T extends number ? true : false; +type TypeName638 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames638 = { + [K in keyof BigRecord638]: TypeName638; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb638 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource638 = "user" | "post" | "comment" | "tag" | "category"; +type Action638 = `${Verb638}_${Resource638}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise638 = T extends Promise ? UnwrapPromise638 : T; +type UnwrapArray638 = T extends (infer U)[] ? UnwrapArray638 : T; +type Head638 = T extends [infer H, ...infer _] ? H : never; +type Tail638 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation638 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation638>] + : never; + +type SmallUnion638 = "a" | "b" | "c" | "d"; +type AllPerms638 = Permutation638; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig638, + Flat638, + FR638, + BigUnion638, + ExtractAlpha638, + ExcludeZulu638, + OptionalAll638, + RequiredAll638, + ReadonlyAll638, + NullableAll638, + TypeNames638, + Action638, + AllPerms638, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts new file mode 100644 index 00000000..3ee63540 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-39 (seed 639) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord639 { + a639: { x: number; y: string; z: boolean }; + b639: { p: string[]; q: Record }; + c639: { nested: { deep: { deeper: { deepest: string } } } }; + d639: number; + e639: string; + f639: boolean; + g639: null; + h639: undefined; + i639: bigint; + j639: symbol; +} + +type PartialBig639 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten639 = T extends Array ? Flatten639 : T; +type Nested639 = number[][][][][][][][][][]; +type Flat639 = Flatten639; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly639 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly639 : T[K]; +}; +type DeepRequired639 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired639 : T[K]; +}; +type FR639 = DeepReadonly639>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion639 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha639 = Extract; +type ExcludeZulu639 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA639 { width: number; height: number; depth: number } +interface ShapeB639 { color: string; opacity: number; blend: string } +interface ShapeC639 { x: number; y: number; z: number; w: number } +interface ShapeD639 { label: string; title: string; summary: string } + +type Combined639 = ShapeA639 & ShapeB639 & ShapeC639 & ShapeD639; +type OptionalAll639 = { [K in keyof Combined639]?: Combined639[K] }; +type RequiredAll639 = { [K in keyof Combined639]-?: Combined639[K] }; +type ReadonlyAll639 = { readonly [K in keyof Combined639]: Combined639[K] }; +type NullableAll639 = { [K in keyof Combined639]: Combined639[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString639 = T extends string ? true : false; +type IsNumber639 = T extends number ? true : false; +type TypeName639 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames639 = { + [K in keyof BigRecord639]: TypeName639; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb639 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource639 = "user" | "post" | "comment" | "tag" | "category"; +type Action639 = `${Verb639}_${Resource639}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise639 = T extends Promise ? UnwrapPromise639 : T; +type UnwrapArray639 = T extends (infer U)[] ? UnwrapArray639 : T; +type Head639 = T extends [infer H, ...infer _] ? H : never; +type Tail639 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation639 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation639>] + : never; + +type SmallUnion639 = "a" | "b" | "c" | "d"; +type AllPerms639 = Permutation639; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig639, + Flat639, + FR639, + BigUnion639, + ExtractAlpha639, + ExcludeZulu639, + OptionalAll639, + RequiredAll639, + ReadonlyAll639, + NullableAll639, + TypeNames639, + Action639, + AllPerms639, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts new file mode 100644 index 00000000..46bf89d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-40 (seed 640) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord640 { + a640: { x: number; y: string; z: boolean }; + b640: { p: string[]; q: Record }; + c640: { nested: { deep: { deeper: { deepest: string } } } }; + d640: number; + e640: string; + f640: boolean; + g640: null; + h640: undefined; + i640: bigint; + j640: symbol; +} + +type PartialBig640 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten640 = T extends Array ? Flatten640 : T; +type Nested640 = number[][][][][][][][][][]; +type Flat640 = Flatten640; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly640 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly640 : T[K]; +}; +type DeepRequired640 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired640 : T[K]; +}; +type FR640 = DeepReadonly640>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion640 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha640 = Extract; +type ExcludeZulu640 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA640 { width: number; height: number; depth: number } +interface ShapeB640 { color: string; opacity: number; blend: string } +interface ShapeC640 { x: number; y: number; z: number; w: number } +interface ShapeD640 { label: string; title: string; summary: string } + +type Combined640 = ShapeA640 & ShapeB640 & ShapeC640 & ShapeD640; +type OptionalAll640 = { [K in keyof Combined640]?: Combined640[K] }; +type RequiredAll640 = { [K in keyof Combined640]-?: Combined640[K] }; +type ReadonlyAll640 = { readonly [K in keyof Combined640]: Combined640[K] }; +type NullableAll640 = { [K in keyof Combined640]: Combined640[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString640 = T extends string ? true : false; +type IsNumber640 = T extends number ? true : false; +type TypeName640 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames640 = { + [K in keyof BigRecord640]: TypeName640; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb640 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource640 = "user" | "post" | "comment" | "tag" | "category"; +type Action640 = `${Verb640}_${Resource640}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise640 = T extends Promise ? UnwrapPromise640 : T; +type UnwrapArray640 = T extends (infer U)[] ? UnwrapArray640 : T; +type Head640 = T extends [infer H, ...infer _] ? H : never; +type Tail640 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation640 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation640>] + : never; + +type SmallUnion640 = "a" | "b" | "c" | "d"; +type AllPerms640 = Permutation640; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig640, + Flat640, + FR640, + BigUnion640, + ExtractAlpha640, + ExcludeZulu640, + OptionalAll640, + RequiredAll640, + ReadonlyAll640, + NullableAll640, + TypeNames640, + Action640, + AllPerms640, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts new file mode 100644 index 00000000..acf8e5df --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-41 (seed 641) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord641 { + a641: { x: number; y: string; z: boolean }; + b641: { p: string[]; q: Record }; + c641: { nested: { deep: { deeper: { deepest: string } } } }; + d641: number; + e641: string; + f641: boolean; + g641: null; + h641: undefined; + i641: bigint; + j641: symbol; +} + +type PartialBig641 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten641 = T extends Array ? Flatten641 : T; +type Nested641 = number[][][][][][][][][][]; +type Flat641 = Flatten641; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly641 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly641 : T[K]; +}; +type DeepRequired641 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired641 : T[K]; +}; +type FR641 = DeepReadonly641>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion641 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha641 = Extract; +type ExcludeZulu641 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA641 { width: number; height: number; depth: number } +interface ShapeB641 { color: string; opacity: number; blend: string } +interface ShapeC641 { x: number; y: number; z: number; w: number } +interface ShapeD641 { label: string; title: string; summary: string } + +type Combined641 = ShapeA641 & ShapeB641 & ShapeC641 & ShapeD641; +type OptionalAll641 = { [K in keyof Combined641]?: Combined641[K] }; +type RequiredAll641 = { [K in keyof Combined641]-?: Combined641[K] }; +type ReadonlyAll641 = { readonly [K in keyof Combined641]: Combined641[K] }; +type NullableAll641 = { [K in keyof Combined641]: Combined641[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString641 = T extends string ? true : false; +type IsNumber641 = T extends number ? true : false; +type TypeName641 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames641 = { + [K in keyof BigRecord641]: TypeName641; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb641 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource641 = "user" | "post" | "comment" | "tag" | "category"; +type Action641 = `${Verb641}_${Resource641}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise641 = T extends Promise ? UnwrapPromise641 : T; +type UnwrapArray641 = T extends (infer U)[] ? UnwrapArray641 : T; +type Head641 = T extends [infer H, ...infer _] ? H : never; +type Tail641 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation641 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation641>] + : never; + +type SmallUnion641 = "a" | "b" | "c" | "d"; +type AllPerms641 = Permutation641; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig641, + Flat641, + FR641, + BigUnion641, + ExtractAlpha641, + ExcludeZulu641, + OptionalAll641, + RequiredAll641, + ReadonlyAll641, + NullableAll641, + TypeNames641, + Action641, + AllPerms641, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts new file mode 100644 index 00000000..2e3b66e0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-42 (seed 642) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord642 { + a642: { x: number; y: string; z: boolean }; + b642: { p: string[]; q: Record }; + c642: { nested: { deep: { deeper: { deepest: string } } } }; + d642: number; + e642: string; + f642: boolean; + g642: null; + h642: undefined; + i642: bigint; + j642: symbol; +} + +type PartialBig642 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten642 = T extends Array ? Flatten642 : T; +type Nested642 = number[][][][][][][][][][]; +type Flat642 = Flatten642; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly642 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly642 : T[K]; +}; +type DeepRequired642 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired642 : T[K]; +}; +type FR642 = DeepReadonly642>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion642 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha642 = Extract; +type ExcludeZulu642 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA642 { width: number; height: number; depth: number } +interface ShapeB642 { color: string; opacity: number; blend: string } +interface ShapeC642 { x: number; y: number; z: number; w: number } +interface ShapeD642 { label: string; title: string; summary: string } + +type Combined642 = ShapeA642 & ShapeB642 & ShapeC642 & ShapeD642; +type OptionalAll642 = { [K in keyof Combined642]?: Combined642[K] }; +type RequiredAll642 = { [K in keyof Combined642]-?: Combined642[K] }; +type ReadonlyAll642 = { readonly [K in keyof Combined642]: Combined642[K] }; +type NullableAll642 = { [K in keyof Combined642]: Combined642[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString642 = T extends string ? true : false; +type IsNumber642 = T extends number ? true : false; +type TypeName642 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames642 = { + [K in keyof BigRecord642]: TypeName642; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb642 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource642 = "user" | "post" | "comment" | "tag" | "category"; +type Action642 = `${Verb642}_${Resource642}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise642 = T extends Promise ? UnwrapPromise642 : T; +type UnwrapArray642 = T extends (infer U)[] ? UnwrapArray642 : T; +type Head642 = T extends [infer H, ...infer _] ? H : never; +type Tail642 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation642 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation642>] + : never; + +type SmallUnion642 = "a" | "b" | "c" | "d"; +type AllPerms642 = Permutation642; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig642, + Flat642, + FR642, + BigUnion642, + ExtractAlpha642, + ExcludeZulu642, + OptionalAll642, + RequiredAll642, + ReadonlyAll642, + NullableAll642, + TypeNames642, + Action642, + AllPerms642, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts new file mode 100644 index 00000000..c4db10da --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-43 (seed 643) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord643 { + a643: { x: number; y: string; z: boolean }; + b643: { p: string[]; q: Record }; + c643: { nested: { deep: { deeper: { deepest: string } } } }; + d643: number; + e643: string; + f643: boolean; + g643: null; + h643: undefined; + i643: bigint; + j643: symbol; +} + +type PartialBig643 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten643 = T extends Array ? Flatten643 : T; +type Nested643 = number[][][][][][][][][][]; +type Flat643 = Flatten643; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly643 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly643 : T[K]; +}; +type DeepRequired643 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired643 : T[K]; +}; +type FR643 = DeepReadonly643>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion643 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha643 = Extract; +type ExcludeZulu643 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA643 { width: number; height: number; depth: number } +interface ShapeB643 { color: string; opacity: number; blend: string } +interface ShapeC643 { x: number; y: number; z: number; w: number } +interface ShapeD643 { label: string; title: string; summary: string } + +type Combined643 = ShapeA643 & ShapeB643 & ShapeC643 & ShapeD643; +type OptionalAll643 = { [K in keyof Combined643]?: Combined643[K] }; +type RequiredAll643 = { [K in keyof Combined643]-?: Combined643[K] }; +type ReadonlyAll643 = { readonly [K in keyof Combined643]: Combined643[K] }; +type NullableAll643 = { [K in keyof Combined643]: Combined643[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString643 = T extends string ? true : false; +type IsNumber643 = T extends number ? true : false; +type TypeName643 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames643 = { + [K in keyof BigRecord643]: TypeName643; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb643 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource643 = "user" | "post" | "comment" | "tag" | "category"; +type Action643 = `${Verb643}_${Resource643}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise643 = T extends Promise ? UnwrapPromise643 : T; +type UnwrapArray643 = T extends (infer U)[] ? UnwrapArray643 : T; +type Head643 = T extends [infer H, ...infer _] ? H : never; +type Tail643 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation643 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation643>] + : never; + +type SmallUnion643 = "a" | "b" | "c" | "d"; +type AllPerms643 = Permutation643; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig643, + Flat643, + FR643, + BigUnion643, + ExtractAlpha643, + ExcludeZulu643, + OptionalAll643, + RequiredAll643, + ReadonlyAll643, + NullableAll643, + TypeNames643, + Action643, + AllPerms643, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts new file mode 100644 index 00000000..c761f9f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-44 (seed 644) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord644 { + a644: { x: number; y: string; z: boolean }; + b644: { p: string[]; q: Record }; + c644: { nested: { deep: { deeper: { deepest: string } } } }; + d644: number; + e644: string; + f644: boolean; + g644: null; + h644: undefined; + i644: bigint; + j644: symbol; +} + +type PartialBig644 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten644 = T extends Array ? Flatten644 : T; +type Nested644 = number[][][][][][][][][][]; +type Flat644 = Flatten644; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly644 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly644 : T[K]; +}; +type DeepRequired644 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired644 : T[K]; +}; +type FR644 = DeepReadonly644>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion644 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha644 = Extract; +type ExcludeZulu644 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA644 { width: number; height: number; depth: number } +interface ShapeB644 { color: string; opacity: number; blend: string } +interface ShapeC644 { x: number; y: number; z: number; w: number } +interface ShapeD644 { label: string; title: string; summary: string } + +type Combined644 = ShapeA644 & ShapeB644 & ShapeC644 & ShapeD644; +type OptionalAll644 = { [K in keyof Combined644]?: Combined644[K] }; +type RequiredAll644 = { [K in keyof Combined644]-?: Combined644[K] }; +type ReadonlyAll644 = { readonly [K in keyof Combined644]: Combined644[K] }; +type NullableAll644 = { [K in keyof Combined644]: Combined644[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString644 = T extends string ? true : false; +type IsNumber644 = T extends number ? true : false; +type TypeName644 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames644 = { + [K in keyof BigRecord644]: TypeName644; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb644 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource644 = "user" | "post" | "comment" | "tag" | "category"; +type Action644 = `${Verb644}_${Resource644}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise644 = T extends Promise ? UnwrapPromise644 : T; +type UnwrapArray644 = T extends (infer U)[] ? UnwrapArray644 : T; +type Head644 = T extends [infer H, ...infer _] ? H : never; +type Tail644 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation644 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation644>] + : never; + +type SmallUnion644 = "a" | "b" | "c" | "d"; +type AllPerms644 = Permutation644; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig644, + Flat644, + FR644, + BigUnion644, + ExtractAlpha644, + ExcludeZulu644, + OptionalAll644, + RequiredAll644, + ReadonlyAll644, + NullableAll644, + TypeNames644, + Action644, + AllPerms644, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts new file mode 100644 index 00000000..caf37797 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-45 (seed 645) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord645 { + a645: { x: number; y: string; z: boolean }; + b645: { p: string[]; q: Record }; + c645: { nested: { deep: { deeper: { deepest: string } } } }; + d645: number; + e645: string; + f645: boolean; + g645: null; + h645: undefined; + i645: bigint; + j645: symbol; +} + +type PartialBig645 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten645 = T extends Array ? Flatten645 : T; +type Nested645 = number[][][][][][][][][][]; +type Flat645 = Flatten645; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly645 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly645 : T[K]; +}; +type DeepRequired645 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired645 : T[K]; +}; +type FR645 = DeepReadonly645>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion645 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha645 = Extract; +type ExcludeZulu645 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA645 { width: number; height: number; depth: number } +interface ShapeB645 { color: string; opacity: number; blend: string } +interface ShapeC645 { x: number; y: number; z: number; w: number } +interface ShapeD645 { label: string; title: string; summary: string } + +type Combined645 = ShapeA645 & ShapeB645 & ShapeC645 & ShapeD645; +type OptionalAll645 = { [K in keyof Combined645]?: Combined645[K] }; +type RequiredAll645 = { [K in keyof Combined645]-?: Combined645[K] }; +type ReadonlyAll645 = { readonly [K in keyof Combined645]: Combined645[K] }; +type NullableAll645 = { [K in keyof Combined645]: Combined645[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString645 = T extends string ? true : false; +type IsNumber645 = T extends number ? true : false; +type TypeName645 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames645 = { + [K in keyof BigRecord645]: TypeName645; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb645 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource645 = "user" | "post" | "comment" | "tag" | "category"; +type Action645 = `${Verb645}_${Resource645}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise645 = T extends Promise ? UnwrapPromise645 : T; +type UnwrapArray645 = T extends (infer U)[] ? UnwrapArray645 : T; +type Head645 = T extends [infer H, ...infer _] ? H : never; +type Tail645 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation645 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation645>] + : never; + +type SmallUnion645 = "a" | "b" | "c" | "d"; +type AllPerms645 = Permutation645; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig645, + Flat645, + FR645, + BigUnion645, + ExtractAlpha645, + ExcludeZulu645, + OptionalAll645, + RequiredAll645, + ReadonlyAll645, + NullableAll645, + TypeNames645, + Action645, + AllPerms645, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts new file mode 100644 index 00000000..9a4c8459 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-46 (seed 646) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord646 { + a646: { x: number; y: string; z: boolean }; + b646: { p: string[]; q: Record }; + c646: { nested: { deep: { deeper: { deepest: string } } } }; + d646: number; + e646: string; + f646: boolean; + g646: null; + h646: undefined; + i646: bigint; + j646: symbol; +} + +type PartialBig646 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten646 = T extends Array ? Flatten646 : T; +type Nested646 = number[][][][][][][][][][]; +type Flat646 = Flatten646; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly646 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly646 : T[K]; +}; +type DeepRequired646 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired646 : T[K]; +}; +type FR646 = DeepReadonly646>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion646 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha646 = Extract; +type ExcludeZulu646 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA646 { width: number; height: number; depth: number } +interface ShapeB646 { color: string; opacity: number; blend: string } +interface ShapeC646 { x: number; y: number; z: number; w: number } +interface ShapeD646 { label: string; title: string; summary: string } + +type Combined646 = ShapeA646 & ShapeB646 & ShapeC646 & ShapeD646; +type OptionalAll646 = { [K in keyof Combined646]?: Combined646[K] }; +type RequiredAll646 = { [K in keyof Combined646]-?: Combined646[K] }; +type ReadonlyAll646 = { readonly [K in keyof Combined646]: Combined646[K] }; +type NullableAll646 = { [K in keyof Combined646]: Combined646[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString646 = T extends string ? true : false; +type IsNumber646 = T extends number ? true : false; +type TypeName646 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames646 = { + [K in keyof BigRecord646]: TypeName646; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb646 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource646 = "user" | "post" | "comment" | "tag" | "category"; +type Action646 = `${Verb646}_${Resource646}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise646 = T extends Promise ? UnwrapPromise646 : T; +type UnwrapArray646 = T extends (infer U)[] ? UnwrapArray646 : T; +type Head646 = T extends [infer H, ...infer _] ? H : never; +type Tail646 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation646 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation646>] + : never; + +type SmallUnion646 = "a" | "b" | "c" | "d"; +type AllPerms646 = Permutation646; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig646, + Flat646, + FR646, + BigUnion646, + ExtractAlpha646, + ExcludeZulu646, + OptionalAll646, + RequiredAll646, + ReadonlyAll646, + NullableAll646, + TypeNames646, + Action646, + AllPerms646, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts new file mode 100644 index 00000000..4257fa98 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-47 (seed 647) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord647 { + a647: { x: number; y: string; z: boolean }; + b647: { p: string[]; q: Record }; + c647: { nested: { deep: { deeper: { deepest: string } } } }; + d647: number; + e647: string; + f647: boolean; + g647: null; + h647: undefined; + i647: bigint; + j647: symbol; +} + +type PartialBig647 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten647 = T extends Array ? Flatten647 : T; +type Nested647 = number[][][][][][][][][][]; +type Flat647 = Flatten647; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly647 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly647 : T[K]; +}; +type DeepRequired647 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired647 : T[K]; +}; +type FR647 = DeepReadonly647>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion647 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha647 = Extract; +type ExcludeZulu647 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA647 { width: number; height: number; depth: number } +interface ShapeB647 { color: string; opacity: number; blend: string } +interface ShapeC647 { x: number; y: number; z: number; w: number } +interface ShapeD647 { label: string; title: string; summary: string } + +type Combined647 = ShapeA647 & ShapeB647 & ShapeC647 & ShapeD647; +type OptionalAll647 = { [K in keyof Combined647]?: Combined647[K] }; +type RequiredAll647 = { [K in keyof Combined647]-?: Combined647[K] }; +type ReadonlyAll647 = { readonly [K in keyof Combined647]: Combined647[K] }; +type NullableAll647 = { [K in keyof Combined647]: Combined647[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString647 = T extends string ? true : false; +type IsNumber647 = T extends number ? true : false; +type TypeName647 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames647 = { + [K in keyof BigRecord647]: TypeName647; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb647 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource647 = "user" | "post" | "comment" | "tag" | "category"; +type Action647 = `${Verb647}_${Resource647}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise647 = T extends Promise ? UnwrapPromise647 : T; +type UnwrapArray647 = T extends (infer U)[] ? UnwrapArray647 : T; +type Head647 = T extends [infer H, ...infer _] ? H : never; +type Tail647 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation647 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation647>] + : never; + +type SmallUnion647 = "a" | "b" | "c" | "d"; +type AllPerms647 = Permutation647; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig647, + Flat647, + FR647, + BigUnion647, + ExtractAlpha647, + ExcludeZulu647, + OptionalAll647, + RequiredAll647, + ReadonlyAll647, + NullableAll647, + TypeNames647, + Action647, + AllPerms647, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts new file mode 100644 index 00000000..dc250bc7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-48 (seed 648) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord648 { + a648: { x: number; y: string; z: boolean }; + b648: { p: string[]; q: Record }; + c648: { nested: { deep: { deeper: { deepest: string } } } }; + d648: number; + e648: string; + f648: boolean; + g648: null; + h648: undefined; + i648: bigint; + j648: symbol; +} + +type PartialBig648 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten648 = T extends Array ? Flatten648 : T; +type Nested648 = number[][][][][][][][][][]; +type Flat648 = Flatten648; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly648 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly648 : T[K]; +}; +type DeepRequired648 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired648 : T[K]; +}; +type FR648 = DeepReadonly648>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion648 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha648 = Extract; +type ExcludeZulu648 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA648 { width: number; height: number; depth: number } +interface ShapeB648 { color: string; opacity: number; blend: string } +interface ShapeC648 { x: number; y: number; z: number; w: number } +interface ShapeD648 { label: string; title: string; summary: string } + +type Combined648 = ShapeA648 & ShapeB648 & ShapeC648 & ShapeD648; +type OptionalAll648 = { [K in keyof Combined648]?: Combined648[K] }; +type RequiredAll648 = { [K in keyof Combined648]-?: Combined648[K] }; +type ReadonlyAll648 = { readonly [K in keyof Combined648]: Combined648[K] }; +type NullableAll648 = { [K in keyof Combined648]: Combined648[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString648 = T extends string ? true : false; +type IsNumber648 = T extends number ? true : false; +type TypeName648 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames648 = { + [K in keyof BigRecord648]: TypeName648; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb648 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource648 = "user" | "post" | "comment" | "tag" | "category"; +type Action648 = `${Verb648}_${Resource648}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise648 = T extends Promise ? UnwrapPromise648 : T; +type UnwrapArray648 = T extends (infer U)[] ? UnwrapArray648 : T; +type Head648 = T extends [infer H, ...infer _] ? H : never; +type Tail648 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation648 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation648>] + : never; + +type SmallUnion648 = "a" | "b" | "c" | "d"; +type AllPerms648 = Permutation648; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig648, + Flat648, + FR648, + BigUnion648, + ExtractAlpha648, + ExcludeZulu648, + OptionalAll648, + RequiredAll648, + ReadonlyAll648, + NullableAll648, + TypeNames648, + Action648, + AllPerms648, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts new file mode 100644 index 00000000..597db868 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-49 (seed 649) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord649 { + a649: { x: number; y: string; z: boolean }; + b649: { p: string[]; q: Record }; + c649: { nested: { deep: { deeper: { deepest: string } } } }; + d649: number; + e649: string; + f649: boolean; + g649: null; + h649: undefined; + i649: bigint; + j649: symbol; +} + +type PartialBig649 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten649 = T extends Array ? Flatten649 : T; +type Nested649 = number[][][][][][][][][][]; +type Flat649 = Flatten649; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly649 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly649 : T[K]; +}; +type DeepRequired649 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired649 : T[K]; +}; +type FR649 = DeepReadonly649>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion649 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha649 = Extract; +type ExcludeZulu649 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA649 { width: number; height: number; depth: number } +interface ShapeB649 { color: string; opacity: number; blend: string } +interface ShapeC649 { x: number; y: number; z: number; w: number } +interface ShapeD649 { label: string; title: string; summary: string } + +type Combined649 = ShapeA649 & ShapeB649 & ShapeC649 & ShapeD649; +type OptionalAll649 = { [K in keyof Combined649]?: Combined649[K] }; +type RequiredAll649 = { [K in keyof Combined649]-?: Combined649[K] }; +type ReadonlyAll649 = { readonly [K in keyof Combined649]: Combined649[K] }; +type NullableAll649 = { [K in keyof Combined649]: Combined649[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString649 = T extends string ? true : false; +type IsNumber649 = T extends number ? true : false; +type TypeName649 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames649 = { + [K in keyof BigRecord649]: TypeName649; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb649 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource649 = "user" | "post" | "comment" | "tag" | "category"; +type Action649 = `${Verb649}_${Resource649}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise649 = T extends Promise ? UnwrapPromise649 : T; +type UnwrapArray649 = T extends (infer U)[] ? UnwrapArray649 : T; +type Head649 = T extends [infer H, ...infer _] ? H : never; +type Tail649 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation649 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation649>] + : never; + +type SmallUnion649 = "a" | "b" | "c" | "d"; +type AllPerms649 = Permutation649; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig649, + Flat649, + FR649, + BigUnion649, + ExtractAlpha649, + ExcludeZulu649, + OptionalAll649, + RequiredAll649, + ReadonlyAll649, + NullableAll649, + TypeNames649, + Action649, + AllPerms649, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts new file mode 100644 index 00000000..f272cdf8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts @@ -0,0 +1,125 @@ +// pkg-06 / types-50 (seed 650) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord650 { + a650: { x: number; y: string; z: boolean }; + b650: { p: string[]; q: Record }; + c650: { nested: { deep: { deeper: { deepest: string } } } }; + d650: number; + e650: string; + f650: boolean; + g650: null; + h650: undefined; + i650: bigint; + j650: symbol; +} + +type PartialBig650 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten650 = T extends Array ? Flatten650 : T; +type Nested650 = number[][][][][][][][][][]; +type Flat650 = Flatten650; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly650 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly650 : T[K]; +}; +type DeepRequired650 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired650 : T[K]; +}; +type FR650 = DeepReadonly650>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion650 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha650 = Extract; +type ExcludeZulu650 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA650 { width: number; height: number; depth: number } +interface ShapeB650 { color: string; opacity: number; blend: string } +interface ShapeC650 { x: number; y: number; z: number; w: number } +interface ShapeD650 { label: string; title: string; summary: string } + +type Combined650 = ShapeA650 & ShapeB650 & ShapeC650 & ShapeD650; +type OptionalAll650 = { [K in keyof Combined650]?: Combined650[K] }; +type RequiredAll650 = { [K in keyof Combined650]-?: Combined650[K] }; +type ReadonlyAll650 = { readonly [K in keyof Combined650]: Combined650[K] }; +type NullableAll650 = { [K in keyof Combined650]: Combined650[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString650 = T extends string ? true : false; +type IsNumber650 = T extends number ? true : false; +type TypeName650 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames650 = { + [K in keyof BigRecord650]: TypeName650; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb650 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource650 = "user" | "post" | "comment" | "tag" | "category"; +type Action650 = `${Verb650}_${Resource650}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise650 = T extends Promise ? UnwrapPromise650 : T; +type UnwrapArray650 = T extends (infer U)[] ? UnwrapArray650 : T; +type Head650 = T extends [infer H, ...infer _] ? H : never; +type Tail650 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation650 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation650>] + : never; + +type SmallUnion650 = "a" | "b" | "c" | "d"; +type AllPerms650 = Permutation650; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig650, + Flat650, + FR650, + BigUnion650, + ExtractAlpha650, + ExcludeZulu650, + OptionalAll650, + RequiredAll650, + ReadonlyAll650, + NullableAll650, + TypeNames650, + Action650, + AllPerms650, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts new file mode 100644 index 00000000..5aebd640 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-01 (seed 701) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord701 { + a701: { x: number; y: string; z: boolean }; + b701: { p: string[]; q: Record }; + c701: { nested: { deep: { deeper: { deepest: string } } } }; + d701: number; + e701: string; + f701: boolean; + g701: null; + h701: undefined; + i701: bigint; + j701: symbol; +} + +type PartialBig701 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten701 = T extends Array ? Flatten701 : T; +type Nested701 = number[][][][][][][][][][]; +type Flat701 = Flatten701; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly701 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly701 : T[K]; +}; +type DeepRequired701 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired701 : T[K]; +}; +type FR701 = DeepReadonly701>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion701 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha701 = Extract; +type ExcludeZulu701 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA701 { width: number; height: number; depth: number } +interface ShapeB701 { color: string; opacity: number; blend: string } +interface ShapeC701 { x: number; y: number; z: number; w: number } +interface ShapeD701 { label: string; title: string; summary: string } + +type Combined701 = ShapeA701 & ShapeB701 & ShapeC701 & ShapeD701; +type OptionalAll701 = { [K in keyof Combined701]?: Combined701[K] }; +type RequiredAll701 = { [K in keyof Combined701]-?: Combined701[K] }; +type ReadonlyAll701 = { readonly [K in keyof Combined701]: Combined701[K] }; +type NullableAll701 = { [K in keyof Combined701]: Combined701[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString701 = T extends string ? true : false; +type IsNumber701 = T extends number ? true : false; +type TypeName701 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames701 = { + [K in keyof BigRecord701]: TypeName701; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb701 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource701 = "user" | "post" | "comment" | "tag" | "category"; +type Action701 = `${Verb701}_${Resource701}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise701 = T extends Promise ? UnwrapPromise701 : T; +type UnwrapArray701 = T extends (infer U)[] ? UnwrapArray701 : T; +type Head701 = T extends [infer H, ...infer _] ? H : never; +type Tail701 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation701 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation701>] + : never; + +type SmallUnion701 = "a" | "b" | "c" | "d"; +type AllPerms701 = Permutation701; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig701, + Flat701, + FR701, + BigUnion701, + ExtractAlpha701, + ExcludeZulu701, + OptionalAll701, + RequiredAll701, + ReadonlyAll701, + NullableAll701, + TypeNames701, + Action701, + AllPerms701, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts new file mode 100644 index 00000000..2f857606 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-02 (seed 702) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord702 { + a702: { x: number; y: string; z: boolean }; + b702: { p: string[]; q: Record }; + c702: { nested: { deep: { deeper: { deepest: string } } } }; + d702: number; + e702: string; + f702: boolean; + g702: null; + h702: undefined; + i702: bigint; + j702: symbol; +} + +type PartialBig702 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten702 = T extends Array ? Flatten702 : T; +type Nested702 = number[][][][][][][][][][]; +type Flat702 = Flatten702; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly702 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly702 : T[K]; +}; +type DeepRequired702 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired702 : T[K]; +}; +type FR702 = DeepReadonly702>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion702 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha702 = Extract; +type ExcludeZulu702 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA702 { width: number; height: number; depth: number } +interface ShapeB702 { color: string; opacity: number; blend: string } +interface ShapeC702 { x: number; y: number; z: number; w: number } +interface ShapeD702 { label: string; title: string; summary: string } + +type Combined702 = ShapeA702 & ShapeB702 & ShapeC702 & ShapeD702; +type OptionalAll702 = { [K in keyof Combined702]?: Combined702[K] }; +type RequiredAll702 = { [K in keyof Combined702]-?: Combined702[K] }; +type ReadonlyAll702 = { readonly [K in keyof Combined702]: Combined702[K] }; +type NullableAll702 = { [K in keyof Combined702]: Combined702[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString702 = T extends string ? true : false; +type IsNumber702 = T extends number ? true : false; +type TypeName702 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames702 = { + [K in keyof BigRecord702]: TypeName702; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb702 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource702 = "user" | "post" | "comment" | "tag" | "category"; +type Action702 = `${Verb702}_${Resource702}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise702 = T extends Promise ? UnwrapPromise702 : T; +type UnwrapArray702 = T extends (infer U)[] ? UnwrapArray702 : T; +type Head702 = T extends [infer H, ...infer _] ? H : never; +type Tail702 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation702 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation702>] + : never; + +type SmallUnion702 = "a" | "b" | "c" | "d"; +type AllPerms702 = Permutation702; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig702, + Flat702, + FR702, + BigUnion702, + ExtractAlpha702, + ExcludeZulu702, + OptionalAll702, + RequiredAll702, + ReadonlyAll702, + NullableAll702, + TypeNames702, + Action702, + AllPerms702, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts new file mode 100644 index 00000000..e4380868 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-03 (seed 703) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord703 { + a703: { x: number; y: string; z: boolean }; + b703: { p: string[]; q: Record }; + c703: { nested: { deep: { deeper: { deepest: string } } } }; + d703: number; + e703: string; + f703: boolean; + g703: null; + h703: undefined; + i703: bigint; + j703: symbol; +} + +type PartialBig703 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten703 = T extends Array ? Flatten703 : T; +type Nested703 = number[][][][][][][][][][]; +type Flat703 = Flatten703; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly703 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly703 : T[K]; +}; +type DeepRequired703 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired703 : T[K]; +}; +type FR703 = DeepReadonly703>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion703 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha703 = Extract; +type ExcludeZulu703 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA703 { width: number; height: number; depth: number } +interface ShapeB703 { color: string; opacity: number; blend: string } +interface ShapeC703 { x: number; y: number; z: number; w: number } +interface ShapeD703 { label: string; title: string; summary: string } + +type Combined703 = ShapeA703 & ShapeB703 & ShapeC703 & ShapeD703; +type OptionalAll703 = { [K in keyof Combined703]?: Combined703[K] }; +type RequiredAll703 = { [K in keyof Combined703]-?: Combined703[K] }; +type ReadonlyAll703 = { readonly [K in keyof Combined703]: Combined703[K] }; +type NullableAll703 = { [K in keyof Combined703]: Combined703[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString703 = T extends string ? true : false; +type IsNumber703 = T extends number ? true : false; +type TypeName703 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames703 = { + [K in keyof BigRecord703]: TypeName703; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb703 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource703 = "user" | "post" | "comment" | "tag" | "category"; +type Action703 = `${Verb703}_${Resource703}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise703 = T extends Promise ? UnwrapPromise703 : T; +type UnwrapArray703 = T extends (infer U)[] ? UnwrapArray703 : T; +type Head703 = T extends [infer H, ...infer _] ? H : never; +type Tail703 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation703 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation703>] + : never; + +type SmallUnion703 = "a" | "b" | "c" | "d"; +type AllPerms703 = Permutation703; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig703, + Flat703, + FR703, + BigUnion703, + ExtractAlpha703, + ExcludeZulu703, + OptionalAll703, + RequiredAll703, + ReadonlyAll703, + NullableAll703, + TypeNames703, + Action703, + AllPerms703, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts new file mode 100644 index 00000000..27c93abe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-04 (seed 704) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord704 { + a704: { x: number; y: string; z: boolean }; + b704: { p: string[]; q: Record }; + c704: { nested: { deep: { deeper: { deepest: string } } } }; + d704: number; + e704: string; + f704: boolean; + g704: null; + h704: undefined; + i704: bigint; + j704: symbol; +} + +type PartialBig704 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten704 = T extends Array ? Flatten704 : T; +type Nested704 = number[][][][][][][][][][]; +type Flat704 = Flatten704; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly704 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly704 : T[K]; +}; +type DeepRequired704 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired704 : T[K]; +}; +type FR704 = DeepReadonly704>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion704 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha704 = Extract; +type ExcludeZulu704 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA704 { width: number; height: number; depth: number } +interface ShapeB704 { color: string; opacity: number; blend: string } +interface ShapeC704 { x: number; y: number; z: number; w: number } +interface ShapeD704 { label: string; title: string; summary: string } + +type Combined704 = ShapeA704 & ShapeB704 & ShapeC704 & ShapeD704; +type OptionalAll704 = { [K in keyof Combined704]?: Combined704[K] }; +type RequiredAll704 = { [K in keyof Combined704]-?: Combined704[K] }; +type ReadonlyAll704 = { readonly [K in keyof Combined704]: Combined704[K] }; +type NullableAll704 = { [K in keyof Combined704]: Combined704[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString704 = T extends string ? true : false; +type IsNumber704 = T extends number ? true : false; +type TypeName704 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames704 = { + [K in keyof BigRecord704]: TypeName704; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb704 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource704 = "user" | "post" | "comment" | "tag" | "category"; +type Action704 = `${Verb704}_${Resource704}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise704 = T extends Promise ? UnwrapPromise704 : T; +type UnwrapArray704 = T extends (infer U)[] ? UnwrapArray704 : T; +type Head704 = T extends [infer H, ...infer _] ? H : never; +type Tail704 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation704 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation704>] + : never; + +type SmallUnion704 = "a" | "b" | "c" | "d"; +type AllPerms704 = Permutation704; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig704, + Flat704, + FR704, + BigUnion704, + ExtractAlpha704, + ExcludeZulu704, + OptionalAll704, + RequiredAll704, + ReadonlyAll704, + NullableAll704, + TypeNames704, + Action704, + AllPerms704, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts new file mode 100644 index 00000000..95ab10ea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-05 (seed 705) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord705 { + a705: { x: number; y: string; z: boolean }; + b705: { p: string[]; q: Record }; + c705: { nested: { deep: { deeper: { deepest: string } } } }; + d705: number; + e705: string; + f705: boolean; + g705: null; + h705: undefined; + i705: bigint; + j705: symbol; +} + +type PartialBig705 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten705 = T extends Array ? Flatten705 : T; +type Nested705 = number[][][][][][][][][][]; +type Flat705 = Flatten705; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly705 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly705 : T[K]; +}; +type DeepRequired705 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired705 : T[K]; +}; +type FR705 = DeepReadonly705>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion705 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha705 = Extract; +type ExcludeZulu705 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA705 { width: number; height: number; depth: number } +interface ShapeB705 { color: string; opacity: number; blend: string } +interface ShapeC705 { x: number; y: number; z: number; w: number } +interface ShapeD705 { label: string; title: string; summary: string } + +type Combined705 = ShapeA705 & ShapeB705 & ShapeC705 & ShapeD705; +type OptionalAll705 = { [K in keyof Combined705]?: Combined705[K] }; +type RequiredAll705 = { [K in keyof Combined705]-?: Combined705[K] }; +type ReadonlyAll705 = { readonly [K in keyof Combined705]: Combined705[K] }; +type NullableAll705 = { [K in keyof Combined705]: Combined705[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString705 = T extends string ? true : false; +type IsNumber705 = T extends number ? true : false; +type TypeName705 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames705 = { + [K in keyof BigRecord705]: TypeName705; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb705 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource705 = "user" | "post" | "comment" | "tag" | "category"; +type Action705 = `${Verb705}_${Resource705}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise705 = T extends Promise ? UnwrapPromise705 : T; +type UnwrapArray705 = T extends (infer U)[] ? UnwrapArray705 : T; +type Head705 = T extends [infer H, ...infer _] ? H : never; +type Tail705 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation705 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation705>] + : never; + +type SmallUnion705 = "a" | "b" | "c" | "d"; +type AllPerms705 = Permutation705; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig705, + Flat705, + FR705, + BigUnion705, + ExtractAlpha705, + ExcludeZulu705, + OptionalAll705, + RequiredAll705, + ReadonlyAll705, + NullableAll705, + TypeNames705, + Action705, + AllPerms705, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts new file mode 100644 index 00000000..86b02f49 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-06 (seed 706) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord706 { + a706: { x: number; y: string; z: boolean }; + b706: { p: string[]; q: Record }; + c706: { nested: { deep: { deeper: { deepest: string } } } }; + d706: number; + e706: string; + f706: boolean; + g706: null; + h706: undefined; + i706: bigint; + j706: symbol; +} + +type PartialBig706 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten706 = T extends Array ? Flatten706 : T; +type Nested706 = number[][][][][][][][][][]; +type Flat706 = Flatten706; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly706 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly706 : T[K]; +}; +type DeepRequired706 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired706 : T[K]; +}; +type FR706 = DeepReadonly706>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion706 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha706 = Extract; +type ExcludeZulu706 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA706 { width: number; height: number; depth: number } +interface ShapeB706 { color: string; opacity: number; blend: string } +interface ShapeC706 { x: number; y: number; z: number; w: number } +interface ShapeD706 { label: string; title: string; summary: string } + +type Combined706 = ShapeA706 & ShapeB706 & ShapeC706 & ShapeD706; +type OptionalAll706 = { [K in keyof Combined706]?: Combined706[K] }; +type RequiredAll706 = { [K in keyof Combined706]-?: Combined706[K] }; +type ReadonlyAll706 = { readonly [K in keyof Combined706]: Combined706[K] }; +type NullableAll706 = { [K in keyof Combined706]: Combined706[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString706 = T extends string ? true : false; +type IsNumber706 = T extends number ? true : false; +type TypeName706 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames706 = { + [K in keyof BigRecord706]: TypeName706; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb706 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource706 = "user" | "post" | "comment" | "tag" | "category"; +type Action706 = `${Verb706}_${Resource706}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise706 = T extends Promise ? UnwrapPromise706 : T; +type UnwrapArray706 = T extends (infer U)[] ? UnwrapArray706 : T; +type Head706 = T extends [infer H, ...infer _] ? H : never; +type Tail706 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation706 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation706>] + : never; + +type SmallUnion706 = "a" | "b" | "c" | "d"; +type AllPerms706 = Permutation706; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig706, + Flat706, + FR706, + BigUnion706, + ExtractAlpha706, + ExcludeZulu706, + OptionalAll706, + RequiredAll706, + ReadonlyAll706, + NullableAll706, + TypeNames706, + Action706, + AllPerms706, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts new file mode 100644 index 00000000..19919a97 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-07 (seed 707) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord707 { + a707: { x: number; y: string; z: boolean }; + b707: { p: string[]; q: Record }; + c707: { nested: { deep: { deeper: { deepest: string } } } }; + d707: number; + e707: string; + f707: boolean; + g707: null; + h707: undefined; + i707: bigint; + j707: symbol; +} + +type PartialBig707 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten707 = T extends Array ? Flatten707 : T; +type Nested707 = number[][][][][][][][][][]; +type Flat707 = Flatten707; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly707 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly707 : T[K]; +}; +type DeepRequired707 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired707 : T[K]; +}; +type FR707 = DeepReadonly707>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion707 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha707 = Extract; +type ExcludeZulu707 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA707 { width: number; height: number; depth: number } +interface ShapeB707 { color: string; opacity: number; blend: string } +interface ShapeC707 { x: number; y: number; z: number; w: number } +interface ShapeD707 { label: string; title: string; summary: string } + +type Combined707 = ShapeA707 & ShapeB707 & ShapeC707 & ShapeD707; +type OptionalAll707 = { [K in keyof Combined707]?: Combined707[K] }; +type RequiredAll707 = { [K in keyof Combined707]-?: Combined707[K] }; +type ReadonlyAll707 = { readonly [K in keyof Combined707]: Combined707[K] }; +type NullableAll707 = { [K in keyof Combined707]: Combined707[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString707 = T extends string ? true : false; +type IsNumber707 = T extends number ? true : false; +type TypeName707 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames707 = { + [K in keyof BigRecord707]: TypeName707; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb707 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource707 = "user" | "post" | "comment" | "tag" | "category"; +type Action707 = `${Verb707}_${Resource707}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise707 = T extends Promise ? UnwrapPromise707 : T; +type UnwrapArray707 = T extends (infer U)[] ? UnwrapArray707 : T; +type Head707 = T extends [infer H, ...infer _] ? H : never; +type Tail707 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation707 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation707>] + : never; + +type SmallUnion707 = "a" | "b" | "c" | "d"; +type AllPerms707 = Permutation707; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig707, + Flat707, + FR707, + BigUnion707, + ExtractAlpha707, + ExcludeZulu707, + OptionalAll707, + RequiredAll707, + ReadonlyAll707, + NullableAll707, + TypeNames707, + Action707, + AllPerms707, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts new file mode 100644 index 00000000..cab86509 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-08 (seed 708) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord708 { + a708: { x: number; y: string; z: boolean }; + b708: { p: string[]; q: Record }; + c708: { nested: { deep: { deeper: { deepest: string } } } }; + d708: number; + e708: string; + f708: boolean; + g708: null; + h708: undefined; + i708: bigint; + j708: symbol; +} + +type PartialBig708 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten708 = T extends Array ? Flatten708 : T; +type Nested708 = number[][][][][][][][][][]; +type Flat708 = Flatten708; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly708 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly708 : T[K]; +}; +type DeepRequired708 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired708 : T[K]; +}; +type FR708 = DeepReadonly708>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion708 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha708 = Extract; +type ExcludeZulu708 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA708 { width: number; height: number; depth: number } +interface ShapeB708 { color: string; opacity: number; blend: string } +interface ShapeC708 { x: number; y: number; z: number; w: number } +interface ShapeD708 { label: string; title: string; summary: string } + +type Combined708 = ShapeA708 & ShapeB708 & ShapeC708 & ShapeD708; +type OptionalAll708 = { [K in keyof Combined708]?: Combined708[K] }; +type RequiredAll708 = { [K in keyof Combined708]-?: Combined708[K] }; +type ReadonlyAll708 = { readonly [K in keyof Combined708]: Combined708[K] }; +type NullableAll708 = { [K in keyof Combined708]: Combined708[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString708 = T extends string ? true : false; +type IsNumber708 = T extends number ? true : false; +type TypeName708 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames708 = { + [K in keyof BigRecord708]: TypeName708; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb708 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource708 = "user" | "post" | "comment" | "tag" | "category"; +type Action708 = `${Verb708}_${Resource708}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise708 = T extends Promise ? UnwrapPromise708 : T; +type UnwrapArray708 = T extends (infer U)[] ? UnwrapArray708 : T; +type Head708 = T extends [infer H, ...infer _] ? H : never; +type Tail708 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation708 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation708>] + : never; + +type SmallUnion708 = "a" | "b" | "c" | "d"; +type AllPerms708 = Permutation708; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig708, + Flat708, + FR708, + BigUnion708, + ExtractAlpha708, + ExcludeZulu708, + OptionalAll708, + RequiredAll708, + ReadonlyAll708, + NullableAll708, + TypeNames708, + Action708, + AllPerms708, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts new file mode 100644 index 00000000..dec24d10 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-09 (seed 709) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord709 { + a709: { x: number; y: string; z: boolean }; + b709: { p: string[]; q: Record }; + c709: { nested: { deep: { deeper: { deepest: string } } } }; + d709: number; + e709: string; + f709: boolean; + g709: null; + h709: undefined; + i709: bigint; + j709: symbol; +} + +type PartialBig709 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten709 = T extends Array ? Flatten709 : T; +type Nested709 = number[][][][][][][][][][]; +type Flat709 = Flatten709; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly709 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly709 : T[K]; +}; +type DeepRequired709 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired709 : T[K]; +}; +type FR709 = DeepReadonly709>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion709 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha709 = Extract; +type ExcludeZulu709 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA709 { width: number; height: number; depth: number } +interface ShapeB709 { color: string; opacity: number; blend: string } +interface ShapeC709 { x: number; y: number; z: number; w: number } +interface ShapeD709 { label: string; title: string; summary: string } + +type Combined709 = ShapeA709 & ShapeB709 & ShapeC709 & ShapeD709; +type OptionalAll709 = { [K in keyof Combined709]?: Combined709[K] }; +type RequiredAll709 = { [K in keyof Combined709]-?: Combined709[K] }; +type ReadonlyAll709 = { readonly [K in keyof Combined709]: Combined709[K] }; +type NullableAll709 = { [K in keyof Combined709]: Combined709[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString709 = T extends string ? true : false; +type IsNumber709 = T extends number ? true : false; +type TypeName709 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames709 = { + [K in keyof BigRecord709]: TypeName709; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb709 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource709 = "user" | "post" | "comment" | "tag" | "category"; +type Action709 = `${Verb709}_${Resource709}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise709 = T extends Promise ? UnwrapPromise709 : T; +type UnwrapArray709 = T extends (infer U)[] ? UnwrapArray709 : T; +type Head709 = T extends [infer H, ...infer _] ? H : never; +type Tail709 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation709 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation709>] + : never; + +type SmallUnion709 = "a" | "b" | "c" | "d"; +type AllPerms709 = Permutation709; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig709, + Flat709, + FR709, + BigUnion709, + ExtractAlpha709, + ExcludeZulu709, + OptionalAll709, + RequiredAll709, + ReadonlyAll709, + NullableAll709, + TypeNames709, + Action709, + AllPerms709, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts new file mode 100644 index 00000000..5b2eb287 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-10 (seed 710) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord710 { + a710: { x: number; y: string; z: boolean }; + b710: { p: string[]; q: Record }; + c710: { nested: { deep: { deeper: { deepest: string } } } }; + d710: number; + e710: string; + f710: boolean; + g710: null; + h710: undefined; + i710: bigint; + j710: symbol; +} + +type PartialBig710 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten710 = T extends Array ? Flatten710 : T; +type Nested710 = number[][][][][][][][][][]; +type Flat710 = Flatten710; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly710 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly710 : T[K]; +}; +type DeepRequired710 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired710 : T[K]; +}; +type FR710 = DeepReadonly710>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion710 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha710 = Extract; +type ExcludeZulu710 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA710 { width: number; height: number; depth: number } +interface ShapeB710 { color: string; opacity: number; blend: string } +interface ShapeC710 { x: number; y: number; z: number; w: number } +interface ShapeD710 { label: string; title: string; summary: string } + +type Combined710 = ShapeA710 & ShapeB710 & ShapeC710 & ShapeD710; +type OptionalAll710 = { [K in keyof Combined710]?: Combined710[K] }; +type RequiredAll710 = { [K in keyof Combined710]-?: Combined710[K] }; +type ReadonlyAll710 = { readonly [K in keyof Combined710]: Combined710[K] }; +type NullableAll710 = { [K in keyof Combined710]: Combined710[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString710 = T extends string ? true : false; +type IsNumber710 = T extends number ? true : false; +type TypeName710 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames710 = { + [K in keyof BigRecord710]: TypeName710; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb710 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource710 = "user" | "post" | "comment" | "tag" | "category"; +type Action710 = `${Verb710}_${Resource710}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise710 = T extends Promise ? UnwrapPromise710 : T; +type UnwrapArray710 = T extends (infer U)[] ? UnwrapArray710 : T; +type Head710 = T extends [infer H, ...infer _] ? H : never; +type Tail710 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation710 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation710>] + : never; + +type SmallUnion710 = "a" | "b" | "c" | "d"; +type AllPerms710 = Permutation710; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig710, + Flat710, + FR710, + BigUnion710, + ExtractAlpha710, + ExcludeZulu710, + OptionalAll710, + RequiredAll710, + ReadonlyAll710, + NullableAll710, + TypeNames710, + Action710, + AllPerms710, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts new file mode 100644 index 00000000..7ea13a7f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-11 (seed 711) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord711 { + a711: { x: number; y: string; z: boolean }; + b711: { p: string[]; q: Record }; + c711: { nested: { deep: { deeper: { deepest: string } } } }; + d711: number; + e711: string; + f711: boolean; + g711: null; + h711: undefined; + i711: bigint; + j711: symbol; +} + +type PartialBig711 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten711 = T extends Array ? Flatten711 : T; +type Nested711 = number[][][][][][][][][][]; +type Flat711 = Flatten711; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly711 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly711 : T[K]; +}; +type DeepRequired711 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired711 : T[K]; +}; +type FR711 = DeepReadonly711>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion711 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha711 = Extract; +type ExcludeZulu711 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA711 { width: number; height: number; depth: number } +interface ShapeB711 { color: string; opacity: number; blend: string } +interface ShapeC711 { x: number; y: number; z: number; w: number } +interface ShapeD711 { label: string; title: string; summary: string } + +type Combined711 = ShapeA711 & ShapeB711 & ShapeC711 & ShapeD711; +type OptionalAll711 = { [K in keyof Combined711]?: Combined711[K] }; +type RequiredAll711 = { [K in keyof Combined711]-?: Combined711[K] }; +type ReadonlyAll711 = { readonly [K in keyof Combined711]: Combined711[K] }; +type NullableAll711 = { [K in keyof Combined711]: Combined711[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString711 = T extends string ? true : false; +type IsNumber711 = T extends number ? true : false; +type TypeName711 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames711 = { + [K in keyof BigRecord711]: TypeName711; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb711 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource711 = "user" | "post" | "comment" | "tag" | "category"; +type Action711 = `${Verb711}_${Resource711}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise711 = T extends Promise ? UnwrapPromise711 : T; +type UnwrapArray711 = T extends (infer U)[] ? UnwrapArray711 : T; +type Head711 = T extends [infer H, ...infer _] ? H : never; +type Tail711 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation711 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation711>] + : never; + +type SmallUnion711 = "a" | "b" | "c" | "d"; +type AllPerms711 = Permutation711; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig711, + Flat711, + FR711, + BigUnion711, + ExtractAlpha711, + ExcludeZulu711, + OptionalAll711, + RequiredAll711, + ReadonlyAll711, + NullableAll711, + TypeNames711, + Action711, + AllPerms711, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts new file mode 100644 index 00000000..1c477aea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-12 (seed 712) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord712 { + a712: { x: number; y: string; z: boolean }; + b712: { p: string[]; q: Record }; + c712: { nested: { deep: { deeper: { deepest: string } } } }; + d712: number; + e712: string; + f712: boolean; + g712: null; + h712: undefined; + i712: bigint; + j712: symbol; +} + +type PartialBig712 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten712 = T extends Array ? Flatten712 : T; +type Nested712 = number[][][][][][][][][][]; +type Flat712 = Flatten712; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly712 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly712 : T[K]; +}; +type DeepRequired712 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired712 : T[K]; +}; +type FR712 = DeepReadonly712>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion712 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha712 = Extract; +type ExcludeZulu712 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA712 { width: number; height: number; depth: number } +interface ShapeB712 { color: string; opacity: number; blend: string } +interface ShapeC712 { x: number; y: number; z: number; w: number } +interface ShapeD712 { label: string; title: string; summary: string } + +type Combined712 = ShapeA712 & ShapeB712 & ShapeC712 & ShapeD712; +type OptionalAll712 = { [K in keyof Combined712]?: Combined712[K] }; +type RequiredAll712 = { [K in keyof Combined712]-?: Combined712[K] }; +type ReadonlyAll712 = { readonly [K in keyof Combined712]: Combined712[K] }; +type NullableAll712 = { [K in keyof Combined712]: Combined712[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString712 = T extends string ? true : false; +type IsNumber712 = T extends number ? true : false; +type TypeName712 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames712 = { + [K in keyof BigRecord712]: TypeName712; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb712 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource712 = "user" | "post" | "comment" | "tag" | "category"; +type Action712 = `${Verb712}_${Resource712}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise712 = T extends Promise ? UnwrapPromise712 : T; +type UnwrapArray712 = T extends (infer U)[] ? UnwrapArray712 : T; +type Head712 = T extends [infer H, ...infer _] ? H : never; +type Tail712 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation712 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation712>] + : never; + +type SmallUnion712 = "a" | "b" | "c" | "d"; +type AllPerms712 = Permutation712; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig712, + Flat712, + FR712, + BigUnion712, + ExtractAlpha712, + ExcludeZulu712, + OptionalAll712, + RequiredAll712, + ReadonlyAll712, + NullableAll712, + TypeNames712, + Action712, + AllPerms712, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts new file mode 100644 index 00000000..c4f05437 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-13 (seed 713) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord713 { + a713: { x: number; y: string; z: boolean }; + b713: { p: string[]; q: Record }; + c713: { nested: { deep: { deeper: { deepest: string } } } }; + d713: number; + e713: string; + f713: boolean; + g713: null; + h713: undefined; + i713: bigint; + j713: symbol; +} + +type PartialBig713 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten713 = T extends Array ? Flatten713 : T; +type Nested713 = number[][][][][][][][][][]; +type Flat713 = Flatten713; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly713 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly713 : T[K]; +}; +type DeepRequired713 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired713 : T[K]; +}; +type FR713 = DeepReadonly713>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion713 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha713 = Extract; +type ExcludeZulu713 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA713 { width: number; height: number; depth: number } +interface ShapeB713 { color: string; opacity: number; blend: string } +interface ShapeC713 { x: number; y: number; z: number; w: number } +interface ShapeD713 { label: string; title: string; summary: string } + +type Combined713 = ShapeA713 & ShapeB713 & ShapeC713 & ShapeD713; +type OptionalAll713 = { [K in keyof Combined713]?: Combined713[K] }; +type RequiredAll713 = { [K in keyof Combined713]-?: Combined713[K] }; +type ReadonlyAll713 = { readonly [K in keyof Combined713]: Combined713[K] }; +type NullableAll713 = { [K in keyof Combined713]: Combined713[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString713 = T extends string ? true : false; +type IsNumber713 = T extends number ? true : false; +type TypeName713 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames713 = { + [K in keyof BigRecord713]: TypeName713; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb713 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource713 = "user" | "post" | "comment" | "tag" | "category"; +type Action713 = `${Verb713}_${Resource713}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise713 = T extends Promise ? UnwrapPromise713 : T; +type UnwrapArray713 = T extends (infer U)[] ? UnwrapArray713 : T; +type Head713 = T extends [infer H, ...infer _] ? H : never; +type Tail713 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation713 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation713>] + : never; + +type SmallUnion713 = "a" | "b" | "c" | "d"; +type AllPerms713 = Permutation713; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig713, + Flat713, + FR713, + BigUnion713, + ExtractAlpha713, + ExcludeZulu713, + OptionalAll713, + RequiredAll713, + ReadonlyAll713, + NullableAll713, + TypeNames713, + Action713, + AllPerms713, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts new file mode 100644 index 00000000..6bce5f46 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-14 (seed 714) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord714 { + a714: { x: number; y: string; z: boolean }; + b714: { p: string[]; q: Record }; + c714: { nested: { deep: { deeper: { deepest: string } } } }; + d714: number; + e714: string; + f714: boolean; + g714: null; + h714: undefined; + i714: bigint; + j714: symbol; +} + +type PartialBig714 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten714 = T extends Array ? Flatten714 : T; +type Nested714 = number[][][][][][][][][][]; +type Flat714 = Flatten714; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly714 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly714 : T[K]; +}; +type DeepRequired714 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired714 : T[K]; +}; +type FR714 = DeepReadonly714>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion714 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha714 = Extract; +type ExcludeZulu714 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA714 { width: number; height: number; depth: number } +interface ShapeB714 { color: string; opacity: number; blend: string } +interface ShapeC714 { x: number; y: number; z: number; w: number } +interface ShapeD714 { label: string; title: string; summary: string } + +type Combined714 = ShapeA714 & ShapeB714 & ShapeC714 & ShapeD714; +type OptionalAll714 = { [K in keyof Combined714]?: Combined714[K] }; +type RequiredAll714 = { [K in keyof Combined714]-?: Combined714[K] }; +type ReadonlyAll714 = { readonly [K in keyof Combined714]: Combined714[K] }; +type NullableAll714 = { [K in keyof Combined714]: Combined714[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString714 = T extends string ? true : false; +type IsNumber714 = T extends number ? true : false; +type TypeName714 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames714 = { + [K in keyof BigRecord714]: TypeName714; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb714 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource714 = "user" | "post" | "comment" | "tag" | "category"; +type Action714 = `${Verb714}_${Resource714}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise714 = T extends Promise ? UnwrapPromise714 : T; +type UnwrapArray714 = T extends (infer U)[] ? UnwrapArray714 : T; +type Head714 = T extends [infer H, ...infer _] ? H : never; +type Tail714 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation714 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation714>] + : never; + +type SmallUnion714 = "a" | "b" | "c" | "d"; +type AllPerms714 = Permutation714; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig714, + Flat714, + FR714, + BigUnion714, + ExtractAlpha714, + ExcludeZulu714, + OptionalAll714, + RequiredAll714, + ReadonlyAll714, + NullableAll714, + TypeNames714, + Action714, + AllPerms714, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts new file mode 100644 index 00000000..3df9be6b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-15 (seed 715) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord715 { + a715: { x: number; y: string; z: boolean }; + b715: { p: string[]; q: Record }; + c715: { nested: { deep: { deeper: { deepest: string } } } }; + d715: number; + e715: string; + f715: boolean; + g715: null; + h715: undefined; + i715: bigint; + j715: symbol; +} + +type PartialBig715 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten715 = T extends Array ? Flatten715 : T; +type Nested715 = number[][][][][][][][][][]; +type Flat715 = Flatten715; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly715 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly715 : T[K]; +}; +type DeepRequired715 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired715 : T[K]; +}; +type FR715 = DeepReadonly715>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion715 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha715 = Extract; +type ExcludeZulu715 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA715 { width: number; height: number; depth: number } +interface ShapeB715 { color: string; opacity: number; blend: string } +interface ShapeC715 { x: number; y: number; z: number; w: number } +interface ShapeD715 { label: string; title: string; summary: string } + +type Combined715 = ShapeA715 & ShapeB715 & ShapeC715 & ShapeD715; +type OptionalAll715 = { [K in keyof Combined715]?: Combined715[K] }; +type RequiredAll715 = { [K in keyof Combined715]-?: Combined715[K] }; +type ReadonlyAll715 = { readonly [K in keyof Combined715]: Combined715[K] }; +type NullableAll715 = { [K in keyof Combined715]: Combined715[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString715 = T extends string ? true : false; +type IsNumber715 = T extends number ? true : false; +type TypeName715 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames715 = { + [K in keyof BigRecord715]: TypeName715; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb715 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource715 = "user" | "post" | "comment" | "tag" | "category"; +type Action715 = `${Verb715}_${Resource715}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise715 = T extends Promise ? UnwrapPromise715 : T; +type UnwrapArray715 = T extends (infer U)[] ? UnwrapArray715 : T; +type Head715 = T extends [infer H, ...infer _] ? H : never; +type Tail715 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation715 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation715>] + : never; + +type SmallUnion715 = "a" | "b" | "c" | "d"; +type AllPerms715 = Permutation715; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig715, + Flat715, + FR715, + BigUnion715, + ExtractAlpha715, + ExcludeZulu715, + OptionalAll715, + RequiredAll715, + ReadonlyAll715, + NullableAll715, + TypeNames715, + Action715, + AllPerms715, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts new file mode 100644 index 00000000..d02729bb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-16 (seed 716) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord716 { + a716: { x: number; y: string; z: boolean }; + b716: { p: string[]; q: Record }; + c716: { nested: { deep: { deeper: { deepest: string } } } }; + d716: number; + e716: string; + f716: boolean; + g716: null; + h716: undefined; + i716: bigint; + j716: symbol; +} + +type PartialBig716 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten716 = T extends Array ? Flatten716 : T; +type Nested716 = number[][][][][][][][][][]; +type Flat716 = Flatten716; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly716 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly716 : T[K]; +}; +type DeepRequired716 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired716 : T[K]; +}; +type FR716 = DeepReadonly716>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion716 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha716 = Extract; +type ExcludeZulu716 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA716 { width: number; height: number; depth: number } +interface ShapeB716 { color: string; opacity: number; blend: string } +interface ShapeC716 { x: number; y: number; z: number; w: number } +interface ShapeD716 { label: string; title: string; summary: string } + +type Combined716 = ShapeA716 & ShapeB716 & ShapeC716 & ShapeD716; +type OptionalAll716 = { [K in keyof Combined716]?: Combined716[K] }; +type RequiredAll716 = { [K in keyof Combined716]-?: Combined716[K] }; +type ReadonlyAll716 = { readonly [K in keyof Combined716]: Combined716[K] }; +type NullableAll716 = { [K in keyof Combined716]: Combined716[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString716 = T extends string ? true : false; +type IsNumber716 = T extends number ? true : false; +type TypeName716 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames716 = { + [K in keyof BigRecord716]: TypeName716; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb716 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource716 = "user" | "post" | "comment" | "tag" | "category"; +type Action716 = `${Verb716}_${Resource716}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise716 = T extends Promise ? UnwrapPromise716 : T; +type UnwrapArray716 = T extends (infer U)[] ? UnwrapArray716 : T; +type Head716 = T extends [infer H, ...infer _] ? H : never; +type Tail716 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation716 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation716>] + : never; + +type SmallUnion716 = "a" | "b" | "c" | "d"; +type AllPerms716 = Permutation716; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig716, + Flat716, + FR716, + BigUnion716, + ExtractAlpha716, + ExcludeZulu716, + OptionalAll716, + RequiredAll716, + ReadonlyAll716, + NullableAll716, + TypeNames716, + Action716, + AllPerms716, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts new file mode 100644 index 00000000..788ba102 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-17 (seed 717) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord717 { + a717: { x: number; y: string; z: boolean }; + b717: { p: string[]; q: Record }; + c717: { nested: { deep: { deeper: { deepest: string } } } }; + d717: number; + e717: string; + f717: boolean; + g717: null; + h717: undefined; + i717: bigint; + j717: symbol; +} + +type PartialBig717 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten717 = T extends Array ? Flatten717 : T; +type Nested717 = number[][][][][][][][][][]; +type Flat717 = Flatten717; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly717 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly717 : T[K]; +}; +type DeepRequired717 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired717 : T[K]; +}; +type FR717 = DeepReadonly717>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion717 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha717 = Extract; +type ExcludeZulu717 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA717 { width: number; height: number; depth: number } +interface ShapeB717 { color: string; opacity: number; blend: string } +interface ShapeC717 { x: number; y: number; z: number; w: number } +interface ShapeD717 { label: string; title: string; summary: string } + +type Combined717 = ShapeA717 & ShapeB717 & ShapeC717 & ShapeD717; +type OptionalAll717 = { [K in keyof Combined717]?: Combined717[K] }; +type RequiredAll717 = { [K in keyof Combined717]-?: Combined717[K] }; +type ReadonlyAll717 = { readonly [K in keyof Combined717]: Combined717[K] }; +type NullableAll717 = { [K in keyof Combined717]: Combined717[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString717 = T extends string ? true : false; +type IsNumber717 = T extends number ? true : false; +type TypeName717 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames717 = { + [K in keyof BigRecord717]: TypeName717; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb717 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource717 = "user" | "post" | "comment" | "tag" | "category"; +type Action717 = `${Verb717}_${Resource717}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise717 = T extends Promise ? UnwrapPromise717 : T; +type UnwrapArray717 = T extends (infer U)[] ? UnwrapArray717 : T; +type Head717 = T extends [infer H, ...infer _] ? H : never; +type Tail717 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation717 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation717>] + : never; + +type SmallUnion717 = "a" | "b" | "c" | "d"; +type AllPerms717 = Permutation717; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig717, + Flat717, + FR717, + BigUnion717, + ExtractAlpha717, + ExcludeZulu717, + OptionalAll717, + RequiredAll717, + ReadonlyAll717, + NullableAll717, + TypeNames717, + Action717, + AllPerms717, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts new file mode 100644 index 00000000..994605cc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-18 (seed 718) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord718 { + a718: { x: number; y: string; z: boolean }; + b718: { p: string[]; q: Record }; + c718: { nested: { deep: { deeper: { deepest: string } } } }; + d718: number; + e718: string; + f718: boolean; + g718: null; + h718: undefined; + i718: bigint; + j718: symbol; +} + +type PartialBig718 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten718 = T extends Array ? Flatten718 : T; +type Nested718 = number[][][][][][][][][][]; +type Flat718 = Flatten718; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly718 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly718 : T[K]; +}; +type DeepRequired718 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired718 : T[K]; +}; +type FR718 = DeepReadonly718>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion718 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha718 = Extract; +type ExcludeZulu718 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA718 { width: number; height: number; depth: number } +interface ShapeB718 { color: string; opacity: number; blend: string } +interface ShapeC718 { x: number; y: number; z: number; w: number } +interface ShapeD718 { label: string; title: string; summary: string } + +type Combined718 = ShapeA718 & ShapeB718 & ShapeC718 & ShapeD718; +type OptionalAll718 = { [K in keyof Combined718]?: Combined718[K] }; +type RequiredAll718 = { [K in keyof Combined718]-?: Combined718[K] }; +type ReadonlyAll718 = { readonly [K in keyof Combined718]: Combined718[K] }; +type NullableAll718 = { [K in keyof Combined718]: Combined718[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString718 = T extends string ? true : false; +type IsNumber718 = T extends number ? true : false; +type TypeName718 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames718 = { + [K in keyof BigRecord718]: TypeName718; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb718 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource718 = "user" | "post" | "comment" | "tag" | "category"; +type Action718 = `${Verb718}_${Resource718}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise718 = T extends Promise ? UnwrapPromise718 : T; +type UnwrapArray718 = T extends (infer U)[] ? UnwrapArray718 : T; +type Head718 = T extends [infer H, ...infer _] ? H : never; +type Tail718 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation718 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation718>] + : never; + +type SmallUnion718 = "a" | "b" | "c" | "d"; +type AllPerms718 = Permutation718; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig718, + Flat718, + FR718, + BigUnion718, + ExtractAlpha718, + ExcludeZulu718, + OptionalAll718, + RequiredAll718, + ReadonlyAll718, + NullableAll718, + TypeNames718, + Action718, + AllPerms718, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts new file mode 100644 index 00000000..32b4ea6f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-19 (seed 719) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord719 { + a719: { x: number; y: string; z: boolean }; + b719: { p: string[]; q: Record }; + c719: { nested: { deep: { deeper: { deepest: string } } } }; + d719: number; + e719: string; + f719: boolean; + g719: null; + h719: undefined; + i719: bigint; + j719: symbol; +} + +type PartialBig719 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten719 = T extends Array ? Flatten719 : T; +type Nested719 = number[][][][][][][][][][]; +type Flat719 = Flatten719; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly719 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly719 : T[K]; +}; +type DeepRequired719 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired719 : T[K]; +}; +type FR719 = DeepReadonly719>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion719 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha719 = Extract; +type ExcludeZulu719 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA719 { width: number; height: number; depth: number } +interface ShapeB719 { color: string; opacity: number; blend: string } +interface ShapeC719 { x: number; y: number; z: number; w: number } +interface ShapeD719 { label: string; title: string; summary: string } + +type Combined719 = ShapeA719 & ShapeB719 & ShapeC719 & ShapeD719; +type OptionalAll719 = { [K in keyof Combined719]?: Combined719[K] }; +type RequiredAll719 = { [K in keyof Combined719]-?: Combined719[K] }; +type ReadonlyAll719 = { readonly [K in keyof Combined719]: Combined719[K] }; +type NullableAll719 = { [K in keyof Combined719]: Combined719[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString719 = T extends string ? true : false; +type IsNumber719 = T extends number ? true : false; +type TypeName719 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames719 = { + [K in keyof BigRecord719]: TypeName719; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb719 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource719 = "user" | "post" | "comment" | "tag" | "category"; +type Action719 = `${Verb719}_${Resource719}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise719 = T extends Promise ? UnwrapPromise719 : T; +type UnwrapArray719 = T extends (infer U)[] ? UnwrapArray719 : T; +type Head719 = T extends [infer H, ...infer _] ? H : never; +type Tail719 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation719 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation719>] + : never; + +type SmallUnion719 = "a" | "b" | "c" | "d"; +type AllPerms719 = Permutation719; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig719, + Flat719, + FR719, + BigUnion719, + ExtractAlpha719, + ExcludeZulu719, + OptionalAll719, + RequiredAll719, + ReadonlyAll719, + NullableAll719, + TypeNames719, + Action719, + AllPerms719, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts new file mode 100644 index 00000000..7be64b85 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-20 (seed 720) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord720 { + a720: { x: number; y: string; z: boolean }; + b720: { p: string[]; q: Record }; + c720: { nested: { deep: { deeper: { deepest: string } } } }; + d720: number; + e720: string; + f720: boolean; + g720: null; + h720: undefined; + i720: bigint; + j720: symbol; +} + +type PartialBig720 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten720 = T extends Array ? Flatten720 : T; +type Nested720 = number[][][][][][][][][][]; +type Flat720 = Flatten720; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly720 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly720 : T[K]; +}; +type DeepRequired720 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired720 : T[K]; +}; +type FR720 = DeepReadonly720>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion720 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha720 = Extract; +type ExcludeZulu720 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA720 { width: number; height: number; depth: number } +interface ShapeB720 { color: string; opacity: number; blend: string } +interface ShapeC720 { x: number; y: number; z: number; w: number } +interface ShapeD720 { label: string; title: string; summary: string } + +type Combined720 = ShapeA720 & ShapeB720 & ShapeC720 & ShapeD720; +type OptionalAll720 = { [K in keyof Combined720]?: Combined720[K] }; +type RequiredAll720 = { [K in keyof Combined720]-?: Combined720[K] }; +type ReadonlyAll720 = { readonly [K in keyof Combined720]: Combined720[K] }; +type NullableAll720 = { [K in keyof Combined720]: Combined720[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString720 = T extends string ? true : false; +type IsNumber720 = T extends number ? true : false; +type TypeName720 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames720 = { + [K in keyof BigRecord720]: TypeName720; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb720 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource720 = "user" | "post" | "comment" | "tag" | "category"; +type Action720 = `${Verb720}_${Resource720}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise720 = T extends Promise ? UnwrapPromise720 : T; +type UnwrapArray720 = T extends (infer U)[] ? UnwrapArray720 : T; +type Head720 = T extends [infer H, ...infer _] ? H : never; +type Tail720 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation720 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation720>] + : never; + +type SmallUnion720 = "a" | "b" | "c" | "d"; +type AllPerms720 = Permutation720; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig720, + Flat720, + FR720, + BigUnion720, + ExtractAlpha720, + ExcludeZulu720, + OptionalAll720, + RequiredAll720, + ReadonlyAll720, + NullableAll720, + TypeNames720, + Action720, + AllPerms720, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts new file mode 100644 index 00000000..18b4dde7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-21 (seed 721) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord721 { + a721: { x: number; y: string; z: boolean }; + b721: { p: string[]; q: Record }; + c721: { nested: { deep: { deeper: { deepest: string } } } }; + d721: number; + e721: string; + f721: boolean; + g721: null; + h721: undefined; + i721: bigint; + j721: symbol; +} + +type PartialBig721 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten721 = T extends Array ? Flatten721 : T; +type Nested721 = number[][][][][][][][][][]; +type Flat721 = Flatten721; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly721 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly721 : T[K]; +}; +type DeepRequired721 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired721 : T[K]; +}; +type FR721 = DeepReadonly721>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion721 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha721 = Extract; +type ExcludeZulu721 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA721 { width: number; height: number; depth: number } +interface ShapeB721 { color: string; opacity: number; blend: string } +interface ShapeC721 { x: number; y: number; z: number; w: number } +interface ShapeD721 { label: string; title: string; summary: string } + +type Combined721 = ShapeA721 & ShapeB721 & ShapeC721 & ShapeD721; +type OptionalAll721 = { [K in keyof Combined721]?: Combined721[K] }; +type RequiredAll721 = { [K in keyof Combined721]-?: Combined721[K] }; +type ReadonlyAll721 = { readonly [K in keyof Combined721]: Combined721[K] }; +type NullableAll721 = { [K in keyof Combined721]: Combined721[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString721 = T extends string ? true : false; +type IsNumber721 = T extends number ? true : false; +type TypeName721 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames721 = { + [K in keyof BigRecord721]: TypeName721; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb721 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource721 = "user" | "post" | "comment" | "tag" | "category"; +type Action721 = `${Verb721}_${Resource721}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise721 = T extends Promise ? UnwrapPromise721 : T; +type UnwrapArray721 = T extends (infer U)[] ? UnwrapArray721 : T; +type Head721 = T extends [infer H, ...infer _] ? H : never; +type Tail721 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation721 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation721>] + : never; + +type SmallUnion721 = "a" | "b" | "c" | "d"; +type AllPerms721 = Permutation721; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig721, + Flat721, + FR721, + BigUnion721, + ExtractAlpha721, + ExcludeZulu721, + OptionalAll721, + RequiredAll721, + ReadonlyAll721, + NullableAll721, + TypeNames721, + Action721, + AllPerms721, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts new file mode 100644 index 00000000..6958c5d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-22 (seed 722) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord722 { + a722: { x: number; y: string; z: boolean }; + b722: { p: string[]; q: Record }; + c722: { nested: { deep: { deeper: { deepest: string } } } }; + d722: number; + e722: string; + f722: boolean; + g722: null; + h722: undefined; + i722: bigint; + j722: symbol; +} + +type PartialBig722 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten722 = T extends Array ? Flatten722 : T; +type Nested722 = number[][][][][][][][][][]; +type Flat722 = Flatten722; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly722 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly722 : T[K]; +}; +type DeepRequired722 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired722 : T[K]; +}; +type FR722 = DeepReadonly722>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion722 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha722 = Extract; +type ExcludeZulu722 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA722 { width: number; height: number; depth: number } +interface ShapeB722 { color: string; opacity: number; blend: string } +interface ShapeC722 { x: number; y: number; z: number; w: number } +interface ShapeD722 { label: string; title: string; summary: string } + +type Combined722 = ShapeA722 & ShapeB722 & ShapeC722 & ShapeD722; +type OptionalAll722 = { [K in keyof Combined722]?: Combined722[K] }; +type RequiredAll722 = { [K in keyof Combined722]-?: Combined722[K] }; +type ReadonlyAll722 = { readonly [K in keyof Combined722]: Combined722[K] }; +type NullableAll722 = { [K in keyof Combined722]: Combined722[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString722 = T extends string ? true : false; +type IsNumber722 = T extends number ? true : false; +type TypeName722 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames722 = { + [K in keyof BigRecord722]: TypeName722; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb722 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource722 = "user" | "post" | "comment" | "tag" | "category"; +type Action722 = `${Verb722}_${Resource722}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise722 = T extends Promise ? UnwrapPromise722 : T; +type UnwrapArray722 = T extends (infer U)[] ? UnwrapArray722 : T; +type Head722 = T extends [infer H, ...infer _] ? H : never; +type Tail722 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation722 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation722>] + : never; + +type SmallUnion722 = "a" | "b" | "c" | "d"; +type AllPerms722 = Permutation722; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig722, + Flat722, + FR722, + BigUnion722, + ExtractAlpha722, + ExcludeZulu722, + OptionalAll722, + RequiredAll722, + ReadonlyAll722, + NullableAll722, + TypeNames722, + Action722, + AllPerms722, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts new file mode 100644 index 00000000..f42bda19 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-23 (seed 723) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord723 { + a723: { x: number; y: string; z: boolean }; + b723: { p: string[]; q: Record }; + c723: { nested: { deep: { deeper: { deepest: string } } } }; + d723: number; + e723: string; + f723: boolean; + g723: null; + h723: undefined; + i723: bigint; + j723: symbol; +} + +type PartialBig723 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten723 = T extends Array ? Flatten723 : T; +type Nested723 = number[][][][][][][][][][]; +type Flat723 = Flatten723; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly723 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly723 : T[K]; +}; +type DeepRequired723 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired723 : T[K]; +}; +type FR723 = DeepReadonly723>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion723 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha723 = Extract; +type ExcludeZulu723 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA723 { width: number; height: number; depth: number } +interface ShapeB723 { color: string; opacity: number; blend: string } +interface ShapeC723 { x: number; y: number; z: number; w: number } +interface ShapeD723 { label: string; title: string; summary: string } + +type Combined723 = ShapeA723 & ShapeB723 & ShapeC723 & ShapeD723; +type OptionalAll723 = { [K in keyof Combined723]?: Combined723[K] }; +type RequiredAll723 = { [K in keyof Combined723]-?: Combined723[K] }; +type ReadonlyAll723 = { readonly [K in keyof Combined723]: Combined723[K] }; +type NullableAll723 = { [K in keyof Combined723]: Combined723[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString723 = T extends string ? true : false; +type IsNumber723 = T extends number ? true : false; +type TypeName723 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames723 = { + [K in keyof BigRecord723]: TypeName723; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb723 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource723 = "user" | "post" | "comment" | "tag" | "category"; +type Action723 = `${Verb723}_${Resource723}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise723 = T extends Promise ? UnwrapPromise723 : T; +type UnwrapArray723 = T extends (infer U)[] ? UnwrapArray723 : T; +type Head723 = T extends [infer H, ...infer _] ? H : never; +type Tail723 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation723 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation723>] + : never; + +type SmallUnion723 = "a" | "b" | "c" | "d"; +type AllPerms723 = Permutation723; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig723, + Flat723, + FR723, + BigUnion723, + ExtractAlpha723, + ExcludeZulu723, + OptionalAll723, + RequiredAll723, + ReadonlyAll723, + NullableAll723, + TypeNames723, + Action723, + AllPerms723, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts new file mode 100644 index 00000000..91a9c85e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-24 (seed 724) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord724 { + a724: { x: number; y: string; z: boolean }; + b724: { p: string[]; q: Record }; + c724: { nested: { deep: { deeper: { deepest: string } } } }; + d724: number; + e724: string; + f724: boolean; + g724: null; + h724: undefined; + i724: bigint; + j724: symbol; +} + +type PartialBig724 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten724 = T extends Array ? Flatten724 : T; +type Nested724 = number[][][][][][][][][][]; +type Flat724 = Flatten724; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly724 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly724 : T[K]; +}; +type DeepRequired724 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired724 : T[K]; +}; +type FR724 = DeepReadonly724>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion724 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha724 = Extract; +type ExcludeZulu724 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA724 { width: number; height: number; depth: number } +interface ShapeB724 { color: string; opacity: number; blend: string } +interface ShapeC724 { x: number; y: number; z: number; w: number } +interface ShapeD724 { label: string; title: string; summary: string } + +type Combined724 = ShapeA724 & ShapeB724 & ShapeC724 & ShapeD724; +type OptionalAll724 = { [K in keyof Combined724]?: Combined724[K] }; +type RequiredAll724 = { [K in keyof Combined724]-?: Combined724[K] }; +type ReadonlyAll724 = { readonly [K in keyof Combined724]: Combined724[K] }; +type NullableAll724 = { [K in keyof Combined724]: Combined724[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString724 = T extends string ? true : false; +type IsNumber724 = T extends number ? true : false; +type TypeName724 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames724 = { + [K in keyof BigRecord724]: TypeName724; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb724 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource724 = "user" | "post" | "comment" | "tag" | "category"; +type Action724 = `${Verb724}_${Resource724}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise724 = T extends Promise ? UnwrapPromise724 : T; +type UnwrapArray724 = T extends (infer U)[] ? UnwrapArray724 : T; +type Head724 = T extends [infer H, ...infer _] ? H : never; +type Tail724 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation724 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation724>] + : never; + +type SmallUnion724 = "a" | "b" | "c" | "d"; +type AllPerms724 = Permutation724; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig724, + Flat724, + FR724, + BigUnion724, + ExtractAlpha724, + ExcludeZulu724, + OptionalAll724, + RequiredAll724, + ReadonlyAll724, + NullableAll724, + TypeNames724, + Action724, + AllPerms724, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts new file mode 100644 index 00000000..8f520f71 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-25 (seed 725) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord725 { + a725: { x: number; y: string; z: boolean }; + b725: { p: string[]; q: Record }; + c725: { nested: { deep: { deeper: { deepest: string } } } }; + d725: number; + e725: string; + f725: boolean; + g725: null; + h725: undefined; + i725: bigint; + j725: symbol; +} + +type PartialBig725 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten725 = T extends Array ? Flatten725 : T; +type Nested725 = number[][][][][][][][][][]; +type Flat725 = Flatten725; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly725 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly725 : T[K]; +}; +type DeepRequired725 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired725 : T[K]; +}; +type FR725 = DeepReadonly725>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion725 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha725 = Extract; +type ExcludeZulu725 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA725 { width: number; height: number; depth: number } +interface ShapeB725 { color: string; opacity: number; blend: string } +interface ShapeC725 { x: number; y: number; z: number; w: number } +interface ShapeD725 { label: string; title: string; summary: string } + +type Combined725 = ShapeA725 & ShapeB725 & ShapeC725 & ShapeD725; +type OptionalAll725 = { [K in keyof Combined725]?: Combined725[K] }; +type RequiredAll725 = { [K in keyof Combined725]-?: Combined725[K] }; +type ReadonlyAll725 = { readonly [K in keyof Combined725]: Combined725[K] }; +type NullableAll725 = { [K in keyof Combined725]: Combined725[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString725 = T extends string ? true : false; +type IsNumber725 = T extends number ? true : false; +type TypeName725 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames725 = { + [K in keyof BigRecord725]: TypeName725; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb725 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource725 = "user" | "post" | "comment" | "tag" | "category"; +type Action725 = `${Verb725}_${Resource725}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise725 = T extends Promise ? UnwrapPromise725 : T; +type UnwrapArray725 = T extends (infer U)[] ? UnwrapArray725 : T; +type Head725 = T extends [infer H, ...infer _] ? H : never; +type Tail725 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation725 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation725>] + : never; + +type SmallUnion725 = "a" | "b" | "c" | "d"; +type AllPerms725 = Permutation725; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig725, + Flat725, + FR725, + BigUnion725, + ExtractAlpha725, + ExcludeZulu725, + OptionalAll725, + RequiredAll725, + ReadonlyAll725, + NullableAll725, + TypeNames725, + Action725, + AllPerms725, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts new file mode 100644 index 00000000..efe0c73c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-26 (seed 726) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord726 { + a726: { x: number; y: string; z: boolean }; + b726: { p: string[]; q: Record }; + c726: { nested: { deep: { deeper: { deepest: string } } } }; + d726: number; + e726: string; + f726: boolean; + g726: null; + h726: undefined; + i726: bigint; + j726: symbol; +} + +type PartialBig726 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten726 = T extends Array ? Flatten726 : T; +type Nested726 = number[][][][][][][][][][]; +type Flat726 = Flatten726; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly726 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly726 : T[K]; +}; +type DeepRequired726 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired726 : T[K]; +}; +type FR726 = DeepReadonly726>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion726 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha726 = Extract; +type ExcludeZulu726 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA726 { width: number; height: number; depth: number } +interface ShapeB726 { color: string; opacity: number; blend: string } +interface ShapeC726 { x: number; y: number; z: number; w: number } +interface ShapeD726 { label: string; title: string; summary: string } + +type Combined726 = ShapeA726 & ShapeB726 & ShapeC726 & ShapeD726; +type OptionalAll726 = { [K in keyof Combined726]?: Combined726[K] }; +type RequiredAll726 = { [K in keyof Combined726]-?: Combined726[K] }; +type ReadonlyAll726 = { readonly [K in keyof Combined726]: Combined726[K] }; +type NullableAll726 = { [K in keyof Combined726]: Combined726[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString726 = T extends string ? true : false; +type IsNumber726 = T extends number ? true : false; +type TypeName726 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames726 = { + [K in keyof BigRecord726]: TypeName726; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb726 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource726 = "user" | "post" | "comment" | "tag" | "category"; +type Action726 = `${Verb726}_${Resource726}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise726 = T extends Promise ? UnwrapPromise726 : T; +type UnwrapArray726 = T extends (infer U)[] ? UnwrapArray726 : T; +type Head726 = T extends [infer H, ...infer _] ? H : never; +type Tail726 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation726 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation726>] + : never; + +type SmallUnion726 = "a" | "b" | "c" | "d"; +type AllPerms726 = Permutation726; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig726, + Flat726, + FR726, + BigUnion726, + ExtractAlpha726, + ExcludeZulu726, + OptionalAll726, + RequiredAll726, + ReadonlyAll726, + NullableAll726, + TypeNames726, + Action726, + AllPerms726, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts new file mode 100644 index 00000000..3c4de259 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-27 (seed 727) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord727 { + a727: { x: number; y: string; z: boolean }; + b727: { p: string[]; q: Record }; + c727: { nested: { deep: { deeper: { deepest: string } } } }; + d727: number; + e727: string; + f727: boolean; + g727: null; + h727: undefined; + i727: bigint; + j727: symbol; +} + +type PartialBig727 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten727 = T extends Array ? Flatten727 : T; +type Nested727 = number[][][][][][][][][][]; +type Flat727 = Flatten727; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly727 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly727 : T[K]; +}; +type DeepRequired727 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired727 : T[K]; +}; +type FR727 = DeepReadonly727>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion727 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha727 = Extract; +type ExcludeZulu727 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA727 { width: number; height: number; depth: number } +interface ShapeB727 { color: string; opacity: number; blend: string } +interface ShapeC727 { x: number; y: number; z: number; w: number } +interface ShapeD727 { label: string; title: string; summary: string } + +type Combined727 = ShapeA727 & ShapeB727 & ShapeC727 & ShapeD727; +type OptionalAll727 = { [K in keyof Combined727]?: Combined727[K] }; +type RequiredAll727 = { [K in keyof Combined727]-?: Combined727[K] }; +type ReadonlyAll727 = { readonly [K in keyof Combined727]: Combined727[K] }; +type NullableAll727 = { [K in keyof Combined727]: Combined727[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString727 = T extends string ? true : false; +type IsNumber727 = T extends number ? true : false; +type TypeName727 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames727 = { + [K in keyof BigRecord727]: TypeName727; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb727 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource727 = "user" | "post" | "comment" | "tag" | "category"; +type Action727 = `${Verb727}_${Resource727}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise727 = T extends Promise ? UnwrapPromise727 : T; +type UnwrapArray727 = T extends (infer U)[] ? UnwrapArray727 : T; +type Head727 = T extends [infer H, ...infer _] ? H : never; +type Tail727 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation727 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation727>] + : never; + +type SmallUnion727 = "a" | "b" | "c" | "d"; +type AllPerms727 = Permutation727; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig727, + Flat727, + FR727, + BigUnion727, + ExtractAlpha727, + ExcludeZulu727, + OptionalAll727, + RequiredAll727, + ReadonlyAll727, + NullableAll727, + TypeNames727, + Action727, + AllPerms727, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts new file mode 100644 index 00000000..3fb76f8f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-28 (seed 728) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord728 { + a728: { x: number; y: string; z: boolean }; + b728: { p: string[]; q: Record }; + c728: { nested: { deep: { deeper: { deepest: string } } } }; + d728: number; + e728: string; + f728: boolean; + g728: null; + h728: undefined; + i728: bigint; + j728: symbol; +} + +type PartialBig728 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten728 = T extends Array ? Flatten728 : T; +type Nested728 = number[][][][][][][][][][]; +type Flat728 = Flatten728; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly728 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly728 : T[K]; +}; +type DeepRequired728 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired728 : T[K]; +}; +type FR728 = DeepReadonly728>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion728 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha728 = Extract; +type ExcludeZulu728 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA728 { width: number; height: number; depth: number } +interface ShapeB728 { color: string; opacity: number; blend: string } +interface ShapeC728 { x: number; y: number; z: number; w: number } +interface ShapeD728 { label: string; title: string; summary: string } + +type Combined728 = ShapeA728 & ShapeB728 & ShapeC728 & ShapeD728; +type OptionalAll728 = { [K in keyof Combined728]?: Combined728[K] }; +type RequiredAll728 = { [K in keyof Combined728]-?: Combined728[K] }; +type ReadonlyAll728 = { readonly [K in keyof Combined728]: Combined728[K] }; +type NullableAll728 = { [K in keyof Combined728]: Combined728[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString728 = T extends string ? true : false; +type IsNumber728 = T extends number ? true : false; +type TypeName728 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames728 = { + [K in keyof BigRecord728]: TypeName728; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb728 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource728 = "user" | "post" | "comment" | "tag" | "category"; +type Action728 = `${Verb728}_${Resource728}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise728 = T extends Promise ? UnwrapPromise728 : T; +type UnwrapArray728 = T extends (infer U)[] ? UnwrapArray728 : T; +type Head728 = T extends [infer H, ...infer _] ? H : never; +type Tail728 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation728 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation728>] + : never; + +type SmallUnion728 = "a" | "b" | "c" | "d"; +type AllPerms728 = Permutation728; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig728, + Flat728, + FR728, + BigUnion728, + ExtractAlpha728, + ExcludeZulu728, + OptionalAll728, + RequiredAll728, + ReadonlyAll728, + NullableAll728, + TypeNames728, + Action728, + AllPerms728, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts new file mode 100644 index 00000000..d8f2715c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-29 (seed 729) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord729 { + a729: { x: number; y: string; z: boolean }; + b729: { p: string[]; q: Record }; + c729: { nested: { deep: { deeper: { deepest: string } } } }; + d729: number; + e729: string; + f729: boolean; + g729: null; + h729: undefined; + i729: bigint; + j729: symbol; +} + +type PartialBig729 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten729 = T extends Array ? Flatten729 : T; +type Nested729 = number[][][][][][][][][][]; +type Flat729 = Flatten729; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly729 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly729 : T[K]; +}; +type DeepRequired729 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired729 : T[K]; +}; +type FR729 = DeepReadonly729>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion729 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha729 = Extract; +type ExcludeZulu729 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA729 { width: number; height: number; depth: number } +interface ShapeB729 { color: string; opacity: number; blend: string } +interface ShapeC729 { x: number; y: number; z: number; w: number } +interface ShapeD729 { label: string; title: string; summary: string } + +type Combined729 = ShapeA729 & ShapeB729 & ShapeC729 & ShapeD729; +type OptionalAll729 = { [K in keyof Combined729]?: Combined729[K] }; +type RequiredAll729 = { [K in keyof Combined729]-?: Combined729[K] }; +type ReadonlyAll729 = { readonly [K in keyof Combined729]: Combined729[K] }; +type NullableAll729 = { [K in keyof Combined729]: Combined729[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString729 = T extends string ? true : false; +type IsNumber729 = T extends number ? true : false; +type TypeName729 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames729 = { + [K in keyof BigRecord729]: TypeName729; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb729 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource729 = "user" | "post" | "comment" | "tag" | "category"; +type Action729 = `${Verb729}_${Resource729}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise729 = T extends Promise ? UnwrapPromise729 : T; +type UnwrapArray729 = T extends (infer U)[] ? UnwrapArray729 : T; +type Head729 = T extends [infer H, ...infer _] ? H : never; +type Tail729 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation729 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation729>] + : never; + +type SmallUnion729 = "a" | "b" | "c" | "d"; +type AllPerms729 = Permutation729; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig729, + Flat729, + FR729, + BigUnion729, + ExtractAlpha729, + ExcludeZulu729, + OptionalAll729, + RequiredAll729, + ReadonlyAll729, + NullableAll729, + TypeNames729, + Action729, + AllPerms729, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts new file mode 100644 index 00000000..5f688aa6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-30 (seed 730) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord730 { + a730: { x: number; y: string; z: boolean }; + b730: { p: string[]; q: Record }; + c730: { nested: { deep: { deeper: { deepest: string } } } }; + d730: number; + e730: string; + f730: boolean; + g730: null; + h730: undefined; + i730: bigint; + j730: symbol; +} + +type PartialBig730 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten730 = T extends Array ? Flatten730 : T; +type Nested730 = number[][][][][][][][][][]; +type Flat730 = Flatten730; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly730 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly730 : T[K]; +}; +type DeepRequired730 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired730 : T[K]; +}; +type FR730 = DeepReadonly730>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion730 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha730 = Extract; +type ExcludeZulu730 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA730 { width: number; height: number; depth: number } +interface ShapeB730 { color: string; opacity: number; blend: string } +interface ShapeC730 { x: number; y: number; z: number; w: number } +interface ShapeD730 { label: string; title: string; summary: string } + +type Combined730 = ShapeA730 & ShapeB730 & ShapeC730 & ShapeD730; +type OptionalAll730 = { [K in keyof Combined730]?: Combined730[K] }; +type RequiredAll730 = { [K in keyof Combined730]-?: Combined730[K] }; +type ReadonlyAll730 = { readonly [K in keyof Combined730]: Combined730[K] }; +type NullableAll730 = { [K in keyof Combined730]: Combined730[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString730 = T extends string ? true : false; +type IsNumber730 = T extends number ? true : false; +type TypeName730 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames730 = { + [K in keyof BigRecord730]: TypeName730; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb730 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource730 = "user" | "post" | "comment" | "tag" | "category"; +type Action730 = `${Verb730}_${Resource730}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise730 = T extends Promise ? UnwrapPromise730 : T; +type UnwrapArray730 = T extends (infer U)[] ? UnwrapArray730 : T; +type Head730 = T extends [infer H, ...infer _] ? H : never; +type Tail730 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation730 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation730>] + : never; + +type SmallUnion730 = "a" | "b" | "c" | "d"; +type AllPerms730 = Permutation730; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig730, + Flat730, + FR730, + BigUnion730, + ExtractAlpha730, + ExcludeZulu730, + OptionalAll730, + RequiredAll730, + ReadonlyAll730, + NullableAll730, + TypeNames730, + Action730, + AllPerms730, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts new file mode 100644 index 00000000..ad6ab74c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-31 (seed 731) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord731 { + a731: { x: number; y: string; z: boolean }; + b731: { p: string[]; q: Record }; + c731: { nested: { deep: { deeper: { deepest: string } } } }; + d731: number; + e731: string; + f731: boolean; + g731: null; + h731: undefined; + i731: bigint; + j731: symbol; +} + +type PartialBig731 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten731 = T extends Array ? Flatten731 : T; +type Nested731 = number[][][][][][][][][][]; +type Flat731 = Flatten731; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly731 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly731 : T[K]; +}; +type DeepRequired731 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired731 : T[K]; +}; +type FR731 = DeepReadonly731>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion731 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha731 = Extract; +type ExcludeZulu731 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA731 { width: number; height: number; depth: number } +interface ShapeB731 { color: string; opacity: number; blend: string } +interface ShapeC731 { x: number; y: number; z: number; w: number } +interface ShapeD731 { label: string; title: string; summary: string } + +type Combined731 = ShapeA731 & ShapeB731 & ShapeC731 & ShapeD731; +type OptionalAll731 = { [K in keyof Combined731]?: Combined731[K] }; +type RequiredAll731 = { [K in keyof Combined731]-?: Combined731[K] }; +type ReadonlyAll731 = { readonly [K in keyof Combined731]: Combined731[K] }; +type NullableAll731 = { [K in keyof Combined731]: Combined731[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString731 = T extends string ? true : false; +type IsNumber731 = T extends number ? true : false; +type TypeName731 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames731 = { + [K in keyof BigRecord731]: TypeName731; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb731 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource731 = "user" | "post" | "comment" | "tag" | "category"; +type Action731 = `${Verb731}_${Resource731}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise731 = T extends Promise ? UnwrapPromise731 : T; +type UnwrapArray731 = T extends (infer U)[] ? UnwrapArray731 : T; +type Head731 = T extends [infer H, ...infer _] ? H : never; +type Tail731 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation731 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation731>] + : never; + +type SmallUnion731 = "a" | "b" | "c" | "d"; +type AllPerms731 = Permutation731; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig731, + Flat731, + FR731, + BigUnion731, + ExtractAlpha731, + ExcludeZulu731, + OptionalAll731, + RequiredAll731, + ReadonlyAll731, + NullableAll731, + TypeNames731, + Action731, + AllPerms731, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts new file mode 100644 index 00000000..8785661d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-32 (seed 732) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord732 { + a732: { x: number; y: string; z: boolean }; + b732: { p: string[]; q: Record }; + c732: { nested: { deep: { deeper: { deepest: string } } } }; + d732: number; + e732: string; + f732: boolean; + g732: null; + h732: undefined; + i732: bigint; + j732: symbol; +} + +type PartialBig732 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten732 = T extends Array ? Flatten732 : T; +type Nested732 = number[][][][][][][][][][]; +type Flat732 = Flatten732; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly732 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly732 : T[K]; +}; +type DeepRequired732 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired732 : T[K]; +}; +type FR732 = DeepReadonly732>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion732 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha732 = Extract; +type ExcludeZulu732 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA732 { width: number; height: number; depth: number } +interface ShapeB732 { color: string; opacity: number; blend: string } +interface ShapeC732 { x: number; y: number; z: number; w: number } +interface ShapeD732 { label: string; title: string; summary: string } + +type Combined732 = ShapeA732 & ShapeB732 & ShapeC732 & ShapeD732; +type OptionalAll732 = { [K in keyof Combined732]?: Combined732[K] }; +type RequiredAll732 = { [K in keyof Combined732]-?: Combined732[K] }; +type ReadonlyAll732 = { readonly [K in keyof Combined732]: Combined732[K] }; +type NullableAll732 = { [K in keyof Combined732]: Combined732[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString732 = T extends string ? true : false; +type IsNumber732 = T extends number ? true : false; +type TypeName732 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames732 = { + [K in keyof BigRecord732]: TypeName732; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb732 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource732 = "user" | "post" | "comment" | "tag" | "category"; +type Action732 = `${Verb732}_${Resource732}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise732 = T extends Promise ? UnwrapPromise732 : T; +type UnwrapArray732 = T extends (infer U)[] ? UnwrapArray732 : T; +type Head732 = T extends [infer H, ...infer _] ? H : never; +type Tail732 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation732 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation732>] + : never; + +type SmallUnion732 = "a" | "b" | "c" | "d"; +type AllPerms732 = Permutation732; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig732, + Flat732, + FR732, + BigUnion732, + ExtractAlpha732, + ExcludeZulu732, + OptionalAll732, + RequiredAll732, + ReadonlyAll732, + NullableAll732, + TypeNames732, + Action732, + AllPerms732, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts new file mode 100644 index 00000000..74b94864 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-33 (seed 733) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord733 { + a733: { x: number; y: string; z: boolean }; + b733: { p: string[]; q: Record }; + c733: { nested: { deep: { deeper: { deepest: string } } } }; + d733: number; + e733: string; + f733: boolean; + g733: null; + h733: undefined; + i733: bigint; + j733: symbol; +} + +type PartialBig733 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten733 = T extends Array ? Flatten733 : T; +type Nested733 = number[][][][][][][][][][]; +type Flat733 = Flatten733; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly733 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly733 : T[K]; +}; +type DeepRequired733 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired733 : T[K]; +}; +type FR733 = DeepReadonly733>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion733 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha733 = Extract; +type ExcludeZulu733 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA733 { width: number; height: number; depth: number } +interface ShapeB733 { color: string; opacity: number; blend: string } +interface ShapeC733 { x: number; y: number; z: number; w: number } +interface ShapeD733 { label: string; title: string; summary: string } + +type Combined733 = ShapeA733 & ShapeB733 & ShapeC733 & ShapeD733; +type OptionalAll733 = { [K in keyof Combined733]?: Combined733[K] }; +type RequiredAll733 = { [K in keyof Combined733]-?: Combined733[K] }; +type ReadonlyAll733 = { readonly [K in keyof Combined733]: Combined733[K] }; +type NullableAll733 = { [K in keyof Combined733]: Combined733[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString733 = T extends string ? true : false; +type IsNumber733 = T extends number ? true : false; +type TypeName733 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames733 = { + [K in keyof BigRecord733]: TypeName733; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb733 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource733 = "user" | "post" | "comment" | "tag" | "category"; +type Action733 = `${Verb733}_${Resource733}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise733 = T extends Promise ? UnwrapPromise733 : T; +type UnwrapArray733 = T extends (infer U)[] ? UnwrapArray733 : T; +type Head733 = T extends [infer H, ...infer _] ? H : never; +type Tail733 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation733 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation733>] + : never; + +type SmallUnion733 = "a" | "b" | "c" | "d"; +type AllPerms733 = Permutation733; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig733, + Flat733, + FR733, + BigUnion733, + ExtractAlpha733, + ExcludeZulu733, + OptionalAll733, + RequiredAll733, + ReadonlyAll733, + NullableAll733, + TypeNames733, + Action733, + AllPerms733, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts new file mode 100644 index 00000000..5b0281b3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-34 (seed 734) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord734 { + a734: { x: number; y: string; z: boolean }; + b734: { p: string[]; q: Record }; + c734: { nested: { deep: { deeper: { deepest: string } } } }; + d734: number; + e734: string; + f734: boolean; + g734: null; + h734: undefined; + i734: bigint; + j734: symbol; +} + +type PartialBig734 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten734 = T extends Array ? Flatten734 : T; +type Nested734 = number[][][][][][][][][][]; +type Flat734 = Flatten734; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly734 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly734 : T[K]; +}; +type DeepRequired734 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired734 : T[K]; +}; +type FR734 = DeepReadonly734>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion734 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha734 = Extract; +type ExcludeZulu734 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA734 { width: number; height: number; depth: number } +interface ShapeB734 { color: string; opacity: number; blend: string } +interface ShapeC734 { x: number; y: number; z: number; w: number } +interface ShapeD734 { label: string; title: string; summary: string } + +type Combined734 = ShapeA734 & ShapeB734 & ShapeC734 & ShapeD734; +type OptionalAll734 = { [K in keyof Combined734]?: Combined734[K] }; +type RequiredAll734 = { [K in keyof Combined734]-?: Combined734[K] }; +type ReadonlyAll734 = { readonly [K in keyof Combined734]: Combined734[K] }; +type NullableAll734 = { [K in keyof Combined734]: Combined734[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString734 = T extends string ? true : false; +type IsNumber734 = T extends number ? true : false; +type TypeName734 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames734 = { + [K in keyof BigRecord734]: TypeName734; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb734 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource734 = "user" | "post" | "comment" | "tag" | "category"; +type Action734 = `${Verb734}_${Resource734}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise734 = T extends Promise ? UnwrapPromise734 : T; +type UnwrapArray734 = T extends (infer U)[] ? UnwrapArray734 : T; +type Head734 = T extends [infer H, ...infer _] ? H : never; +type Tail734 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation734 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation734>] + : never; + +type SmallUnion734 = "a" | "b" | "c" | "d"; +type AllPerms734 = Permutation734; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig734, + Flat734, + FR734, + BigUnion734, + ExtractAlpha734, + ExcludeZulu734, + OptionalAll734, + RequiredAll734, + ReadonlyAll734, + NullableAll734, + TypeNames734, + Action734, + AllPerms734, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts new file mode 100644 index 00000000..b2144a3c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-35 (seed 735) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord735 { + a735: { x: number; y: string; z: boolean }; + b735: { p: string[]; q: Record }; + c735: { nested: { deep: { deeper: { deepest: string } } } }; + d735: number; + e735: string; + f735: boolean; + g735: null; + h735: undefined; + i735: bigint; + j735: symbol; +} + +type PartialBig735 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten735 = T extends Array ? Flatten735 : T; +type Nested735 = number[][][][][][][][][][]; +type Flat735 = Flatten735; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly735 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly735 : T[K]; +}; +type DeepRequired735 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired735 : T[K]; +}; +type FR735 = DeepReadonly735>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion735 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha735 = Extract; +type ExcludeZulu735 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA735 { width: number; height: number; depth: number } +interface ShapeB735 { color: string; opacity: number; blend: string } +interface ShapeC735 { x: number; y: number; z: number; w: number } +interface ShapeD735 { label: string; title: string; summary: string } + +type Combined735 = ShapeA735 & ShapeB735 & ShapeC735 & ShapeD735; +type OptionalAll735 = { [K in keyof Combined735]?: Combined735[K] }; +type RequiredAll735 = { [K in keyof Combined735]-?: Combined735[K] }; +type ReadonlyAll735 = { readonly [K in keyof Combined735]: Combined735[K] }; +type NullableAll735 = { [K in keyof Combined735]: Combined735[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString735 = T extends string ? true : false; +type IsNumber735 = T extends number ? true : false; +type TypeName735 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames735 = { + [K in keyof BigRecord735]: TypeName735; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb735 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource735 = "user" | "post" | "comment" | "tag" | "category"; +type Action735 = `${Verb735}_${Resource735}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise735 = T extends Promise ? UnwrapPromise735 : T; +type UnwrapArray735 = T extends (infer U)[] ? UnwrapArray735 : T; +type Head735 = T extends [infer H, ...infer _] ? H : never; +type Tail735 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation735 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation735>] + : never; + +type SmallUnion735 = "a" | "b" | "c" | "d"; +type AllPerms735 = Permutation735; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig735, + Flat735, + FR735, + BigUnion735, + ExtractAlpha735, + ExcludeZulu735, + OptionalAll735, + RequiredAll735, + ReadonlyAll735, + NullableAll735, + TypeNames735, + Action735, + AllPerms735, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts new file mode 100644 index 00000000..75b484ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-36 (seed 736) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord736 { + a736: { x: number; y: string; z: boolean }; + b736: { p: string[]; q: Record }; + c736: { nested: { deep: { deeper: { deepest: string } } } }; + d736: number; + e736: string; + f736: boolean; + g736: null; + h736: undefined; + i736: bigint; + j736: symbol; +} + +type PartialBig736 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten736 = T extends Array ? Flatten736 : T; +type Nested736 = number[][][][][][][][][][]; +type Flat736 = Flatten736; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly736 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly736 : T[K]; +}; +type DeepRequired736 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired736 : T[K]; +}; +type FR736 = DeepReadonly736>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion736 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha736 = Extract; +type ExcludeZulu736 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA736 { width: number; height: number; depth: number } +interface ShapeB736 { color: string; opacity: number; blend: string } +interface ShapeC736 { x: number; y: number; z: number; w: number } +interface ShapeD736 { label: string; title: string; summary: string } + +type Combined736 = ShapeA736 & ShapeB736 & ShapeC736 & ShapeD736; +type OptionalAll736 = { [K in keyof Combined736]?: Combined736[K] }; +type RequiredAll736 = { [K in keyof Combined736]-?: Combined736[K] }; +type ReadonlyAll736 = { readonly [K in keyof Combined736]: Combined736[K] }; +type NullableAll736 = { [K in keyof Combined736]: Combined736[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString736 = T extends string ? true : false; +type IsNumber736 = T extends number ? true : false; +type TypeName736 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames736 = { + [K in keyof BigRecord736]: TypeName736; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb736 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource736 = "user" | "post" | "comment" | "tag" | "category"; +type Action736 = `${Verb736}_${Resource736}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise736 = T extends Promise ? UnwrapPromise736 : T; +type UnwrapArray736 = T extends (infer U)[] ? UnwrapArray736 : T; +type Head736 = T extends [infer H, ...infer _] ? H : never; +type Tail736 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation736 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation736>] + : never; + +type SmallUnion736 = "a" | "b" | "c" | "d"; +type AllPerms736 = Permutation736; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig736, + Flat736, + FR736, + BigUnion736, + ExtractAlpha736, + ExcludeZulu736, + OptionalAll736, + RequiredAll736, + ReadonlyAll736, + NullableAll736, + TypeNames736, + Action736, + AllPerms736, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts new file mode 100644 index 00000000..bd1cb14b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-37 (seed 737) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord737 { + a737: { x: number; y: string; z: boolean }; + b737: { p: string[]; q: Record }; + c737: { nested: { deep: { deeper: { deepest: string } } } }; + d737: number; + e737: string; + f737: boolean; + g737: null; + h737: undefined; + i737: bigint; + j737: symbol; +} + +type PartialBig737 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten737 = T extends Array ? Flatten737 : T; +type Nested737 = number[][][][][][][][][][]; +type Flat737 = Flatten737; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly737 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly737 : T[K]; +}; +type DeepRequired737 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired737 : T[K]; +}; +type FR737 = DeepReadonly737>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion737 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha737 = Extract; +type ExcludeZulu737 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA737 { width: number; height: number; depth: number } +interface ShapeB737 { color: string; opacity: number; blend: string } +interface ShapeC737 { x: number; y: number; z: number; w: number } +interface ShapeD737 { label: string; title: string; summary: string } + +type Combined737 = ShapeA737 & ShapeB737 & ShapeC737 & ShapeD737; +type OptionalAll737 = { [K in keyof Combined737]?: Combined737[K] }; +type RequiredAll737 = { [K in keyof Combined737]-?: Combined737[K] }; +type ReadonlyAll737 = { readonly [K in keyof Combined737]: Combined737[K] }; +type NullableAll737 = { [K in keyof Combined737]: Combined737[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString737 = T extends string ? true : false; +type IsNumber737 = T extends number ? true : false; +type TypeName737 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames737 = { + [K in keyof BigRecord737]: TypeName737; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb737 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource737 = "user" | "post" | "comment" | "tag" | "category"; +type Action737 = `${Verb737}_${Resource737}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise737 = T extends Promise ? UnwrapPromise737 : T; +type UnwrapArray737 = T extends (infer U)[] ? UnwrapArray737 : T; +type Head737 = T extends [infer H, ...infer _] ? H : never; +type Tail737 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation737 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation737>] + : never; + +type SmallUnion737 = "a" | "b" | "c" | "d"; +type AllPerms737 = Permutation737; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig737, + Flat737, + FR737, + BigUnion737, + ExtractAlpha737, + ExcludeZulu737, + OptionalAll737, + RequiredAll737, + ReadonlyAll737, + NullableAll737, + TypeNames737, + Action737, + AllPerms737, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts new file mode 100644 index 00000000..a270155c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-38 (seed 738) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord738 { + a738: { x: number; y: string; z: boolean }; + b738: { p: string[]; q: Record }; + c738: { nested: { deep: { deeper: { deepest: string } } } }; + d738: number; + e738: string; + f738: boolean; + g738: null; + h738: undefined; + i738: bigint; + j738: symbol; +} + +type PartialBig738 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten738 = T extends Array ? Flatten738 : T; +type Nested738 = number[][][][][][][][][][]; +type Flat738 = Flatten738; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly738 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly738 : T[K]; +}; +type DeepRequired738 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired738 : T[K]; +}; +type FR738 = DeepReadonly738>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion738 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha738 = Extract; +type ExcludeZulu738 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA738 { width: number; height: number; depth: number } +interface ShapeB738 { color: string; opacity: number; blend: string } +interface ShapeC738 { x: number; y: number; z: number; w: number } +interface ShapeD738 { label: string; title: string; summary: string } + +type Combined738 = ShapeA738 & ShapeB738 & ShapeC738 & ShapeD738; +type OptionalAll738 = { [K in keyof Combined738]?: Combined738[K] }; +type RequiredAll738 = { [K in keyof Combined738]-?: Combined738[K] }; +type ReadonlyAll738 = { readonly [K in keyof Combined738]: Combined738[K] }; +type NullableAll738 = { [K in keyof Combined738]: Combined738[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString738 = T extends string ? true : false; +type IsNumber738 = T extends number ? true : false; +type TypeName738 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames738 = { + [K in keyof BigRecord738]: TypeName738; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb738 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource738 = "user" | "post" | "comment" | "tag" | "category"; +type Action738 = `${Verb738}_${Resource738}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise738 = T extends Promise ? UnwrapPromise738 : T; +type UnwrapArray738 = T extends (infer U)[] ? UnwrapArray738 : T; +type Head738 = T extends [infer H, ...infer _] ? H : never; +type Tail738 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation738 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation738>] + : never; + +type SmallUnion738 = "a" | "b" | "c" | "d"; +type AllPerms738 = Permutation738; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig738, + Flat738, + FR738, + BigUnion738, + ExtractAlpha738, + ExcludeZulu738, + OptionalAll738, + RequiredAll738, + ReadonlyAll738, + NullableAll738, + TypeNames738, + Action738, + AllPerms738, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts new file mode 100644 index 00000000..1b63ab4f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-39 (seed 739) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord739 { + a739: { x: number; y: string; z: boolean }; + b739: { p: string[]; q: Record }; + c739: { nested: { deep: { deeper: { deepest: string } } } }; + d739: number; + e739: string; + f739: boolean; + g739: null; + h739: undefined; + i739: bigint; + j739: symbol; +} + +type PartialBig739 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten739 = T extends Array ? Flatten739 : T; +type Nested739 = number[][][][][][][][][][]; +type Flat739 = Flatten739; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly739 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly739 : T[K]; +}; +type DeepRequired739 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired739 : T[K]; +}; +type FR739 = DeepReadonly739>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion739 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha739 = Extract; +type ExcludeZulu739 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA739 { width: number; height: number; depth: number } +interface ShapeB739 { color: string; opacity: number; blend: string } +interface ShapeC739 { x: number; y: number; z: number; w: number } +interface ShapeD739 { label: string; title: string; summary: string } + +type Combined739 = ShapeA739 & ShapeB739 & ShapeC739 & ShapeD739; +type OptionalAll739 = { [K in keyof Combined739]?: Combined739[K] }; +type RequiredAll739 = { [K in keyof Combined739]-?: Combined739[K] }; +type ReadonlyAll739 = { readonly [K in keyof Combined739]: Combined739[K] }; +type NullableAll739 = { [K in keyof Combined739]: Combined739[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString739 = T extends string ? true : false; +type IsNumber739 = T extends number ? true : false; +type TypeName739 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames739 = { + [K in keyof BigRecord739]: TypeName739; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb739 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource739 = "user" | "post" | "comment" | "tag" | "category"; +type Action739 = `${Verb739}_${Resource739}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise739 = T extends Promise ? UnwrapPromise739 : T; +type UnwrapArray739 = T extends (infer U)[] ? UnwrapArray739 : T; +type Head739 = T extends [infer H, ...infer _] ? H : never; +type Tail739 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation739 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation739>] + : never; + +type SmallUnion739 = "a" | "b" | "c" | "d"; +type AllPerms739 = Permutation739; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig739, + Flat739, + FR739, + BigUnion739, + ExtractAlpha739, + ExcludeZulu739, + OptionalAll739, + RequiredAll739, + ReadonlyAll739, + NullableAll739, + TypeNames739, + Action739, + AllPerms739, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts new file mode 100644 index 00000000..8bb646c7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-40 (seed 740) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord740 { + a740: { x: number; y: string; z: boolean }; + b740: { p: string[]; q: Record }; + c740: { nested: { deep: { deeper: { deepest: string } } } }; + d740: number; + e740: string; + f740: boolean; + g740: null; + h740: undefined; + i740: bigint; + j740: symbol; +} + +type PartialBig740 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten740 = T extends Array ? Flatten740 : T; +type Nested740 = number[][][][][][][][][][]; +type Flat740 = Flatten740; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly740 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly740 : T[K]; +}; +type DeepRequired740 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired740 : T[K]; +}; +type FR740 = DeepReadonly740>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion740 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha740 = Extract; +type ExcludeZulu740 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA740 { width: number; height: number; depth: number } +interface ShapeB740 { color: string; opacity: number; blend: string } +interface ShapeC740 { x: number; y: number; z: number; w: number } +interface ShapeD740 { label: string; title: string; summary: string } + +type Combined740 = ShapeA740 & ShapeB740 & ShapeC740 & ShapeD740; +type OptionalAll740 = { [K in keyof Combined740]?: Combined740[K] }; +type RequiredAll740 = { [K in keyof Combined740]-?: Combined740[K] }; +type ReadonlyAll740 = { readonly [K in keyof Combined740]: Combined740[K] }; +type NullableAll740 = { [K in keyof Combined740]: Combined740[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString740 = T extends string ? true : false; +type IsNumber740 = T extends number ? true : false; +type TypeName740 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames740 = { + [K in keyof BigRecord740]: TypeName740; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb740 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource740 = "user" | "post" | "comment" | "tag" | "category"; +type Action740 = `${Verb740}_${Resource740}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise740 = T extends Promise ? UnwrapPromise740 : T; +type UnwrapArray740 = T extends (infer U)[] ? UnwrapArray740 : T; +type Head740 = T extends [infer H, ...infer _] ? H : never; +type Tail740 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation740 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation740>] + : never; + +type SmallUnion740 = "a" | "b" | "c" | "d"; +type AllPerms740 = Permutation740; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig740, + Flat740, + FR740, + BigUnion740, + ExtractAlpha740, + ExcludeZulu740, + OptionalAll740, + RequiredAll740, + ReadonlyAll740, + NullableAll740, + TypeNames740, + Action740, + AllPerms740, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts new file mode 100644 index 00000000..03cb9bc1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-41 (seed 741) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord741 { + a741: { x: number; y: string; z: boolean }; + b741: { p: string[]; q: Record }; + c741: { nested: { deep: { deeper: { deepest: string } } } }; + d741: number; + e741: string; + f741: boolean; + g741: null; + h741: undefined; + i741: bigint; + j741: symbol; +} + +type PartialBig741 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten741 = T extends Array ? Flatten741 : T; +type Nested741 = number[][][][][][][][][][]; +type Flat741 = Flatten741; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly741 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly741 : T[K]; +}; +type DeepRequired741 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired741 : T[K]; +}; +type FR741 = DeepReadonly741>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion741 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha741 = Extract; +type ExcludeZulu741 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA741 { width: number; height: number; depth: number } +interface ShapeB741 { color: string; opacity: number; blend: string } +interface ShapeC741 { x: number; y: number; z: number; w: number } +interface ShapeD741 { label: string; title: string; summary: string } + +type Combined741 = ShapeA741 & ShapeB741 & ShapeC741 & ShapeD741; +type OptionalAll741 = { [K in keyof Combined741]?: Combined741[K] }; +type RequiredAll741 = { [K in keyof Combined741]-?: Combined741[K] }; +type ReadonlyAll741 = { readonly [K in keyof Combined741]: Combined741[K] }; +type NullableAll741 = { [K in keyof Combined741]: Combined741[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString741 = T extends string ? true : false; +type IsNumber741 = T extends number ? true : false; +type TypeName741 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames741 = { + [K in keyof BigRecord741]: TypeName741; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb741 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource741 = "user" | "post" | "comment" | "tag" | "category"; +type Action741 = `${Verb741}_${Resource741}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise741 = T extends Promise ? UnwrapPromise741 : T; +type UnwrapArray741 = T extends (infer U)[] ? UnwrapArray741 : T; +type Head741 = T extends [infer H, ...infer _] ? H : never; +type Tail741 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation741 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation741>] + : never; + +type SmallUnion741 = "a" | "b" | "c" | "d"; +type AllPerms741 = Permutation741; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig741, + Flat741, + FR741, + BigUnion741, + ExtractAlpha741, + ExcludeZulu741, + OptionalAll741, + RequiredAll741, + ReadonlyAll741, + NullableAll741, + TypeNames741, + Action741, + AllPerms741, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts new file mode 100644 index 00000000..161d3f85 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-42 (seed 742) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord742 { + a742: { x: number; y: string; z: boolean }; + b742: { p: string[]; q: Record }; + c742: { nested: { deep: { deeper: { deepest: string } } } }; + d742: number; + e742: string; + f742: boolean; + g742: null; + h742: undefined; + i742: bigint; + j742: symbol; +} + +type PartialBig742 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten742 = T extends Array ? Flatten742 : T; +type Nested742 = number[][][][][][][][][][]; +type Flat742 = Flatten742; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly742 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly742 : T[K]; +}; +type DeepRequired742 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired742 : T[K]; +}; +type FR742 = DeepReadonly742>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion742 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha742 = Extract; +type ExcludeZulu742 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA742 { width: number; height: number; depth: number } +interface ShapeB742 { color: string; opacity: number; blend: string } +interface ShapeC742 { x: number; y: number; z: number; w: number } +interface ShapeD742 { label: string; title: string; summary: string } + +type Combined742 = ShapeA742 & ShapeB742 & ShapeC742 & ShapeD742; +type OptionalAll742 = { [K in keyof Combined742]?: Combined742[K] }; +type RequiredAll742 = { [K in keyof Combined742]-?: Combined742[K] }; +type ReadonlyAll742 = { readonly [K in keyof Combined742]: Combined742[K] }; +type NullableAll742 = { [K in keyof Combined742]: Combined742[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString742 = T extends string ? true : false; +type IsNumber742 = T extends number ? true : false; +type TypeName742 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames742 = { + [K in keyof BigRecord742]: TypeName742; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb742 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource742 = "user" | "post" | "comment" | "tag" | "category"; +type Action742 = `${Verb742}_${Resource742}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise742 = T extends Promise ? UnwrapPromise742 : T; +type UnwrapArray742 = T extends (infer U)[] ? UnwrapArray742 : T; +type Head742 = T extends [infer H, ...infer _] ? H : never; +type Tail742 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation742 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation742>] + : never; + +type SmallUnion742 = "a" | "b" | "c" | "d"; +type AllPerms742 = Permutation742; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig742, + Flat742, + FR742, + BigUnion742, + ExtractAlpha742, + ExcludeZulu742, + OptionalAll742, + RequiredAll742, + ReadonlyAll742, + NullableAll742, + TypeNames742, + Action742, + AllPerms742, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts new file mode 100644 index 00000000..62cf09d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-43 (seed 743) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord743 { + a743: { x: number; y: string; z: boolean }; + b743: { p: string[]; q: Record }; + c743: { nested: { deep: { deeper: { deepest: string } } } }; + d743: number; + e743: string; + f743: boolean; + g743: null; + h743: undefined; + i743: bigint; + j743: symbol; +} + +type PartialBig743 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten743 = T extends Array ? Flatten743 : T; +type Nested743 = number[][][][][][][][][][]; +type Flat743 = Flatten743; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly743 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly743 : T[K]; +}; +type DeepRequired743 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired743 : T[K]; +}; +type FR743 = DeepReadonly743>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion743 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha743 = Extract; +type ExcludeZulu743 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA743 { width: number; height: number; depth: number } +interface ShapeB743 { color: string; opacity: number; blend: string } +interface ShapeC743 { x: number; y: number; z: number; w: number } +interface ShapeD743 { label: string; title: string; summary: string } + +type Combined743 = ShapeA743 & ShapeB743 & ShapeC743 & ShapeD743; +type OptionalAll743 = { [K in keyof Combined743]?: Combined743[K] }; +type RequiredAll743 = { [K in keyof Combined743]-?: Combined743[K] }; +type ReadonlyAll743 = { readonly [K in keyof Combined743]: Combined743[K] }; +type NullableAll743 = { [K in keyof Combined743]: Combined743[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString743 = T extends string ? true : false; +type IsNumber743 = T extends number ? true : false; +type TypeName743 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames743 = { + [K in keyof BigRecord743]: TypeName743; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb743 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource743 = "user" | "post" | "comment" | "tag" | "category"; +type Action743 = `${Verb743}_${Resource743}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise743 = T extends Promise ? UnwrapPromise743 : T; +type UnwrapArray743 = T extends (infer U)[] ? UnwrapArray743 : T; +type Head743 = T extends [infer H, ...infer _] ? H : never; +type Tail743 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation743 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation743>] + : never; + +type SmallUnion743 = "a" | "b" | "c" | "d"; +type AllPerms743 = Permutation743; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig743, + Flat743, + FR743, + BigUnion743, + ExtractAlpha743, + ExcludeZulu743, + OptionalAll743, + RequiredAll743, + ReadonlyAll743, + NullableAll743, + TypeNames743, + Action743, + AllPerms743, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts new file mode 100644 index 00000000..33d3d12c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-44 (seed 744) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord744 { + a744: { x: number; y: string; z: boolean }; + b744: { p: string[]; q: Record }; + c744: { nested: { deep: { deeper: { deepest: string } } } }; + d744: number; + e744: string; + f744: boolean; + g744: null; + h744: undefined; + i744: bigint; + j744: symbol; +} + +type PartialBig744 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten744 = T extends Array ? Flatten744 : T; +type Nested744 = number[][][][][][][][][][]; +type Flat744 = Flatten744; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly744 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly744 : T[K]; +}; +type DeepRequired744 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired744 : T[K]; +}; +type FR744 = DeepReadonly744>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion744 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha744 = Extract; +type ExcludeZulu744 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA744 { width: number; height: number; depth: number } +interface ShapeB744 { color: string; opacity: number; blend: string } +interface ShapeC744 { x: number; y: number; z: number; w: number } +interface ShapeD744 { label: string; title: string; summary: string } + +type Combined744 = ShapeA744 & ShapeB744 & ShapeC744 & ShapeD744; +type OptionalAll744 = { [K in keyof Combined744]?: Combined744[K] }; +type RequiredAll744 = { [K in keyof Combined744]-?: Combined744[K] }; +type ReadonlyAll744 = { readonly [K in keyof Combined744]: Combined744[K] }; +type NullableAll744 = { [K in keyof Combined744]: Combined744[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString744 = T extends string ? true : false; +type IsNumber744 = T extends number ? true : false; +type TypeName744 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames744 = { + [K in keyof BigRecord744]: TypeName744; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb744 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource744 = "user" | "post" | "comment" | "tag" | "category"; +type Action744 = `${Verb744}_${Resource744}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise744 = T extends Promise ? UnwrapPromise744 : T; +type UnwrapArray744 = T extends (infer U)[] ? UnwrapArray744 : T; +type Head744 = T extends [infer H, ...infer _] ? H : never; +type Tail744 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation744 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation744>] + : never; + +type SmallUnion744 = "a" | "b" | "c" | "d"; +type AllPerms744 = Permutation744; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig744, + Flat744, + FR744, + BigUnion744, + ExtractAlpha744, + ExcludeZulu744, + OptionalAll744, + RequiredAll744, + ReadonlyAll744, + NullableAll744, + TypeNames744, + Action744, + AllPerms744, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts new file mode 100644 index 00000000..a5249e82 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-45 (seed 745) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord745 { + a745: { x: number; y: string; z: boolean }; + b745: { p: string[]; q: Record }; + c745: { nested: { deep: { deeper: { deepest: string } } } }; + d745: number; + e745: string; + f745: boolean; + g745: null; + h745: undefined; + i745: bigint; + j745: symbol; +} + +type PartialBig745 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten745 = T extends Array ? Flatten745 : T; +type Nested745 = number[][][][][][][][][][]; +type Flat745 = Flatten745; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly745 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly745 : T[K]; +}; +type DeepRequired745 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired745 : T[K]; +}; +type FR745 = DeepReadonly745>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion745 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha745 = Extract; +type ExcludeZulu745 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA745 { width: number; height: number; depth: number } +interface ShapeB745 { color: string; opacity: number; blend: string } +interface ShapeC745 { x: number; y: number; z: number; w: number } +interface ShapeD745 { label: string; title: string; summary: string } + +type Combined745 = ShapeA745 & ShapeB745 & ShapeC745 & ShapeD745; +type OptionalAll745 = { [K in keyof Combined745]?: Combined745[K] }; +type RequiredAll745 = { [K in keyof Combined745]-?: Combined745[K] }; +type ReadonlyAll745 = { readonly [K in keyof Combined745]: Combined745[K] }; +type NullableAll745 = { [K in keyof Combined745]: Combined745[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString745 = T extends string ? true : false; +type IsNumber745 = T extends number ? true : false; +type TypeName745 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames745 = { + [K in keyof BigRecord745]: TypeName745; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb745 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource745 = "user" | "post" | "comment" | "tag" | "category"; +type Action745 = `${Verb745}_${Resource745}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise745 = T extends Promise ? UnwrapPromise745 : T; +type UnwrapArray745 = T extends (infer U)[] ? UnwrapArray745 : T; +type Head745 = T extends [infer H, ...infer _] ? H : never; +type Tail745 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation745 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation745>] + : never; + +type SmallUnion745 = "a" | "b" | "c" | "d"; +type AllPerms745 = Permutation745; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig745, + Flat745, + FR745, + BigUnion745, + ExtractAlpha745, + ExcludeZulu745, + OptionalAll745, + RequiredAll745, + ReadonlyAll745, + NullableAll745, + TypeNames745, + Action745, + AllPerms745, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts new file mode 100644 index 00000000..4e7cf89c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-46 (seed 746) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord746 { + a746: { x: number; y: string; z: boolean }; + b746: { p: string[]; q: Record }; + c746: { nested: { deep: { deeper: { deepest: string } } } }; + d746: number; + e746: string; + f746: boolean; + g746: null; + h746: undefined; + i746: bigint; + j746: symbol; +} + +type PartialBig746 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten746 = T extends Array ? Flatten746 : T; +type Nested746 = number[][][][][][][][][][]; +type Flat746 = Flatten746; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly746 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly746 : T[K]; +}; +type DeepRequired746 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired746 : T[K]; +}; +type FR746 = DeepReadonly746>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion746 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha746 = Extract; +type ExcludeZulu746 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA746 { width: number; height: number; depth: number } +interface ShapeB746 { color: string; opacity: number; blend: string } +interface ShapeC746 { x: number; y: number; z: number; w: number } +interface ShapeD746 { label: string; title: string; summary: string } + +type Combined746 = ShapeA746 & ShapeB746 & ShapeC746 & ShapeD746; +type OptionalAll746 = { [K in keyof Combined746]?: Combined746[K] }; +type RequiredAll746 = { [K in keyof Combined746]-?: Combined746[K] }; +type ReadonlyAll746 = { readonly [K in keyof Combined746]: Combined746[K] }; +type NullableAll746 = { [K in keyof Combined746]: Combined746[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString746 = T extends string ? true : false; +type IsNumber746 = T extends number ? true : false; +type TypeName746 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames746 = { + [K in keyof BigRecord746]: TypeName746; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb746 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource746 = "user" | "post" | "comment" | "tag" | "category"; +type Action746 = `${Verb746}_${Resource746}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise746 = T extends Promise ? UnwrapPromise746 : T; +type UnwrapArray746 = T extends (infer U)[] ? UnwrapArray746 : T; +type Head746 = T extends [infer H, ...infer _] ? H : never; +type Tail746 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation746 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation746>] + : never; + +type SmallUnion746 = "a" | "b" | "c" | "d"; +type AllPerms746 = Permutation746; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig746, + Flat746, + FR746, + BigUnion746, + ExtractAlpha746, + ExcludeZulu746, + OptionalAll746, + RequiredAll746, + ReadonlyAll746, + NullableAll746, + TypeNames746, + Action746, + AllPerms746, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts new file mode 100644 index 00000000..1e33743b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-47 (seed 747) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord747 { + a747: { x: number; y: string; z: boolean }; + b747: { p: string[]; q: Record }; + c747: { nested: { deep: { deeper: { deepest: string } } } }; + d747: number; + e747: string; + f747: boolean; + g747: null; + h747: undefined; + i747: bigint; + j747: symbol; +} + +type PartialBig747 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten747 = T extends Array ? Flatten747 : T; +type Nested747 = number[][][][][][][][][][]; +type Flat747 = Flatten747; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly747 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly747 : T[K]; +}; +type DeepRequired747 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired747 : T[K]; +}; +type FR747 = DeepReadonly747>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion747 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha747 = Extract; +type ExcludeZulu747 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA747 { width: number; height: number; depth: number } +interface ShapeB747 { color: string; opacity: number; blend: string } +interface ShapeC747 { x: number; y: number; z: number; w: number } +interface ShapeD747 { label: string; title: string; summary: string } + +type Combined747 = ShapeA747 & ShapeB747 & ShapeC747 & ShapeD747; +type OptionalAll747 = { [K in keyof Combined747]?: Combined747[K] }; +type RequiredAll747 = { [K in keyof Combined747]-?: Combined747[K] }; +type ReadonlyAll747 = { readonly [K in keyof Combined747]: Combined747[K] }; +type NullableAll747 = { [K in keyof Combined747]: Combined747[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString747 = T extends string ? true : false; +type IsNumber747 = T extends number ? true : false; +type TypeName747 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames747 = { + [K in keyof BigRecord747]: TypeName747; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb747 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource747 = "user" | "post" | "comment" | "tag" | "category"; +type Action747 = `${Verb747}_${Resource747}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise747 = T extends Promise ? UnwrapPromise747 : T; +type UnwrapArray747 = T extends (infer U)[] ? UnwrapArray747 : T; +type Head747 = T extends [infer H, ...infer _] ? H : never; +type Tail747 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation747 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation747>] + : never; + +type SmallUnion747 = "a" | "b" | "c" | "d"; +type AllPerms747 = Permutation747; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig747, + Flat747, + FR747, + BigUnion747, + ExtractAlpha747, + ExcludeZulu747, + OptionalAll747, + RequiredAll747, + ReadonlyAll747, + NullableAll747, + TypeNames747, + Action747, + AllPerms747, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts new file mode 100644 index 00000000..c63faf7b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-48 (seed 748) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord748 { + a748: { x: number; y: string; z: boolean }; + b748: { p: string[]; q: Record }; + c748: { nested: { deep: { deeper: { deepest: string } } } }; + d748: number; + e748: string; + f748: boolean; + g748: null; + h748: undefined; + i748: bigint; + j748: symbol; +} + +type PartialBig748 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten748 = T extends Array ? Flatten748 : T; +type Nested748 = number[][][][][][][][][][]; +type Flat748 = Flatten748; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly748 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly748 : T[K]; +}; +type DeepRequired748 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired748 : T[K]; +}; +type FR748 = DeepReadonly748>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion748 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha748 = Extract; +type ExcludeZulu748 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA748 { width: number; height: number; depth: number } +interface ShapeB748 { color: string; opacity: number; blend: string } +interface ShapeC748 { x: number; y: number; z: number; w: number } +interface ShapeD748 { label: string; title: string; summary: string } + +type Combined748 = ShapeA748 & ShapeB748 & ShapeC748 & ShapeD748; +type OptionalAll748 = { [K in keyof Combined748]?: Combined748[K] }; +type RequiredAll748 = { [K in keyof Combined748]-?: Combined748[K] }; +type ReadonlyAll748 = { readonly [K in keyof Combined748]: Combined748[K] }; +type NullableAll748 = { [K in keyof Combined748]: Combined748[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString748 = T extends string ? true : false; +type IsNumber748 = T extends number ? true : false; +type TypeName748 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames748 = { + [K in keyof BigRecord748]: TypeName748; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb748 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource748 = "user" | "post" | "comment" | "tag" | "category"; +type Action748 = `${Verb748}_${Resource748}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise748 = T extends Promise ? UnwrapPromise748 : T; +type UnwrapArray748 = T extends (infer U)[] ? UnwrapArray748 : T; +type Head748 = T extends [infer H, ...infer _] ? H : never; +type Tail748 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation748 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation748>] + : never; + +type SmallUnion748 = "a" | "b" | "c" | "d"; +type AllPerms748 = Permutation748; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig748, + Flat748, + FR748, + BigUnion748, + ExtractAlpha748, + ExcludeZulu748, + OptionalAll748, + RequiredAll748, + ReadonlyAll748, + NullableAll748, + TypeNames748, + Action748, + AllPerms748, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts new file mode 100644 index 00000000..c8f5ff63 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-49 (seed 749) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord749 { + a749: { x: number; y: string; z: boolean }; + b749: { p: string[]; q: Record }; + c749: { nested: { deep: { deeper: { deepest: string } } } }; + d749: number; + e749: string; + f749: boolean; + g749: null; + h749: undefined; + i749: bigint; + j749: symbol; +} + +type PartialBig749 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten749 = T extends Array ? Flatten749 : T; +type Nested749 = number[][][][][][][][][][]; +type Flat749 = Flatten749; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly749 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly749 : T[K]; +}; +type DeepRequired749 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired749 : T[K]; +}; +type FR749 = DeepReadonly749>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion749 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha749 = Extract; +type ExcludeZulu749 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA749 { width: number; height: number; depth: number } +interface ShapeB749 { color: string; opacity: number; blend: string } +interface ShapeC749 { x: number; y: number; z: number; w: number } +interface ShapeD749 { label: string; title: string; summary: string } + +type Combined749 = ShapeA749 & ShapeB749 & ShapeC749 & ShapeD749; +type OptionalAll749 = { [K in keyof Combined749]?: Combined749[K] }; +type RequiredAll749 = { [K in keyof Combined749]-?: Combined749[K] }; +type ReadonlyAll749 = { readonly [K in keyof Combined749]: Combined749[K] }; +type NullableAll749 = { [K in keyof Combined749]: Combined749[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString749 = T extends string ? true : false; +type IsNumber749 = T extends number ? true : false; +type TypeName749 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames749 = { + [K in keyof BigRecord749]: TypeName749; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb749 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource749 = "user" | "post" | "comment" | "tag" | "category"; +type Action749 = `${Verb749}_${Resource749}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise749 = T extends Promise ? UnwrapPromise749 : T; +type UnwrapArray749 = T extends (infer U)[] ? UnwrapArray749 : T; +type Head749 = T extends [infer H, ...infer _] ? H : never; +type Tail749 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation749 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation749>] + : never; + +type SmallUnion749 = "a" | "b" | "c" | "d"; +type AllPerms749 = Permutation749; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig749, + Flat749, + FR749, + BigUnion749, + ExtractAlpha749, + ExcludeZulu749, + OptionalAll749, + RequiredAll749, + ReadonlyAll749, + NullableAll749, + TypeNames749, + Action749, + AllPerms749, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts new file mode 100644 index 00000000..333271fa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts @@ -0,0 +1,125 @@ +// pkg-07 / types-50 (seed 750) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord750 { + a750: { x: number; y: string; z: boolean }; + b750: { p: string[]; q: Record }; + c750: { nested: { deep: { deeper: { deepest: string } } } }; + d750: number; + e750: string; + f750: boolean; + g750: null; + h750: undefined; + i750: bigint; + j750: symbol; +} + +type PartialBig750 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten750 = T extends Array ? Flatten750 : T; +type Nested750 = number[][][][][][][][][][]; +type Flat750 = Flatten750; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly750 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly750 : T[K]; +}; +type DeepRequired750 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired750 : T[K]; +}; +type FR750 = DeepReadonly750>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion750 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha750 = Extract; +type ExcludeZulu750 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA750 { width: number; height: number; depth: number } +interface ShapeB750 { color: string; opacity: number; blend: string } +interface ShapeC750 { x: number; y: number; z: number; w: number } +interface ShapeD750 { label: string; title: string; summary: string } + +type Combined750 = ShapeA750 & ShapeB750 & ShapeC750 & ShapeD750; +type OptionalAll750 = { [K in keyof Combined750]?: Combined750[K] }; +type RequiredAll750 = { [K in keyof Combined750]-?: Combined750[K] }; +type ReadonlyAll750 = { readonly [K in keyof Combined750]: Combined750[K] }; +type NullableAll750 = { [K in keyof Combined750]: Combined750[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString750 = T extends string ? true : false; +type IsNumber750 = T extends number ? true : false; +type TypeName750 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames750 = { + [K in keyof BigRecord750]: TypeName750; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb750 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource750 = "user" | "post" | "comment" | "tag" | "category"; +type Action750 = `${Verb750}_${Resource750}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise750 = T extends Promise ? UnwrapPromise750 : T; +type UnwrapArray750 = T extends (infer U)[] ? UnwrapArray750 : T; +type Head750 = T extends [infer H, ...infer _] ? H : never; +type Tail750 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation750 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation750>] + : never; + +type SmallUnion750 = "a" | "b" | "c" | "d"; +type AllPerms750 = Permutation750; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig750, + Flat750, + FR750, + BigUnion750, + ExtractAlpha750, + ExcludeZulu750, + OptionalAll750, + RequiredAll750, + ReadonlyAll750, + NullableAll750, + TypeNames750, + Action750, + AllPerms750, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts new file mode 100644 index 00000000..35b154be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-01 (seed 801) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord801 { + a801: { x: number; y: string; z: boolean }; + b801: { p: string[]; q: Record }; + c801: { nested: { deep: { deeper: { deepest: string } } } }; + d801: number; + e801: string; + f801: boolean; + g801: null; + h801: undefined; + i801: bigint; + j801: symbol; +} + +type PartialBig801 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten801 = T extends Array ? Flatten801 : T; +type Nested801 = number[][][][][][][][][][]; +type Flat801 = Flatten801; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly801 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly801 : T[K]; +}; +type DeepRequired801 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired801 : T[K]; +}; +type FR801 = DeepReadonly801>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion801 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha801 = Extract; +type ExcludeZulu801 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA801 { width: number; height: number; depth: number } +interface ShapeB801 { color: string; opacity: number; blend: string } +interface ShapeC801 { x: number; y: number; z: number; w: number } +interface ShapeD801 { label: string; title: string; summary: string } + +type Combined801 = ShapeA801 & ShapeB801 & ShapeC801 & ShapeD801; +type OptionalAll801 = { [K in keyof Combined801]?: Combined801[K] }; +type RequiredAll801 = { [K in keyof Combined801]-?: Combined801[K] }; +type ReadonlyAll801 = { readonly [K in keyof Combined801]: Combined801[K] }; +type NullableAll801 = { [K in keyof Combined801]: Combined801[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString801 = T extends string ? true : false; +type IsNumber801 = T extends number ? true : false; +type TypeName801 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames801 = { + [K in keyof BigRecord801]: TypeName801; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb801 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource801 = "user" | "post" | "comment" | "tag" | "category"; +type Action801 = `${Verb801}_${Resource801}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise801 = T extends Promise ? UnwrapPromise801 : T; +type UnwrapArray801 = T extends (infer U)[] ? UnwrapArray801 : T; +type Head801 = T extends [infer H, ...infer _] ? H : never; +type Tail801 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation801 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation801>] + : never; + +type SmallUnion801 = "a" | "b" | "c" | "d"; +type AllPerms801 = Permutation801; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig801, + Flat801, + FR801, + BigUnion801, + ExtractAlpha801, + ExcludeZulu801, + OptionalAll801, + RequiredAll801, + ReadonlyAll801, + NullableAll801, + TypeNames801, + Action801, + AllPerms801, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts new file mode 100644 index 00000000..7176dd16 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-02 (seed 802) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord802 { + a802: { x: number; y: string; z: boolean }; + b802: { p: string[]; q: Record }; + c802: { nested: { deep: { deeper: { deepest: string } } } }; + d802: number; + e802: string; + f802: boolean; + g802: null; + h802: undefined; + i802: bigint; + j802: symbol; +} + +type PartialBig802 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten802 = T extends Array ? Flatten802 : T; +type Nested802 = number[][][][][][][][][][]; +type Flat802 = Flatten802; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly802 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly802 : T[K]; +}; +type DeepRequired802 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired802 : T[K]; +}; +type FR802 = DeepReadonly802>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion802 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha802 = Extract; +type ExcludeZulu802 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA802 { width: number; height: number; depth: number } +interface ShapeB802 { color: string; opacity: number; blend: string } +interface ShapeC802 { x: number; y: number; z: number; w: number } +interface ShapeD802 { label: string; title: string; summary: string } + +type Combined802 = ShapeA802 & ShapeB802 & ShapeC802 & ShapeD802; +type OptionalAll802 = { [K in keyof Combined802]?: Combined802[K] }; +type RequiredAll802 = { [K in keyof Combined802]-?: Combined802[K] }; +type ReadonlyAll802 = { readonly [K in keyof Combined802]: Combined802[K] }; +type NullableAll802 = { [K in keyof Combined802]: Combined802[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString802 = T extends string ? true : false; +type IsNumber802 = T extends number ? true : false; +type TypeName802 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames802 = { + [K in keyof BigRecord802]: TypeName802; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb802 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource802 = "user" | "post" | "comment" | "tag" | "category"; +type Action802 = `${Verb802}_${Resource802}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise802 = T extends Promise ? UnwrapPromise802 : T; +type UnwrapArray802 = T extends (infer U)[] ? UnwrapArray802 : T; +type Head802 = T extends [infer H, ...infer _] ? H : never; +type Tail802 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation802 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation802>] + : never; + +type SmallUnion802 = "a" | "b" | "c" | "d"; +type AllPerms802 = Permutation802; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig802, + Flat802, + FR802, + BigUnion802, + ExtractAlpha802, + ExcludeZulu802, + OptionalAll802, + RequiredAll802, + ReadonlyAll802, + NullableAll802, + TypeNames802, + Action802, + AllPerms802, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts new file mode 100644 index 00000000..0b268c55 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-03 (seed 803) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord803 { + a803: { x: number; y: string; z: boolean }; + b803: { p: string[]; q: Record }; + c803: { nested: { deep: { deeper: { deepest: string } } } }; + d803: number; + e803: string; + f803: boolean; + g803: null; + h803: undefined; + i803: bigint; + j803: symbol; +} + +type PartialBig803 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten803 = T extends Array ? Flatten803 : T; +type Nested803 = number[][][][][][][][][][]; +type Flat803 = Flatten803; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly803 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly803 : T[K]; +}; +type DeepRequired803 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired803 : T[K]; +}; +type FR803 = DeepReadonly803>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion803 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha803 = Extract; +type ExcludeZulu803 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA803 { width: number; height: number; depth: number } +interface ShapeB803 { color: string; opacity: number; blend: string } +interface ShapeC803 { x: number; y: number; z: number; w: number } +interface ShapeD803 { label: string; title: string; summary: string } + +type Combined803 = ShapeA803 & ShapeB803 & ShapeC803 & ShapeD803; +type OptionalAll803 = { [K in keyof Combined803]?: Combined803[K] }; +type RequiredAll803 = { [K in keyof Combined803]-?: Combined803[K] }; +type ReadonlyAll803 = { readonly [K in keyof Combined803]: Combined803[K] }; +type NullableAll803 = { [K in keyof Combined803]: Combined803[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString803 = T extends string ? true : false; +type IsNumber803 = T extends number ? true : false; +type TypeName803 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames803 = { + [K in keyof BigRecord803]: TypeName803; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb803 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource803 = "user" | "post" | "comment" | "tag" | "category"; +type Action803 = `${Verb803}_${Resource803}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise803 = T extends Promise ? UnwrapPromise803 : T; +type UnwrapArray803 = T extends (infer U)[] ? UnwrapArray803 : T; +type Head803 = T extends [infer H, ...infer _] ? H : never; +type Tail803 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation803 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation803>] + : never; + +type SmallUnion803 = "a" | "b" | "c" | "d"; +type AllPerms803 = Permutation803; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig803, + Flat803, + FR803, + BigUnion803, + ExtractAlpha803, + ExcludeZulu803, + OptionalAll803, + RequiredAll803, + ReadonlyAll803, + NullableAll803, + TypeNames803, + Action803, + AllPerms803, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts new file mode 100644 index 00000000..ecec3cfc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-04 (seed 804) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord804 { + a804: { x: number; y: string; z: boolean }; + b804: { p: string[]; q: Record }; + c804: { nested: { deep: { deeper: { deepest: string } } } }; + d804: number; + e804: string; + f804: boolean; + g804: null; + h804: undefined; + i804: bigint; + j804: symbol; +} + +type PartialBig804 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten804 = T extends Array ? Flatten804 : T; +type Nested804 = number[][][][][][][][][][]; +type Flat804 = Flatten804; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly804 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly804 : T[K]; +}; +type DeepRequired804 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired804 : T[K]; +}; +type FR804 = DeepReadonly804>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion804 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha804 = Extract; +type ExcludeZulu804 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA804 { width: number; height: number; depth: number } +interface ShapeB804 { color: string; opacity: number; blend: string } +interface ShapeC804 { x: number; y: number; z: number; w: number } +interface ShapeD804 { label: string; title: string; summary: string } + +type Combined804 = ShapeA804 & ShapeB804 & ShapeC804 & ShapeD804; +type OptionalAll804 = { [K in keyof Combined804]?: Combined804[K] }; +type RequiredAll804 = { [K in keyof Combined804]-?: Combined804[K] }; +type ReadonlyAll804 = { readonly [K in keyof Combined804]: Combined804[K] }; +type NullableAll804 = { [K in keyof Combined804]: Combined804[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString804 = T extends string ? true : false; +type IsNumber804 = T extends number ? true : false; +type TypeName804 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames804 = { + [K in keyof BigRecord804]: TypeName804; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb804 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource804 = "user" | "post" | "comment" | "tag" | "category"; +type Action804 = `${Verb804}_${Resource804}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise804 = T extends Promise ? UnwrapPromise804 : T; +type UnwrapArray804 = T extends (infer U)[] ? UnwrapArray804 : T; +type Head804 = T extends [infer H, ...infer _] ? H : never; +type Tail804 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation804 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation804>] + : never; + +type SmallUnion804 = "a" | "b" | "c" | "d"; +type AllPerms804 = Permutation804; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig804, + Flat804, + FR804, + BigUnion804, + ExtractAlpha804, + ExcludeZulu804, + OptionalAll804, + RequiredAll804, + ReadonlyAll804, + NullableAll804, + TypeNames804, + Action804, + AllPerms804, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts new file mode 100644 index 00000000..7b2fbfa3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-05 (seed 805) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord805 { + a805: { x: number; y: string; z: boolean }; + b805: { p: string[]; q: Record }; + c805: { nested: { deep: { deeper: { deepest: string } } } }; + d805: number; + e805: string; + f805: boolean; + g805: null; + h805: undefined; + i805: bigint; + j805: symbol; +} + +type PartialBig805 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten805 = T extends Array ? Flatten805 : T; +type Nested805 = number[][][][][][][][][][]; +type Flat805 = Flatten805; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly805 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly805 : T[K]; +}; +type DeepRequired805 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired805 : T[K]; +}; +type FR805 = DeepReadonly805>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion805 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha805 = Extract; +type ExcludeZulu805 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA805 { width: number; height: number; depth: number } +interface ShapeB805 { color: string; opacity: number; blend: string } +interface ShapeC805 { x: number; y: number; z: number; w: number } +interface ShapeD805 { label: string; title: string; summary: string } + +type Combined805 = ShapeA805 & ShapeB805 & ShapeC805 & ShapeD805; +type OptionalAll805 = { [K in keyof Combined805]?: Combined805[K] }; +type RequiredAll805 = { [K in keyof Combined805]-?: Combined805[K] }; +type ReadonlyAll805 = { readonly [K in keyof Combined805]: Combined805[K] }; +type NullableAll805 = { [K in keyof Combined805]: Combined805[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString805 = T extends string ? true : false; +type IsNumber805 = T extends number ? true : false; +type TypeName805 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames805 = { + [K in keyof BigRecord805]: TypeName805; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb805 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource805 = "user" | "post" | "comment" | "tag" | "category"; +type Action805 = `${Verb805}_${Resource805}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise805 = T extends Promise ? UnwrapPromise805 : T; +type UnwrapArray805 = T extends (infer U)[] ? UnwrapArray805 : T; +type Head805 = T extends [infer H, ...infer _] ? H : never; +type Tail805 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation805 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation805>] + : never; + +type SmallUnion805 = "a" | "b" | "c" | "d"; +type AllPerms805 = Permutation805; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig805, + Flat805, + FR805, + BigUnion805, + ExtractAlpha805, + ExcludeZulu805, + OptionalAll805, + RequiredAll805, + ReadonlyAll805, + NullableAll805, + TypeNames805, + Action805, + AllPerms805, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts new file mode 100644 index 00000000..9b897e34 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-06 (seed 806) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord806 { + a806: { x: number; y: string; z: boolean }; + b806: { p: string[]; q: Record }; + c806: { nested: { deep: { deeper: { deepest: string } } } }; + d806: number; + e806: string; + f806: boolean; + g806: null; + h806: undefined; + i806: bigint; + j806: symbol; +} + +type PartialBig806 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten806 = T extends Array ? Flatten806 : T; +type Nested806 = number[][][][][][][][][][]; +type Flat806 = Flatten806; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly806 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly806 : T[K]; +}; +type DeepRequired806 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired806 : T[K]; +}; +type FR806 = DeepReadonly806>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion806 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha806 = Extract; +type ExcludeZulu806 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA806 { width: number; height: number; depth: number } +interface ShapeB806 { color: string; opacity: number; blend: string } +interface ShapeC806 { x: number; y: number; z: number; w: number } +interface ShapeD806 { label: string; title: string; summary: string } + +type Combined806 = ShapeA806 & ShapeB806 & ShapeC806 & ShapeD806; +type OptionalAll806 = { [K in keyof Combined806]?: Combined806[K] }; +type RequiredAll806 = { [K in keyof Combined806]-?: Combined806[K] }; +type ReadonlyAll806 = { readonly [K in keyof Combined806]: Combined806[K] }; +type NullableAll806 = { [K in keyof Combined806]: Combined806[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString806 = T extends string ? true : false; +type IsNumber806 = T extends number ? true : false; +type TypeName806 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames806 = { + [K in keyof BigRecord806]: TypeName806; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb806 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource806 = "user" | "post" | "comment" | "tag" | "category"; +type Action806 = `${Verb806}_${Resource806}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise806 = T extends Promise ? UnwrapPromise806 : T; +type UnwrapArray806 = T extends (infer U)[] ? UnwrapArray806 : T; +type Head806 = T extends [infer H, ...infer _] ? H : never; +type Tail806 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation806 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation806>] + : never; + +type SmallUnion806 = "a" | "b" | "c" | "d"; +type AllPerms806 = Permutation806; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig806, + Flat806, + FR806, + BigUnion806, + ExtractAlpha806, + ExcludeZulu806, + OptionalAll806, + RequiredAll806, + ReadonlyAll806, + NullableAll806, + TypeNames806, + Action806, + AllPerms806, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts new file mode 100644 index 00000000..6e9d9c25 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-07 (seed 807) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord807 { + a807: { x: number; y: string; z: boolean }; + b807: { p: string[]; q: Record }; + c807: { nested: { deep: { deeper: { deepest: string } } } }; + d807: number; + e807: string; + f807: boolean; + g807: null; + h807: undefined; + i807: bigint; + j807: symbol; +} + +type PartialBig807 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten807 = T extends Array ? Flatten807 : T; +type Nested807 = number[][][][][][][][][][]; +type Flat807 = Flatten807; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly807 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly807 : T[K]; +}; +type DeepRequired807 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired807 : T[K]; +}; +type FR807 = DeepReadonly807>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion807 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha807 = Extract; +type ExcludeZulu807 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA807 { width: number; height: number; depth: number } +interface ShapeB807 { color: string; opacity: number; blend: string } +interface ShapeC807 { x: number; y: number; z: number; w: number } +interface ShapeD807 { label: string; title: string; summary: string } + +type Combined807 = ShapeA807 & ShapeB807 & ShapeC807 & ShapeD807; +type OptionalAll807 = { [K in keyof Combined807]?: Combined807[K] }; +type RequiredAll807 = { [K in keyof Combined807]-?: Combined807[K] }; +type ReadonlyAll807 = { readonly [K in keyof Combined807]: Combined807[K] }; +type NullableAll807 = { [K in keyof Combined807]: Combined807[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString807 = T extends string ? true : false; +type IsNumber807 = T extends number ? true : false; +type TypeName807 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames807 = { + [K in keyof BigRecord807]: TypeName807; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb807 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource807 = "user" | "post" | "comment" | "tag" | "category"; +type Action807 = `${Verb807}_${Resource807}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise807 = T extends Promise ? UnwrapPromise807 : T; +type UnwrapArray807 = T extends (infer U)[] ? UnwrapArray807 : T; +type Head807 = T extends [infer H, ...infer _] ? H : never; +type Tail807 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation807 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation807>] + : never; + +type SmallUnion807 = "a" | "b" | "c" | "d"; +type AllPerms807 = Permutation807; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig807, + Flat807, + FR807, + BigUnion807, + ExtractAlpha807, + ExcludeZulu807, + OptionalAll807, + RequiredAll807, + ReadonlyAll807, + NullableAll807, + TypeNames807, + Action807, + AllPerms807, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts new file mode 100644 index 00000000..a878717d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-08 (seed 808) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord808 { + a808: { x: number; y: string; z: boolean }; + b808: { p: string[]; q: Record }; + c808: { nested: { deep: { deeper: { deepest: string } } } }; + d808: number; + e808: string; + f808: boolean; + g808: null; + h808: undefined; + i808: bigint; + j808: symbol; +} + +type PartialBig808 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten808 = T extends Array ? Flatten808 : T; +type Nested808 = number[][][][][][][][][][]; +type Flat808 = Flatten808; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly808 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly808 : T[K]; +}; +type DeepRequired808 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired808 : T[K]; +}; +type FR808 = DeepReadonly808>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion808 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha808 = Extract; +type ExcludeZulu808 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA808 { width: number; height: number; depth: number } +interface ShapeB808 { color: string; opacity: number; blend: string } +interface ShapeC808 { x: number; y: number; z: number; w: number } +interface ShapeD808 { label: string; title: string; summary: string } + +type Combined808 = ShapeA808 & ShapeB808 & ShapeC808 & ShapeD808; +type OptionalAll808 = { [K in keyof Combined808]?: Combined808[K] }; +type RequiredAll808 = { [K in keyof Combined808]-?: Combined808[K] }; +type ReadonlyAll808 = { readonly [K in keyof Combined808]: Combined808[K] }; +type NullableAll808 = { [K in keyof Combined808]: Combined808[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString808 = T extends string ? true : false; +type IsNumber808 = T extends number ? true : false; +type TypeName808 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames808 = { + [K in keyof BigRecord808]: TypeName808; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb808 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource808 = "user" | "post" | "comment" | "tag" | "category"; +type Action808 = `${Verb808}_${Resource808}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise808 = T extends Promise ? UnwrapPromise808 : T; +type UnwrapArray808 = T extends (infer U)[] ? UnwrapArray808 : T; +type Head808 = T extends [infer H, ...infer _] ? H : never; +type Tail808 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation808 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation808>] + : never; + +type SmallUnion808 = "a" | "b" | "c" | "d"; +type AllPerms808 = Permutation808; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig808, + Flat808, + FR808, + BigUnion808, + ExtractAlpha808, + ExcludeZulu808, + OptionalAll808, + RequiredAll808, + ReadonlyAll808, + NullableAll808, + TypeNames808, + Action808, + AllPerms808, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts new file mode 100644 index 00000000..f9a55919 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-09 (seed 809) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord809 { + a809: { x: number; y: string; z: boolean }; + b809: { p: string[]; q: Record }; + c809: { nested: { deep: { deeper: { deepest: string } } } }; + d809: number; + e809: string; + f809: boolean; + g809: null; + h809: undefined; + i809: bigint; + j809: symbol; +} + +type PartialBig809 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten809 = T extends Array ? Flatten809 : T; +type Nested809 = number[][][][][][][][][][]; +type Flat809 = Flatten809; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly809 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly809 : T[K]; +}; +type DeepRequired809 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired809 : T[K]; +}; +type FR809 = DeepReadonly809>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion809 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha809 = Extract; +type ExcludeZulu809 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA809 { width: number; height: number; depth: number } +interface ShapeB809 { color: string; opacity: number; blend: string } +interface ShapeC809 { x: number; y: number; z: number; w: number } +interface ShapeD809 { label: string; title: string; summary: string } + +type Combined809 = ShapeA809 & ShapeB809 & ShapeC809 & ShapeD809; +type OptionalAll809 = { [K in keyof Combined809]?: Combined809[K] }; +type RequiredAll809 = { [K in keyof Combined809]-?: Combined809[K] }; +type ReadonlyAll809 = { readonly [K in keyof Combined809]: Combined809[K] }; +type NullableAll809 = { [K in keyof Combined809]: Combined809[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString809 = T extends string ? true : false; +type IsNumber809 = T extends number ? true : false; +type TypeName809 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames809 = { + [K in keyof BigRecord809]: TypeName809; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb809 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource809 = "user" | "post" | "comment" | "tag" | "category"; +type Action809 = `${Verb809}_${Resource809}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise809 = T extends Promise ? UnwrapPromise809 : T; +type UnwrapArray809 = T extends (infer U)[] ? UnwrapArray809 : T; +type Head809 = T extends [infer H, ...infer _] ? H : never; +type Tail809 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation809 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation809>] + : never; + +type SmallUnion809 = "a" | "b" | "c" | "d"; +type AllPerms809 = Permutation809; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig809, + Flat809, + FR809, + BigUnion809, + ExtractAlpha809, + ExcludeZulu809, + OptionalAll809, + RequiredAll809, + ReadonlyAll809, + NullableAll809, + TypeNames809, + Action809, + AllPerms809, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts new file mode 100644 index 00000000..62ca3307 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-10 (seed 810) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord810 { + a810: { x: number; y: string; z: boolean }; + b810: { p: string[]; q: Record }; + c810: { nested: { deep: { deeper: { deepest: string } } } }; + d810: number; + e810: string; + f810: boolean; + g810: null; + h810: undefined; + i810: bigint; + j810: symbol; +} + +type PartialBig810 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten810 = T extends Array ? Flatten810 : T; +type Nested810 = number[][][][][][][][][][]; +type Flat810 = Flatten810; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly810 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly810 : T[K]; +}; +type DeepRequired810 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired810 : T[K]; +}; +type FR810 = DeepReadonly810>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion810 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha810 = Extract; +type ExcludeZulu810 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA810 { width: number; height: number; depth: number } +interface ShapeB810 { color: string; opacity: number; blend: string } +interface ShapeC810 { x: number; y: number; z: number; w: number } +interface ShapeD810 { label: string; title: string; summary: string } + +type Combined810 = ShapeA810 & ShapeB810 & ShapeC810 & ShapeD810; +type OptionalAll810 = { [K in keyof Combined810]?: Combined810[K] }; +type RequiredAll810 = { [K in keyof Combined810]-?: Combined810[K] }; +type ReadonlyAll810 = { readonly [K in keyof Combined810]: Combined810[K] }; +type NullableAll810 = { [K in keyof Combined810]: Combined810[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString810 = T extends string ? true : false; +type IsNumber810 = T extends number ? true : false; +type TypeName810 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames810 = { + [K in keyof BigRecord810]: TypeName810; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb810 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource810 = "user" | "post" | "comment" | "tag" | "category"; +type Action810 = `${Verb810}_${Resource810}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise810 = T extends Promise ? UnwrapPromise810 : T; +type UnwrapArray810 = T extends (infer U)[] ? UnwrapArray810 : T; +type Head810 = T extends [infer H, ...infer _] ? H : never; +type Tail810 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation810 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation810>] + : never; + +type SmallUnion810 = "a" | "b" | "c" | "d"; +type AllPerms810 = Permutation810; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig810, + Flat810, + FR810, + BigUnion810, + ExtractAlpha810, + ExcludeZulu810, + OptionalAll810, + RequiredAll810, + ReadonlyAll810, + NullableAll810, + TypeNames810, + Action810, + AllPerms810, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts new file mode 100644 index 00000000..2f5fe555 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-11 (seed 811) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord811 { + a811: { x: number; y: string; z: boolean }; + b811: { p: string[]; q: Record }; + c811: { nested: { deep: { deeper: { deepest: string } } } }; + d811: number; + e811: string; + f811: boolean; + g811: null; + h811: undefined; + i811: bigint; + j811: symbol; +} + +type PartialBig811 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten811 = T extends Array ? Flatten811 : T; +type Nested811 = number[][][][][][][][][][]; +type Flat811 = Flatten811; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly811 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly811 : T[K]; +}; +type DeepRequired811 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired811 : T[K]; +}; +type FR811 = DeepReadonly811>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion811 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha811 = Extract; +type ExcludeZulu811 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA811 { width: number; height: number; depth: number } +interface ShapeB811 { color: string; opacity: number; blend: string } +interface ShapeC811 { x: number; y: number; z: number; w: number } +interface ShapeD811 { label: string; title: string; summary: string } + +type Combined811 = ShapeA811 & ShapeB811 & ShapeC811 & ShapeD811; +type OptionalAll811 = { [K in keyof Combined811]?: Combined811[K] }; +type RequiredAll811 = { [K in keyof Combined811]-?: Combined811[K] }; +type ReadonlyAll811 = { readonly [K in keyof Combined811]: Combined811[K] }; +type NullableAll811 = { [K in keyof Combined811]: Combined811[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString811 = T extends string ? true : false; +type IsNumber811 = T extends number ? true : false; +type TypeName811 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames811 = { + [K in keyof BigRecord811]: TypeName811; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb811 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource811 = "user" | "post" | "comment" | "tag" | "category"; +type Action811 = `${Verb811}_${Resource811}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise811 = T extends Promise ? UnwrapPromise811 : T; +type UnwrapArray811 = T extends (infer U)[] ? UnwrapArray811 : T; +type Head811 = T extends [infer H, ...infer _] ? H : never; +type Tail811 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation811 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation811>] + : never; + +type SmallUnion811 = "a" | "b" | "c" | "d"; +type AllPerms811 = Permutation811; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig811, + Flat811, + FR811, + BigUnion811, + ExtractAlpha811, + ExcludeZulu811, + OptionalAll811, + RequiredAll811, + ReadonlyAll811, + NullableAll811, + TypeNames811, + Action811, + AllPerms811, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts new file mode 100644 index 00000000..b2852cca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-12 (seed 812) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord812 { + a812: { x: number; y: string; z: boolean }; + b812: { p: string[]; q: Record }; + c812: { nested: { deep: { deeper: { deepest: string } } } }; + d812: number; + e812: string; + f812: boolean; + g812: null; + h812: undefined; + i812: bigint; + j812: symbol; +} + +type PartialBig812 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten812 = T extends Array ? Flatten812 : T; +type Nested812 = number[][][][][][][][][][]; +type Flat812 = Flatten812; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly812 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly812 : T[K]; +}; +type DeepRequired812 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired812 : T[K]; +}; +type FR812 = DeepReadonly812>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion812 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha812 = Extract; +type ExcludeZulu812 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA812 { width: number; height: number; depth: number } +interface ShapeB812 { color: string; opacity: number; blend: string } +interface ShapeC812 { x: number; y: number; z: number; w: number } +interface ShapeD812 { label: string; title: string; summary: string } + +type Combined812 = ShapeA812 & ShapeB812 & ShapeC812 & ShapeD812; +type OptionalAll812 = { [K in keyof Combined812]?: Combined812[K] }; +type RequiredAll812 = { [K in keyof Combined812]-?: Combined812[K] }; +type ReadonlyAll812 = { readonly [K in keyof Combined812]: Combined812[K] }; +type NullableAll812 = { [K in keyof Combined812]: Combined812[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString812 = T extends string ? true : false; +type IsNumber812 = T extends number ? true : false; +type TypeName812 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames812 = { + [K in keyof BigRecord812]: TypeName812; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb812 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource812 = "user" | "post" | "comment" | "tag" | "category"; +type Action812 = `${Verb812}_${Resource812}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise812 = T extends Promise ? UnwrapPromise812 : T; +type UnwrapArray812 = T extends (infer U)[] ? UnwrapArray812 : T; +type Head812 = T extends [infer H, ...infer _] ? H : never; +type Tail812 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation812 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation812>] + : never; + +type SmallUnion812 = "a" | "b" | "c" | "d"; +type AllPerms812 = Permutation812; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig812, + Flat812, + FR812, + BigUnion812, + ExtractAlpha812, + ExcludeZulu812, + OptionalAll812, + RequiredAll812, + ReadonlyAll812, + NullableAll812, + TypeNames812, + Action812, + AllPerms812, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts new file mode 100644 index 00000000..6600ad96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-13 (seed 813) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord813 { + a813: { x: number; y: string; z: boolean }; + b813: { p: string[]; q: Record }; + c813: { nested: { deep: { deeper: { deepest: string } } } }; + d813: number; + e813: string; + f813: boolean; + g813: null; + h813: undefined; + i813: bigint; + j813: symbol; +} + +type PartialBig813 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten813 = T extends Array ? Flatten813 : T; +type Nested813 = number[][][][][][][][][][]; +type Flat813 = Flatten813; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly813 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly813 : T[K]; +}; +type DeepRequired813 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired813 : T[K]; +}; +type FR813 = DeepReadonly813>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion813 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha813 = Extract; +type ExcludeZulu813 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA813 { width: number; height: number; depth: number } +interface ShapeB813 { color: string; opacity: number; blend: string } +interface ShapeC813 { x: number; y: number; z: number; w: number } +interface ShapeD813 { label: string; title: string; summary: string } + +type Combined813 = ShapeA813 & ShapeB813 & ShapeC813 & ShapeD813; +type OptionalAll813 = { [K in keyof Combined813]?: Combined813[K] }; +type RequiredAll813 = { [K in keyof Combined813]-?: Combined813[K] }; +type ReadonlyAll813 = { readonly [K in keyof Combined813]: Combined813[K] }; +type NullableAll813 = { [K in keyof Combined813]: Combined813[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString813 = T extends string ? true : false; +type IsNumber813 = T extends number ? true : false; +type TypeName813 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames813 = { + [K in keyof BigRecord813]: TypeName813; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb813 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource813 = "user" | "post" | "comment" | "tag" | "category"; +type Action813 = `${Verb813}_${Resource813}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise813 = T extends Promise ? UnwrapPromise813 : T; +type UnwrapArray813 = T extends (infer U)[] ? UnwrapArray813 : T; +type Head813 = T extends [infer H, ...infer _] ? H : never; +type Tail813 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation813 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation813>] + : never; + +type SmallUnion813 = "a" | "b" | "c" | "d"; +type AllPerms813 = Permutation813; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig813, + Flat813, + FR813, + BigUnion813, + ExtractAlpha813, + ExcludeZulu813, + OptionalAll813, + RequiredAll813, + ReadonlyAll813, + NullableAll813, + TypeNames813, + Action813, + AllPerms813, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts new file mode 100644 index 00000000..3333227d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-14 (seed 814) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord814 { + a814: { x: number; y: string; z: boolean }; + b814: { p: string[]; q: Record }; + c814: { nested: { deep: { deeper: { deepest: string } } } }; + d814: number; + e814: string; + f814: boolean; + g814: null; + h814: undefined; + i814: bigint; + j814: symbol; +} + +type PartialBig814 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten814 = T extends Array ? Flatten814 : T; +type Nested814 = number[][][][][][][][][][]; +type Flat814 = Flatten814; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly814 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly814 : T[K]; +}; +type DeepRequired814 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired814 : T[K]; +}; +type FR814 = DeepReadonly814>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion814 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha814 = Extract; +type ExcludeZulu814 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA814 { width: number; height: number; depth: number } +interface ShapeB814 { color: string; opacity: number; blend: string } +interface ShapeC814 { x: number; y: number; z: number; w: number } +interface ShapeD814 { label: string; title: string; summary: string } + +type Combined814 = ShapeA814 & ShapeB814 & ShapeC814 & ShapeD814; +type OptionalAll814 = { [K in keyof Combined814]?: Combined814[K] }; +type RequiredAll814 = { [K in keyof Combined814]-?: Combined814[K] }; +type ReadonlyAll814 = { readonly [K in keyof Combined814]: Combined814[K] }; +type NullableAll814 = { [K in keyof Combined814]: Combined814[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString814 = T extends string ? true : false; +type IsNumber814 = T extends number ? true : false; +type TypeName814 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames814 = { + [K in keyof BigRecord814]: TypeName814; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb814 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource814 = "user" | "post" | "comment" | "tag" | "category"; +type Action814 = `${Verb814}_${Resource814}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise814 = T extends Promise ? UnwrapPromise814 : T; +type UnwrapArray814 = T extends (infer U)[] ? UnwrapArray814 : T; +type Head814 = T extends [infer H, ...infer _] ? H : never; +type Tail814 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation814 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation814>] + : never; + +type SmallUnion814 = "a" | "b" | "c" | "d"; +type AllPerms814 = Permutation814; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig814, + Flat814, + FR814, + BigUnion814, + ExtractAlpha814, + ExcludeZulu814, + OptionalAll814, + RequiredAll814, + ReadonlyAll814, + NullableAll814, + TypeNames814, + Action814, + AllPerms814, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts new file mode 100644 index 00000000..8eba0f36 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-15 (seed 815) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord815 { + a815: { x: number; y: string; z: boolean }; + b815: { p: string[]; q: Record }; + c815: { nested: { deep: { deeper: { deepest: string } } } }; + d815: number; + e815: string; + f815: boolean; + g815: null; + h815: undefined; + i815: bigint; + j815: symbol; +} + +type PartialBig815 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten815 = T extends Array ? Flatten815 : T; +type Nested815 = number[][][][][][][][][][]; +type Flat815 = Flatten815; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly815 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly815 : T[K]; +}; +type DeepRequired815 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired815 : T[K]; +}; +type FR815 = DeepReadonly815>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion815 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha815 = Extract; +type ExcludeZulu815 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA815 { width: number; height: number; depth: number } +interface ShapeB815 { color: string; opacity: number; blend: string } +interface ShapeC815 { x: number; y: number; z: number; w: number } +interface ShapeD815 { label: string; title: string; summary: string } + +type Combined815 = ShapeA815 & ShapeB815 & ShapeC815 & ShapeD815; +type OptionalAll815 = { [K in keyof Combined815]?: Combined815[K] }; +type RequiredAll815 = { [K in keyof Combined815]-?: Combined815[K] }; +type ReadonlyAll815 = { readonly [K in keyof Combined815]: Combined815[K] }; +type NullableAll815 = { [K in keyof Combined815]: Combined815[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString815 = T extends string ? true : false; +type IsNumber815 = T extends number ? true : false; +type TypeName815 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames815 = { + [K in keyof BigRecord815]: TypeName815; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb815 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource815 = "user" | "post" | "comment" | "tag" | "category"; +type Action815 = `${Verb815}_${Resource815}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise815 = T extends Promise ? UnwrapPromise815 : T; +type UnwrapArray815 = T extends (infer U)[] ? UnwrapArray815 : T; +type Head815 = T extends [infer H, ...infer _] ? H : never; +type Tail815 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation815 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation815>] + : never; + +type SmallUnion815 = "a" | "b" | "c" | "d"; +type AllPerms815 = Permutation815; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig815, + Flat815, + FR815, + BigUnion815, + ExtractAlpha815, + ExcludeZulu815, + OptionalAll815, + RequiredAll815, + ReadonlyAll815, + NullableAll815, + TypeNames815, + Action815, + AllPerms815, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts new file mode 100644 index 00000000..fb31f2db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-16 (seed 816) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord816 { + a816: { x: number; y: string; z: boolean }; + b816: { p: string[]; q: Record }; + c816: { nested: { deep: { deeper: { deepest: string } } } }; + d816: number; + e816: string; + f816: boolean; + g816: null; + h816: undefined; + i816: bigint; + j816: symbol; +} + +type PartialBig816 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten816 = T extends Array ? Flatten816 : T; +type Nested816 = number[][][][][][][][][][]; +type Flat816 = Flatten816; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly816 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly816 : T[K]; +}; +type DeepRequired816 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired816 : T[K]; +}; +type FR816 = DeepReadonly816>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion816 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha816 = Extract; +type ExcludeZulu816 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA816 { width: number; height: number; depth: number } +interface ShapeB816 { color: string; opacity: number; blend: string } +interface ShapeC816 { x: number; y: number; z: number; w: number } +interface ShapeD816 { label: string; title: string; summary: string } + +type Combined816 = ShapeA816 & ShapeB816 & ShapeC816 & ShapeD816; +type OptionalAll816 = { [K in keyof Combined816]?: Combined816[K] }; +type RequiredAll816 = { [K in keyof Combined816]-?: Combined816[K] }; +type ReadonlyAll816 = { readonly [K in keyof Combined816]: Combined816[K] }; +type NullableAll816 = { [K in keyof Combined816]: Combined816[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString816 = T extends string ? true : false; +type IsNumber816 = T extends number ? true : false; +type TypeName816 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames816 = { + [K in keyof BigRecord816]: TypeName816; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb816 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource816 = "user" | "post" | "comment" | "tag" | "category"; +type Action816 = `${Verb816}_${Resource816}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise816 = T extends Promise ? UnwrapPromise816 : T; +type UnwrapArray816 = T extends (infer U)[] ? UnwrapArray816 : T; +type Head816 = T extends [infer H, ...infer _] ? H : never; +type Tail816 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation816 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation816>] + : never; + +type SmallUnion816 = "a" | "b" | "c" | "d"; +type AllPerms816 = Permutation816; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig816, + Flat816, + FR816, + BigUnion816, + ExtractAlpha816, + ExcludeZulu816, + OptionalAll816, + RequiredAll816, + ReadonlyAll816, + NullableAll816, + TypeNames816, + Action816, + AllPerms816, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts new file mode 100644 index 00000000..7f64ab16 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-17 (seed 817) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord817 { + a817: { x: number; y: string; z: boolean }; + b817: { p: string[]; q: Record }; + c817: { nested: { deep: { deeper: { deepest: string } } } }; + d817: number; + e817: string; + f817: boolean; + g817: null; + h817: undefined; + i817: bigint; + j817: symbol; +} + +type PartialBig817 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten817 = T extends Array ? Flatten817 : T; +type Nested817 = number[][][][][][][][][][]; +type Flat817 = Flatten817; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly817 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly817 : T[K]; +}; +type DeepRequired817 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired817 : T[K]; +}; +type FR817 = DeepReadonly817>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion817 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha817 = Extract; +type ExcludeZulu817 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA817 { width: number; height: number; depth: number } +interface ShapeB817 { color: string; opacity: number; blend: string } +interface ShapeC817 { x: number; y: number; z: number; w: number } +interface ShapeD817 { label: string; title: string; summary: string } + +type Combined817 = ShapeA817 & ShapeB817 & ShapeC817 & ShapeD817; +type OptionalAll817 = { [K in keyof Combined817]?: Combined817[K] }; +type RequiredAll817 = { [K in keyof Combined817]-?: Combined817[K] }; +type ReadonlyAll817 = { readonly [K in keyof Combined817]: Combined817[K] }; +type NullableAll817 = { [K in keyof Combined817]: Combined817[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString817 = T extends string ? true : false; +type IsNumber817 = T extends number ? true : false; +type TypeName817 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames817 = { + [K in keyof BigRecord817]: TypeName817; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb817 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource817 = "user" | "post" | "comment" | "tag" | "category"; +type Action817 = `${Verb817}_${Resource817}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise817 = T extends Promise ? UnwrapPromise817 : T; +type UnwrapArray817 = T extends (infer U)[] ? UnwrapArray817 : T; +type Head817 = T extends [infer H, ...infer _] ? H : never; +type Tail817 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation817 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation817>] + : never; + +type SmallUnion817 = "a" | "b" | "c" | "d"; +type AllPerms817 = Permutation817; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig817, + Flat817, + FR817, + BigUnion817, + ExtractAlpha817, + ExcludeZulu817, + OptionalAll817, + RequiredAll817, + ReadonlyAll817, + NullableAll817, + TypeNames817, + Action817, + AllPerms817, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts new file mode 100644 index 00000000..83c7ece2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-18 (seed 818) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord818 { + a818: { x: number; y: string; z: boolean }; + b818: { p: string[]; q: Record }; + c818: { nested: { deep: { deeper: { deepest: string } } } }; + d818: number; + e818: string; + f818: boolean; + g818: null; + h818: undefined; + i818: bigint; + j818: symbol; +} + +type PartialBig818 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten818 = T extends Array ? Flatten818 : T; +type Nested818 = number[][][][][][][][][][]; +type Flat818 = Flatten818; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly818 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly818 : T[K]; +}; +type DeepRequired818 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired818 : T[K]; +}; +type FR818 = DeepReadonly818>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion818 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha818 = Extract; +type ExcludeZulu818 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA818 { width: number; height: number; depth: number } +interface ShapeB818 { color: string; opacity: number; blend: string } +interface ShapeC818 { x: number; y: number; z: number; w: number } +interface ShapeD818 { label: string; title: string; summary: string } + +type Combined818 = ShapeA818 & ShapeB818 & ShapeC818 & ShapeD818; +type OptionalAll818 = { [K in keyof Combined818]?: Combined818[K] }; +type RequiredAll818 = { [K in keyof Combined818]-?: Combined818[K] }; +type ReadonlyAll818 = { readonly [K in keyof Combined818]: Combined818[K] }; +type NullableAll818 = { [K in keyof Combined818]: Combined818[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString818 = T extends string ? true : false; +type IsNumber818 = T extends number ? true : false; +type TypeName818 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames818 = { + [K in keyof BigRecord818]: TypeName818; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb818 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource818 = "user" | "post" | "comment" | "tag" | "category"; +type Action818 = `${Verb818}_${Resource818}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise818 = T extends Promise ? UnwrapPromise818 : T; +type UnwrapArray818 = T extends (infer U)[] ? UnwrapArray818 : T; +type Head818 = T extends [infer H, ...infer _] ? H : never; +type Tail818 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation818 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation818>] + : never; + +type SmallUnion818 = "a" | "b" | "c" | "d"; +type AllPerms818 = Permutation818; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig818, + Flat818, + FR818, + BigUnion818, + ExtractAlpha818, + ExcludeZulu818, + OptionalAll818, + RequiredAll818, + ReadonlyAll818, + NullableAll818, + TypeNames818, + Action818, + AllPerms818, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts new file mode 100644 index 00000000..535a3c90 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-19 (seed 819) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord819 { + a819: { x: number; y: string; z: boolean }; + b819: { p: string[]; q: Record }; + c819: { nested: { deep: { deeper: { deepest: string } } } }; + d819: number; + e819: string; + f819: boolean; + g819: null; + h819: undefined; + i819: bigint; + j819: symbol; +} + +type PartialBig819 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten819 = T extends Array ? Flatten819 : T; +type Nested819 = number[][][][][][][][][][]; +type Flat819 = Flatten819; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly819 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly819 : T[K]; +}; +type DeepRequired819 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired819 : T[K]; +}; +type FR819 = DeepReadonly819>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion819 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha819 = Extract; +type ExcludeZulu819 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA819 { width: number; height: number; depth: number } +interface ShapeB819 { color: string; opacity: number; blend: string } +interface ShapeC819 { x: number; y: number; z: number; w: number } +interface ShapeD819 { label: string; title: string; summary: string } + +type Combined819 = ShapeA819 & ShapeB819 & ShapeC819 & ShapeD819; +type OptionalAll819 = { [K in keyof Combined819]?: Combined819[K] }; +type RequiredAll819 = { [K in keyof Combined819]-?: Combined819[K] }; +type ReadonlyAll819 = { readonly [K in keyof Combined819]: Combined819[K] }; +type NullableAll819 = { [K in keyof Combined819]: Combined819[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString819 = T extends string ? true : false; +type IsNumber819 = T extends number ? true : false; +type TypeName819 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames819 = { + [K in keyof BigRecord819]: TypeName819; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb819 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource819 = "user" | "post" | "comment" | "tag" | "category"; +type Action819 = `${Verb819}_${Resource819}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise819 = T extends Promise ? UnwrapPromise819 : T; +type UnwrapArray819 = T extends (infer U)[] ? UnwrapArray819 : T; +type Head819 = T extends [infer H, ...infer _] ? H : never; +type Tail819 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation819 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation819>] + : never; + +type SmallUnion819 = "a" | "b" | "c" | "d"; +type AllPerms819 = Permutation819; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig819, + Flat819, + FR819, + BigUnion819, + ExtractAlpha819, + ExcludeZulu819, + OptionalAll819, + RequiredAll819, + ReadonlyAll819, + NullableAll819, + TypeNames819, + Action819, + AllPerms819, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts new file mode 100644 index 00000000..306fb52a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-20 (seed 820) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord820 { + a820: { x: number; y: string; z: boolean }; + b820: { p: string[]; q: Record }; + c820: { nested: { deep: { deeper: { deepest: string } } } }; + d820: number; + e820: string; + f820: boolean; + g820: null; + h820: undefined; + i820: bigint; + j820: symbol; +} + +type PartialBig820 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten820 = T extends Array ? Flatten820 : T; +type Nested820 = number[][][][][][][][][][]; +type Flat820 = Flatten820; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly820 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly820 : T[K]; +}; +type DeepRequired820 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired820 : T[K]; +}; +type FR820 = DeepReadonly820>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion820 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha820 = Extract; +type ExcludeZulu820 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA820 { width: number; height: number; depth: number } +interface ShapeB820 { color: string; opacity: number; blend: string } +interface ShapeC820 { x: number; y: number; z: number; w: number } +interface ShapeD820 { label: string; title: string; summary: string } + +type Combined820 = ShapeA820 & ShapeB820 & ShapeC820 & ShapeD820; +type OptionalAll820 = { [K in keyof Combined820]?: Combined820[K] }; +type RequiredAll820 = { [K in keyof Combined820]-?: Combined820[K] }; +type ReadonlyAll820 = { readonly [K in keyof Combined820]: Combined820[K] }; +type NullableAll820 = { [K in keyof Combined820]: Combined820[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString820 = T extends string ? true : false; +type IsNumber820 = T extends number ? true : false; +type TypeName820 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames820 = { + [K in keyof BigRecord820]: TypeName820; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb820 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource820 = "user" | "post" | "comment" | "tag" | "category"; +type Action820 = `${Verb820}_${Resource820}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise820 = T extends Promise ? UnwrapPromise820 : T; +type UnwrapArray820 = T extends (infer U)[] ? UnwrapArray820 : T; +type Head820 = T extends [infer H, ...infer _] ? H : never; +type Tail820 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation820 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation820>] + : never; + +type SmallUnion820 = "a" | "b" | "c" | "d"; +type AllPerms820 = Permutation820; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig820, + Flat820, + FR820, + BigUnion820, + ExtractAlpha820, + ExcludeZulu820, + OptionalAll820, + RequiredAll820, + ReadonlyAll820, + NullableAll820, + TypeNames820, + Action820, + AllPerms820, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts new file mode 100644 index 00000000..f006d08b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-21 (seed 821) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord821 { + a821: { x: number; y: string; z: boolean }; + b821: { p: string[]; q: Record }; + c821: { nested: { deep: { deeper: { deepest: string } } } }; + d821: number; + e821: string; + f821: boolean; + g821: null; + h821: undefined; + i821: bigint; + j821: symbol; +} + +type PartialBig821 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten821 = T extends Array ? Flatten821 : T; +type Nested821 = number[][][][][][][][][][]; +type Flat821 = Flatten821; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly821 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly821 : T[K]; +}; +type DeepRequired821 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired821 : T[K]; +}; +type FR821 = DeepReadonly821>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion821 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha821 = Extract; +type ExcludeZulu821 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA821 { width: number; height: number; depth: number } +interface ShapeB821 { color: string; opacity: number; blend: string } +interface ShapeC821 { x: number; y: number; z: number; w: number } +interface ShapeD821 { label: string; title: string; summary: string } + +type Combined821 = ShapeA821 & ShapeB821 & ShapeC821 & ShapeD821; +type OptionalAll821 = { [K in keyof Combined821]?: Combined821[K] }; +type RequiredAll821 = { [K in keyof Combined821]-?: Combined821[K] }; +type ReadonlyAll821 = { readonly [K in keyof Combined821]: Combined821[K] }; +type NullableAll821 = { [K in keyof Combined821]: Combined821[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString821 = T extends string ? true : false; +type IsNumber821 = T extends number ? true : false; +type TypeName821 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames821 = { + [K in keyof BigRecord821]: TypeName821; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb821 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource821 = "user" | "post" | "comment" | "tag" | "category"; +type Action821 = `${Verb821}_${Resource821}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise821 = T extends Promise ? UnwrapPromise821 : T; +type UnwrapArray821 = T extends (infer U)[] ? UnwrapArray821 : T; +type Head821 = T extends [infer H, ...infer _] ? H : never; +type Tail821 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation821 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation821>] + : never; + +type SmallUnion821 = "a" | "b" | "c" | "d"; +type AllPerms821 = Permutation821; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig821, + Flat821, + FR821, + BigUnion821, + ExtractAlpha821, + ExcludeZulu821, + OptionalAll821, + RequiredAll821, + ReadonlyAll821, + NullableAll821, + TypeNames821, + Action821, + AllPerms821, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts new file mode 100644 index 00000000..dbdac775 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-22 (seed 822) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord822 { + a822: { x: number; y: string; z: boolean }; + b822: { p: string[]; q: Record }; + c822: { nested: { deep: { deeper: { deepest: string } } } }; + d822: number; + e822: string; + f822: boolean; + g822: null; + h822: undefined; + i822: bigint; + j822: symbol; +} + +type PartialBig822 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten822 = T extends Array ? Flatten822 : T; +type Nested822 = number[][][][][][][][][][]; +type Flat822 = Flatten822; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly822 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly822 : T[K]; +}; +type DeepRequired822 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired822 : T[K]; +}; +type FR822 = DeepReadonly822>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion822 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha822 = Extract; +type ExcludeZulu822 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA822 { width: number; height: number; depth: number } +interface ShapeB822 { color: string; opacity: number; blend: string } +interface ShapeC822 { x: number; y: number; z: number; w: number } +interface ShapeD822 { label: string; title: string; summary: string } + +type Combined822 = ShapeA822 & ShapeB822 & ShapeC822 & ShapeD822; +type OptionalAll822 = { [K in keyof Combined822]?: Combined822[K] }; +type RequiredAll822 = { [K in keyof Combined822]-?: Combined822[K] }; +type ReadonlyAll822 = { readonly [K in keyof Combined822]: Combined822[K] }; +type NullableAll822 = { [K in keyof Combined822]: Combined822[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString822 = T extends string ? true : false; +type IsNumber822 = T extends number ? true : false; +type TypeName822 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames822 = { + [K in keyof BigRecord822]: TypeName822; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb822 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource822 = "user" | "post" | "comment" | "tag" | "category"; +type Action822 = `${Verb822}_${Resource822}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise822 = T extends Promise ? UnwrapPromise822 : T; +type UnwrapArray822 = T extends (infer U)[] ? UnwrapArray822 : T; +type Head822 = T extends [infer H, ...infer _] ? H : never; +type Tail822 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation822 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation822>] + : never; + +type SmallUnion822 = "a" | "b" | "c" | "d"; +type AllPerms822 = Permutation822; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig822, + Flat822, + FR822, + BigUnion822, + ExtractAlpha822, + ExcludeZulu822, + OptionalAll822, + RequiredAll822, + ReadonlyAll822, + NullableAll822, + TypeNames822, + Action822, + AllPerms822, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts new file mode 100644 index 00000000..873aca02 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-23 (seed 823) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord823 { + a823: { x: number; y: string; z: boolean }; + b823: { p: string[]; q: Record }; + c823: { nested: { deep: { deeper: { deepest: string } } } }; + d823: number; + e823: string; + f823: boolean; + g823: null; + h823: undefined; + i823: bigint; + j823: symbol; +} + +type PartialBig823 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten823 = T extends Array ? Flatten823 : T; +type Nested823 = number[][][][][][][][][][]; +type Flat823 = Flatten823; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly823 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly823 : T[K]; +}; +type DeepRequired823 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired823 : T[K]; +}; +type FR823 = DeepReadonly823>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion823 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha823 = Extract; +type ExcludeZulu823 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA823 { width: number; height: number; depth: number } +interface ShapeB823 { color: string; opacity: number; blend: string } +interface ShapeC823 { x: number; y: number; z: number; w: number } +interface ShapeD823 { label: string; title: string; summary: string } + +type Combined823 = ShapeA823 & ShapeB823 & ShapeC823 & ShapeD823; +type OptionalAll823 = { [K in keyof Combined823]?: Combined823[K] }; +type RequiredAll823 = { [K in keyof Combined823]-?: Combined823[K] }; +type ReadonlyAll823 = { readonly [K in keyof Combined823]: Combined823[K] }; +type NullableAll823 = { [K in keyof Combined823]: Combined823[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString823 = T extends string ? true : false; +type IsNumber823 = T extends number ? true : false; +type TypeName823 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames823 = { + [K in keyof BigRecord823]: TypeName823; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb823 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource823 = "user" | "post" | "comment" | "tag" | "category"; +type Action823 = `${Verb823}_${Resource823}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise823 = T extends Promise ? UnwrapPromise823 : T; +type UnwrapArray823 = T extends (infer U)[] ? UnwrapArray823 : T; +type Head823 = T extends [infer H, ...infer _] ? H : never; +type Tail823 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation823 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation823>] + : never; + +type SmallUnion823 = "a" | "b" | "c" | "d"; +type AllPerms823 = Permutation823; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig823, + Flat823, + FR823, + BigUnion823, + ExtractAlpha823, + ExcludeZulu823, + OptionalAll823, + RequiredAll823, + ReadonlyAll823, + NullableAll823, + TypeNames823, + Action823, + AllPerms823, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts new file mode 100644 index 00000000..dba36b93 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-24 (seed 824) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord824 { + a824: { x: number; y: string; z: boolean }; + b824: { p: string[]; q: Record }; + c824: { nested: { deep: { deeper: { deepest: string } } } }; + d824: number; + e824: string; + f824: boolean; + g824: null; + h824: undefined; + i824: bigint; + j824: symbol; +} + +type PartialBig824 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten824 = T extends Array ? Flatten824 : T; +type Nested824 = number[][][][][][][][][][]; +type Flat824 = Flatten824; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly824 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly824 : T[K]; +}; +type DeepRequired824 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired824 : T[K]; +}; +type FR824 = DeepReadonly824>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion824 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha824 = Extract; +type ExcludeZulu824 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA824 { width: number; height: number; depth: number } +interface ShapeB824 { color: string; opacity: number; blend: string } +interface ShapeC824 { x: number; y: number; z: number; w: number } +interface ShapeD824 { label: string; title: string; summary: string } + +type Combined824 = ShapeA824 & ShapeB824 & ShapeC824 & ShapeD824; +type OptionalAll824 = { [K in keyof Combined824]?: Combined824[K] }; +type RequiredAll824 = { [K in keyof Combined824]-?: Combined824[K] }; +type ReadonlyAll824 = { readonly [K in keyof Combined824]: Combined824[K] }; +type NullableAll824 = { [K in keyof Combined824]: Combined824[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString824 = T extends string ? true : false; +type IsNumber824 = T extends number ? true : false; +type TypeName824 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames824 = { + [K in keyof BigRecord824]: TypeName824; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb824 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource824 = "user" | "post" | "comment" | "tag" | "category"; +type Action824 = `${Verb824}_${Resource824}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise824 = T extends Promise ? UnwrapPromise824 : T; +type UnwrapArray824 = T extends (infer U)[] ? UnwrapArray824 : T; +type Head824 = T extends [infer H, ...infer _] ? H : never; +type Tail824 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation824 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation824>] + : never; + +type SmallUnion824 = "a" | "b" | "c" | "d"; +type AllPerms824 = Permutation824; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig824, + Flat824, + FR824, + BigUnion824, + ExtractAlpha824, + ExcludeZulu824, + OptionalAll824, + RequiredAll824, + ReadonlyAll824, + NullableAll824, + TypeNames824, + Action824, + AllPerms824, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts new file mode 100644 index 00000000..5f248b63 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-25 (seed 825) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord825 { + a825: { x: number; y: string; z: boolean }; + b825: { p: string[]; q: Record }; + c825: { nested: { deep: { deeper: { deepest: string } } } }; + d825: number; + e825: string; + f825: boolean; + g825: null; + h825: undefined; + i825: bigint; + j825: symbol; +} + +type PartialBig825 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten825 = T extends Array ? Flatten825 : T; +type Nested825 = number[][][][][][][][][][]; +type Flat825 = Flatten825; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly825 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly825 : T[K]; +}; +type DeepRequired825 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired825 : T[K]; +}; +type FR825 = DeepReadonly825>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion825 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha825 = Extract; +type ExcludeZulu825 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA825 { width: number; height: number; depth: number } +interface ShapeB825 { color: string; opacity: number; blend: string } +interface ShapeC825 { x: number; y: number; z: number; w: number } +interface ShapeD825 { label: string; title: string; summary: string } + +type Combined825 = ShapeA825 & ShapeB825 & ShapeC825 & ShapeD825; +type OptionalAll825 = { [K in keyof Combined825]?: Combined825[K] }; +type RequiredAll825 = { [K in keyof Combined825]-?: Combined825[K] }; +type ReadonlyAll825 = { readonly [K in keyof Combined825]: Combined825[K] }; +type NullableAll825 = { [K in keyof Combined825]: Combined825[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString825 = T extends string ? true : false; +type IsNumber825 = T extends number ? true : false; +type TypeName825 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames825 = { + [K in keyof BigRecord825]: TypeName825; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb825 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource825 = "user" | "post" | "comment" | "tag" | "category"; +type Action825 = `${Verb825}_${Resource825}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise825 = T extends Promise ? UnwrapPromise825 : T; +type UnwrapArray825 = T extends (infer U)[] ? UnwrapArray825 : T; +type Head825 = T extends [infer H, ...infer _] ? H : never; +type Tail825 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation825 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation825>] + : never; + +type SmallUnion825 = "a" | "b" | "c" | "d"; +type AllPerms825 = Permutation825; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig825, + Flat825, + FR825, + BigUnion825, + ExtractAlpha825, + ExcludeZulu825, + OptionalAll825, + RequiredAll825, + ReadonlyAll825, + NullableAll825, + TypeNames825, + Action825, + AllPerms825, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts new file mode 100644 index 00000000..8368a391 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-26 (seed 826) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord826 { + a826: { x: number; y: string; z: boolean }; + b826: { p: string[]; q: Record }; + c826: { nested: { deep: { deeper: { deepest: string } } } }; + d826: number; + e826: string; + f826: boolean; + g826: null; + h826: undefined; + i826: bigint; + j826: symbol; +} + +type PartialBig826 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten826 = T extends Array ? Flatten826 : T; +type Nested826 = number[][][][][][][][][][]; +type Flat826 = Flatten826; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly826 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly826 : T[K]; +}; +type DeepRequired826 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired826 : T[K]; +}; +type FR826 = DeepReadonly826>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion826 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha826 = Extract; +type ExcludeZulu826 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA826 { width: number; height: number; depth: number } +interface ShapeB826 { color: string; opacity: number; blend: string } +interface ShapeC826 { x: number; y: number; z: number; w: number } +interface ShapeD826 { label: string; title: string; summary: string } + +type Combined826 = ShapeA826 & ShapeB826 & ShapeC826 & ShapeD826; +type OptionalAll826 = { [K in keyof Combined826]?: Combined826[K] }; +type RequiredAll826 = { [K in keyof Combined826]-?: Combined826[K] }; +type ReadonlyAll826 = { readonly [K in keyof Combined826]: Combined826[K] }; +type NullableAll826 = { [K in keyof Combined826]: Combined826[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString826 = T extends string ? true : false; +type IsNumber826 = T extends number ? true : false; +type TypeName826 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames826 = { + [K in keyof BigRecord826]: TypeName826; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb826 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource826 = "user" | "post" | "comment" | "tag" | "category"; +type Action826 = `${Verb826}_${Resource826}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise826 = T extends Promise ? UnwrapPromise826 : T; +type UnwrapArray826 = T extends (infer U)[] ? UnwrapArray826 : T; +type Head826 = T extends [infer H, ...infer _] ? H : never; +type Tail826 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation826 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation826>] + : never; + +type SmallUnion826 = "a" | "b" | "c" | "d"; +type AllPerms826 = Permutation826; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig826, + Flat826, + FR826, + BigUnion826, + ExtractAlpha826, + ExcludeZulu826, + OptionalAll826, + RequiredAll826, + ReadonlyAll826, + NullableAll826, + TypeNames826, + Action826, + AllPerms826, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts new file mode 100644 index 00000000..98024d4a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-27 (seed 827) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord827 { + a827: { x: number; y: string; z: boolean }; + b827: { p: string[]; q: Record }; + c827: { nested: { deep: { deeper: { deepest: string } } } }; + d827: number; + e827: string; + f827: boolean; + g827: null; + h827: undefined; + i827: bigint; + j827: symbol; +} + +type PartialBig827 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten827 = T extends Array ? Flatten827 : T; +type Nested827 = number[][][][][][][][][][]; +type Flat827 = Flatten827; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly827 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly827 : T[K]; +}; +type DeepRequired827 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired827 : T[K]; +}; +type FR827 = DeepReadonly827>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion827 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha827 = Extract; +type ExcludeZulu827 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA827 { width: number; height: number; depth: number } +interface ShapeB827 { color: string; opacity: number; blend: string } +interface ShapeC827 { x: number; y: number; z: number; w: number } +interface ShapeD827 { label: string; title: string; summary: string } + +type Combined827 = ShapeA827 & ShapeB827 & ShapeC827 & ShapeD827; +type OptionalAll827 = { [K in keyof Combined827]?: Combined827[K] }; +type RequiredAll827 = { [K in keyof Combined827]-?: Combined827[K] }; +type ReadonlyAll827 = { readonly [K in keyof Combined827]: Combined827[K] }; +type NullableAll827 = { [K in keyof Combined827]: Combined827[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString827 = T extends string ? true : false; +type IsNumber827 = T extends number ? true : false; +type TypeName827 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames827 = { + [K in keyof BigRecord827]: TypeName827; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb827 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource827 = "user" | "post" | "comment" | "tag" | "category"; +type Action827 = `${Verb827}_${Resource827}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise827 = T extends Promise ? UnwrapPromise827 : T; +type UnwrapArray827 = T extends (infer U)[] ? UnwrapArray827 : T; +type Head827 = T extends [infer H, ...infer _] ? H : never; +type Tail827 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation827 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation827>] + : never; + +type SmallUnion827 = "a" | "b" | "c" | "d"; +type AllPerms827 = Permutation827; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig827, + Flat827, + FR827, + BigUnion827, + ExtractAlpha827, + ExcludeZulu827, + OptionalAll827, + RequiredAll827, + ReadonlyAll827, + NullableAll827, + TypeNames827, + Action827, + AllPerms827, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts new file mode 100644 index 00000000..48f18732 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-28 (seed 828) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord828 { + a828: { x: number; y: string; z: boolean }; + b828: { p: string[]; q: Record }; + c828: { nested: { deep: { deeper: { deepest: string } } } }; + d828: number; + e828: string; + f828: boolean; + g828: null; + h828: undefined; + i828: bigint; + j828: symbol; +} + +type PartialBig828 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten828 = T extends Array ? Flatten828 : T; +type Nested828 = number[][][][][][][][][][]; +type Flat828 = Flatten828; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly828 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly828 : T[K]; +}; +type DeepRequired828 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired828 : T[K]; +}; +type FR828 = DeepReadonly828>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion828 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha828 = Extract; +type ExcludeZulu828 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA828 { width: number; height: number; depth: number } +interface ShapeB828 { color: string; opacity: number; blend: string } +interface ShapeC828 { x: number; y: number; z: number; w: number } +interface ShapeD828 { label: string; title: string; summary: string } + +type Combined828 = ShapeA828 & ShapeB828 & ShapeC828 & ShapeD828; +type OptionalAll828 = { [K in keyof Combined828]?: Combined828[K] }; +type RequiredAll828 = { [K in keyof Combined828]-?: Combined828[K] }; +type ReadonlyAll828 = { readonly [K in keyof Combined828]: Combined828[K] }; +type NullableAll828 = { [K in keyof Combined828]: Combined828[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString828 = T extends string ? true : false; +type IsNumber828 = T extends number ? true : false; +type TypeName828 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames828 = { + [K in keyof BigRecord828]: TypeName828; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb828 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource828 = "user" | "post" | "comment" | "tag" | "category"; +type Action828 = `${Verb828}_${Resource828}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise828 = T extends Promise ? UnwrapPromise828 : T; +type UnwrapArray828 = T extends (infer U)[] ? UnwrapArray828 : T; +type Head828 = T extends [infer H, ...infer _] ? H : never; +type Tail828 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation828 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation828>] + : never; + +type SmallUnion828 = "a" | "b" | "c" | "d"; +type AllPerms828 = Permutation828; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig828, + Flat828, + FR828, + BigUnion828, + ExtractAlpha828, + ExcludeZulu828, + OptionalAll828, + RequiredAll828, + ReadonlyAll828, + NullableAll828, + TypeNames828, + Action828, + AllPerms828, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts new file mode 100644 index 00000000..75c3a54c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-29 (seed 829) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord829 { + a829: { x: number; y: string; z: boolean }; + b829: { p: string[]; q: Record }; + c829: { nested: { deep: { deeper: { deepest: string } } } }; + d829: number; + e829: string; + f829: boolean; + g829: null; + h829: undefined; + i829: bigint; + j829: symbol; +} + +type PartialBig829 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten829 = T extends Array ? Flatten829 : T; +type Nested829 = number[][][][][][][][][][]; +type Flat829 = Flatten829; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly829 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly829 : T[K]; +}; +type DeepRequired829 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired829 : T[K]; +}; +type FR829 = DeepReadonly829>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion829 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha829 = Extract; +type ExcludeZulu829 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA829 { width: number; height: number; depth: number } +interface ShapeB829 { color: string; opacity: number; blend: string } +interface ShapeC829 { x: number; y: number; z: number; w: number } +interface ShapeD829 { label: string; title: string; summary: string } + +type Combined829 = ShapeA829 & ShapeB829 & ShapeC829 & ShapeD829; +type OptionalAll829 = { [K in keyof Combined829]?: Combined829[K] }; +type RequiredAll829 = { [K in keyof Combined829]-?: Combined829[K] }; +type ReadonlyAll829 = { readonly [K in keyof Combined829]: Combined829[K] }; +type NullableAll829 = { [K in keyof Combined829]: Combined829[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString829 = T extends string ? true : false; +type IsNumber829 = T extends number ? true : false; +type TypeName829 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames829 = { + [K in keyof BigRecord829]: TypeName829; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb829 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource829 = "user" | "post" | "comment" | "tag" | "category"; +type Action829 = `${Verb829}_${Resource829}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise829 = T extends Promise ? UnwrapPromise829 : T; +type UnwrapArray829 = T extends (infer U)[] ? UnwrapArray829 : T; +type Head829 = T extends [infer H, ...infer _] ? H : never; +type Tail829 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation829 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation829>] + : never; + +type SmallUnion829 = "a" | "b" | "c" | "d"; +type AllPerms829 = Permutation829; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig829, + Flat829, + FR829, + BigUnion829, + ExtractAlpha829, + ExcludeZulu829, + OptionalAll829, + RequiredAll829, + ReadonlyAll829, + NullableAll829, + TypeNames829, + Action829, + AllPerms829, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts new file mode 100644 index 00000000..88d28a0b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-30 (seed 830) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord830 { + a830: { x: number; y: string; z: boolean }; + b830: { p: string[]; q: Record }; + c830: { nested: { deep: { deeper: { deepest: string } } } }; + d830: number; + e830: string; + f830: boolean; + g830: null; + h830: undefined; + i830: bigint; + j830: symbol; +} + +type PartialBig830 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten830 = T extends Array ? Flatten830 : T; +type Nested830 = number[][][][][][][][][][]; +type Flat830 = Flatten830; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly830 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly830 : T[K]; +}; +type DeepRequired830 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired830 : T[K]; +}; +type FR830 = DeepReadonly830>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion830 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha830 = Extract; +type ExcludeZulu830 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA830 { width: number; height: number; depth: number } +interface ShapeB830 { color: string; opacity: number; blend: string } +interface ShapeC830 { x: number; y: number; z: number; w: number } +interface ShapeD830 { label: string; title: string; summary: string } + +type Combined830 = ShapeA830 & ShapeB830 & ShapeC830 & ShapeD830; +type OptionalAll830 = { [K in keyof Combined830]?: Combined830[K] }; +type RequiredAll830 = { [K in keyof Combined830]-?: Combined830[K] }; +type ReadonlyAll830 = { readonly [K in keyof Combined830]: Combined830[K] }; +type NullableAll830 = { [K in keyof Combined830]: Combined830[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString830 = T extends string ? true : false; +type IsNumber830 = T extends number ? true : false; +type TypeName830 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames830 = { + [K in keyof BigRecord830]: TypeName830; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb830 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource830 = "user" | "post" | "comment" | "tag" | "category"; +type Action830 = `${Verb830}_${Resource830}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise830 = T extends Promise ? UnwrapPromise830 : T; +type UnwrapArray830 = T extends (infer U)[] ? UnwrapArray830 : T; +type Head830 = T extends [infer H, ...infer _] ? H : never; +type Tail830 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation830 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation830>] + : never; + +type SmallUnion830 = "a" | "b" | "c" | "d"; +type AllPerms830 = Permutation830; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig830, + Flat830, + FR830, + BigUnion830, + ExtractAlpha830, + ExcludeZulu830, + OptionalAll830, + RequiredAll830, + ReadonlyAll830, + NullableAll830, + TypeNames830, + Action830, + AllPerms830, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts new file mode 100644 index 00000000..adce1c88 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-31 (seed 831) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord831 { + a831: { x: number; y: string; z: boolean }; + b831: { p: string[]; q: Record }; + c831: { nested: { deep: { deeper: { deepest: string } } } }; + d831: number; + e831: string; + f831: boolean; + g831: null; + h831: undefined; + i831: bigint; + j831: symbol; +} + +type PartialBig831 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten831 = T extends Array ? Flatten831 : T; +type Nested831 = number[][][][][][][][][][]; +type Flat831 = Flatten831; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly831 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly831 : T[K]; +}; +type DeepRequired831 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired831 : T[K]; +}; +type FR831 = DeepReadonly831>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion831 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha831 = Extract; +type ExcludeZulu831 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA831 { width: number; height: number; depth: number } +interface ShapeB831 { color: string; opacity: number; blend: string } +interface ShapeC831 { x: number; y: number; z: number; w: number } +interface ShapeD831 { label: string; title: string; summary: string } + +type Combined831 = ShapeA831 & ShapeB831 & ShapeC831 & ShapeD831; +type OptionalAll831 = { [K in keyof Combined831]?: Combined831[K] }; +type RequiredAll831 = { [K in keyof Combined831]-?: Combined831[K] }; +type ReadonlyAll831 = { readonly [K in keyof Combined831]: Combined831[K] }; +type NullableAll831 = { [K in keyof Combined831]: Combined831[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString831 = T extends string ? true : false; +type IsNumber831 = T extends number ? true : false; +type TypeName831 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames831 = { + [K in keyof BigRecord831]: TypeName831; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb831 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource831 = "user" | "post" | "comment" | "tag" | "category"; +type Action831 = `${Verb831}_${Resource831}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise831 = T extends Promise ? UnwrapPromise831 : T; +type UnwrapArray831 = T extends (infer U)[] ? UnwrapArray831 : T; +type Head831 = T extends [infer H, ...infer _] ? H : never; +type Tail831 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation831 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation831>] + : never; + +type SmallUnion831 = "a" | "b" | "c" | "d"; +type AllPerms831 = Permutation831; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig831, + Flat831, + FR831, + BigUnion831, + ExtractAlpha831, + ExcludeZulu831, + OptionalAll831, + RequiredAll831, + ReadonlyAll831, + NullableAll831, + TypeNames831, + Action831, + AllPerms831, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts new file mode 100644 index 00000000..3dc89183 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-32 (seed 832) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord832 { + a832: { x: number; y: string; z: boolean }; + b832: { p: string[]; q: Record }; + c832: { nested: { deep: { deeper: { deepest: string } } } }; + d832: number; + e832: string; + f832: boolean; + g832: null; + h832: undefined; + i832: bigint; + j832: symbol; +} + +type PartialBig832 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten832 = T extends Array ? Flatten832 : T; +type Nested832 = number[][][][][][][][][][]; +type Flat832 = Flatten832; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly832 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly832 : T[K]; +}; +type DeepRequired832 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired832 : T[K]; +}; +type FR832 = DeepReadonly832>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion832 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha832 = Extract; +type ExcludeZulu832 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA832 { width: number; height: number; depth: number } +interface ShapeB832 { color: string; opacity: number; blend: string } +interface ShapeC832 { x: number; y: number; z: number; w: number } +interface ShapeD832 { label: string; title: string; summary: string } + +type Combined832 = ShapeA832 & ShapeB832 & ShapeC832 & ShapeD832; +type OptionalAll832 = { [K in keyof Combined832]?: Combined832[K] }; +type RequiredAll832 = { [K in keyof Combined832]-?: Combined832[K] }; +type ReadonlyAll832 = { readonly [K in keyof Combined832]: Combined832[K] }; +type NullableAll832 = { [K in keyof Combined832]: Combined832[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString832 = T extends string ? true : false; +type IsNumber832 = T extends number ? true : false; +type TypeName832 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames832 = { + [K in keyof BigRecord832]: TypeName832; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb832 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource832 = "user" | "post" | "comment" | "tag" | "category"; +type Action832 = `${Verb832}_${Resource832}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise832 = T extends Promise ? UnwrapPromise832 : T; +type UnwrapArray832 = T extends (infer U)[] ? UnwrapArray832 : T; +type Head832 = T extends [infer H, ...infer _] ? H : never; +type Tail832 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation832 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation832>] + : never; + +type SmallUnion832 = "a" | "b" | "c" | "d"; +type AllPerms832 = Permutation832; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig832, + Flat832, + FR832, + BigUnion832, + ExtractAlpha832, + ExcludeZulu832, + OptionalAll832, + RequiredAll832, + ReadonlyAll832, + NullableAll832, + TypeNames832, + Action832, + AllPerms832, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts new file mode 100644 index 00000000..fce68016 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-33 (seed 833) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord833 { + a833: { x: number; y: string; z: boolean }; + b833: { p: string[]; q: Record }; + c833: { nested: { deep: { deeper: { deepest: string } } } }; + d833: number; + e833: string; + f833: boolean; + g833: null; + h833: undefined; + i833: bigint; + j833: symbol; +} + +type PartialBig833 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten833 = T extends Array ? Flatten833 : T; +type Nested833 = number[][][][][][][][][][]; +type Flat833 = Flatten833; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly833 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly833 : T[K]; +}; +type DeepRequired833 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired833 : T[K]; +}; +type FR833 = DeepReadonly833>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion833 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha833 = Extract; +type ExcludeZulu833 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA833 { width: number; height: number; depth: number } +interface ShapeB833 { color: string; opacity: number; blend: string } +interface ShapeC833 { x: number; y: number; z: number; w: number } +interface ShapeD833 { label: string; title: string; summary: string } + +type Combined833 = ShapeA833 & ShapeB833 & ShapeC833 & ShapeD833; +type OptionalAll833 = { [K in keyof Combined833]?: Combined833[K] }; +type RequiredAll833 = { [K in keyof Combined833]-?: Combined833[K] }; +type ReadonlyAll833 = { readonly [K in keyof Combined833]: Combined833[K] }; +type NullableAll833 = { [K in keyof Combined833]: Combined833[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString833 = T extends string ? true : false; +type IsNumber833 = T extends number ? true : false; +type TypeName833 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames833 = { + [K in keyof BigRecord833]: TypeName833; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb833 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource833 = "user" | "post" | "comment" | "tag" | "category"; +type Action833 = `${Verb833}_${Resource833}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise833 = T extends Promise ? UnwrapPromise833 : T; +type UnwrapArray833 = T extends (infer U)[] ? UnwrapArray833 : T; +type Head833 = T extends [infer H, ...infer _] ? H : never; +type Tail833 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation833 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation833>] + : never; + +type SmallUnion833 = "a" | "b" | "c" | "d"; +type AllPerms833 = Permutation833; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig833, + Flat833, + FR833, + BigUnion833, + ExtractAlpha833, + ExcludeZulu833, + OptionalAll833, + RequiredAll833, + ReadonlyAll833, + NullableAll833, + TypeNames833, + Action833, + AllPerms833, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts new file mode 100644 index 00000000..0353ae2f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-34 (seed 834) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord834 { + a834: { x: number; y: string; z: boolean }; + b834: { p: string[]; q: Record }; + c834: { nested: { deep: { deeper: { deepest: string } } } }; + d834: number; + e834: string; + f834: boolean; + g834: null; + h834: undefined; + i834: bigint; + j834: symbol; +} + +type PartialBig834 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten834 = T extends Array ? Flatten834 : T; +type Nested834 = number[][][][][][][][][][]; +type Flat834 = Flatten834; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly834 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly834 : T[K]; +}; +type DeepRequired834 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired834 : T[K]; +}; +type FR834 = DeepReadonly834>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion834 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha834 = Extract; +type ExcludeZulu834 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA834 { width: number; height: number; depth: number } +interface ShapeB834 { color: string; opacity: number; blend: string } +interface ShapeC834 { x: number; y: number; z: number; w: number } +interface ShapeD834 { label: string; title: string; summary: string } + +type Combined834 = ShapeA834 & ShapeB834 & ShapeC834 & ShapeD834; +type OptionalAll834 = { [K in keyof Combined834]?: Combined834[K] }; +type RequiredAll834 = { [K in keyof Combined834]-?: Combined834[K] }; +type ReadonlyAll834 = { readonly [K in keyof Combined834]: Combined834[K] }; +type NullableAll834 = { [K in keyof Combined834]: Combined834[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString834 = T extends string ? true : false; +type IsNumber834 = T extends number ? true : false; +type TypeName834 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames834 = { + [K in keyof BigRecord834]: TypeName834; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb834 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource834 = "user" | "post" | "comment" | "tag" | "category"; +type Action834 = `${Verb834}_${Resource834}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise834 = T extends Promise ? UnwrapPromise834 : T; +type UnwrapArray834 = T extends (infer U)[] ? UnwrapArray834 : T; +type Head834 = T extends [infer H, ...infer _] ? H : never; +type Tail834 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation834 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation834>] + : never; + +type SmallUnion834 = "a" | "b" | "c" | "d"; +type AllPerms834 = Permutation834; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig834, + Flat834, + FR834, + BigUnion834, + ExtractAlpha834, + ExcludeZulu834, + OptionalAll834, + RequiredAll834, + ReadonlyAll834, + NullableAll834, + TypeNames834, + Action834, + AllPerms834, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts new file mode 100644 index 00000000..b5262942 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-35 (seed 835) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord835 { + a835: { x: number; y: string; z: boolean }; + b835: { p: string[]; q: Record }; + c835: { nested: { deep: { deeper: { deepest: string } } } }; + d835: number; + e835: string; + f835: boolean; + g835: null; + h835: undefined; + i835: bigint; + j835: symbol; +} + +type PartialBig835 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten835 = T extends Array ? Flatten835 : T; +type Nested835 = number[][][][][][][][][][]; +type Flat835 = Flatten835; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly835 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly835 : T[K]; +}; +type DeepRequired835 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired835 : T[K]; +}; +type FR835 = DeepReadonly835>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion835 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha835 = Extract; +type ExcludeZulu835 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA835 { width: number; height: number; depth: number } +interface ShapeB835 { color: string; opacity: number; blend: string } +interface ShapeC835 { x: number; y: number; z: number; w: number } +interface ShapeD835 { label: string; title: string; summary: string } + +type Combined835 = ShapeA835 & ShapeB835 & ShapeC835 & ShapeD835; +type OptionalAll835 = { [K in keyof Combined835]?: Combined835[K] }; +type RequiredAll835 = { [K in keyof Combined835]-?: Combined835[K] }; +type ReadonlyAll835 = { readonly [K in keyof Combined835]: Combined835[K] }; +type NullableAll835 = { [K in keyof Combined835]: Combined835[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString835 = T extends string ? true : false; +type IsNumber835 = T extends number ? true : false; +type TypeName835 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames835 = { + [K in keyof BigRecord835]: TypeName835; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb835 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource835 = "user" | "post" | "comment" | "tag" | "category"; +type Action835 = `${Verb835}_${Resource835}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise835 = T extends Promise ? UnwrapPromise835 : T; +type UnwrapArray835 = T extends (infer U)[] ? UnwrapArray835 : T; +type Head835 = T extends [infer H, ...infer _] ? H : never; +type Tail835 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation835 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation835>] + : never; + +type SmallUnion835 = "a" | "b" | "c" | "d"; +type AllPerms835 = Permutation835; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig835, + Flat835, + FR835, + BigUnion835, + ExtractAlpha835, + ExcludeZulu835, + OptionalAll835, + RequiredAll835, + ReadonlyAll835, + NullableAll835, + TypeNames835, + Action835, + AllPerms835, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts new file mode 100644 index 00000000..45807b78 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-36 (seed 836) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord836 { + a836: { x: number; y: string; z: boolean }; + b836: { p: string[]; q: Record }; + c836: { nested: { deep: { deeper: { deepest: string } } } }; + d836: number; + e836: string; + f836: boolean; + g836: null; + h836: undefined; + i836: bigint; + j836: symbol; +} + +type PartialBig836 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten836 = T extends Array ? Flatten836 : T; +type Nested836 = number[][][][][][][][][][]; +type Flat836 = Flatten836; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly836 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly836 : T[K]; +}; +type DeepRequired836 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired836 : T[K]; +}; +type FR836 = DeepReadonly836>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion836 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha836 = Extract; +type ExcludeZulu836 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA836 { width: number; height: number; depth: number } +interface ShapeB836 { color: string; opacity: number; blend: string } +interface ShapeC836 { x: number; y: number; z: number; w: number } +interface ShapeD836 { label: string; title: string; summary: string } + +type Combined836 = ShapeA836 & ShapeB836 & ShapeC836 & ShapeD836; +type OptionalAll836 = { [K in keyof Combined836]?: Combined836[K] }; +type RequiredAll836 = { [K in keyof Combined836]-?: Combined836[K] }; +type ReadonlyAll836 = { readonly [K in keyof Combined836]: Combined836[K] }; +type NullableAll836 = { [K in keyof Combined836]: Combined836[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString836 = T extends string ? true : false; +type IsNumber836 = T extends number ? true : false; +type TypeName836 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames836 = { + [K in keyof BigRecord836]: TypeName836; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb836 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource836 = "user" | "post" | "comment" | "tag" | "category"; +type Action836 = `${Verb836}_${Resource836}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise836 = T extends Promise ? UnwrapPromise836 : T; +type UnwrapArray836 = T extends (infer U)[] ? UnwrapArray836 : T; +type Head836 = T extends [infer H, ...infer _] ? H : never; +type Tail836 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation836 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation836>] + : never; + +type SmallUnion836 = "a" | "b" | "c" | "d"; +type AllPerms836 = Permutation836; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig836, + Flat836, + FR836, + BigUnion836, + ExtractAlpha836, + ExcludeZulu836, + OptionalAll836, + RequiredAll836, + ReadonlyAll836, + NullableAll836, + TypeNames836, + Action836, + AllPerms836, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts new file mode 100644 index 00000000..84d06a1a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-37 (seed 837) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord837 { + a837: { x: number; y: string; z: boolean }; + b837: { p: string[]; q: Record }; + c837: { nested: { deep: { deeper: { deepest: string } } } }; + d837: number; + e837: string; + f837: boolean; + g837: null; + h837: undefined; + i837: bigint; + j837: symbol; +} + +type PartialBig837 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten837 = T extends Array ? Flatten837 : T; +type Nested837 = number[][][][][][][][][][]; +type Flat837 = Flatten837; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly837 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly837 : T[K]; +}; +type DeepRequired837 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired837 : T[K]; +}; +type FR837 = DeepReadonly837>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion837 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha837 = Extract; +type ExcludeZulu837 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA837 { width: number; height: number; depth: number } +interface ShapeB837 { color: string; opacity: number; blend: string } +interface ShapeC837 { x: number; y: number; z: number; w: number } +interface ShapeD837 { label: string; title: string; summary: string } + +type Combined837 = ShapeA837 & ShapeB837 & ShapeC837 & ShapeD837; +type OptionalAll837 = { [K in keyof Combined837]?: Combined837[K] }; +type RequiredAll837 = { [K in keyof Combined837]-?: Combined837[K] }; +type ReadonlyAll837 = { readonly [K in keyof Combined837]: Combined837[K] }; +type NullableAll837 = { [K in keyof Combined837]: Combined837[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString837 = T extends string ? true : false; +type IsNumber837 = T extends number ? true : false; +type TypeName837 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames837 = { + [K in keyof BigRecord837]: TypeName837; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb837 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource837 = "user" | "post" | "comment" | "tag" | "category"; +type Action837 = `${Verb837}_${Resource837}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise837 = T extends Promise ? UnwrapPromise837 : T; +type UnwrapArray837 = T extends (infer U)[] ? UnwrapArray837 : T; +type Head837 = T extends [infer H, ...infer _] ? H : never; +type Tail837 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation837 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation837>] + : never; + +type SmallUnion837 = "a" | "b" | "c" | "d"; +type AllPerms837 = Permutation837; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig837, + Flat837, + FR837, + BigUnion837, + ExtractAlpha837, + ExcludeZulu837, + OptionalAll837, + RequiredAll837, + ReadonlyAll837, + NullableAll837, + TypeNames837, + Action837, + AllPerms837, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts new file mode 100644 index 00000000..d023b96a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-38 (seed 838) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord838 { + a838: { x: number; y: string; z: boolean }; + b838: { p: string[]; q: Record }; + c838: { nested: { deep: { deeper: { deepest: string } } } }; + d838: number; + e838: string; + f838: boolean; + g838: null; + h838: undefined; + i838: bigint; + j838: symbol; +} + +type PartialBig838 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten838 = T extends Array ? Flatten838 : T; +type Nested838 = number[][][][][][][][][][]; +type Flat838 = Flatten838; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly838 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly838 : T[K]; +}; +type DeepRequired838 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired838 : T[K]; +}; +type FR838 = DeepReadonly838>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion838 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha838 = Extract; +type ExcludeZulu838 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA838 { width: number; height: number; depth: number } +interface ShapeB838 { color: string; opacity: number; blend: string } +interface ShapeC838 { x: number; y: number; z: number; w: number } +interface ShapeD838 { label: string; title: string; summary: string } + +type Combined838 = ShapeA838 & ShapeB838 & ShapeC838 & ShapeD838; +type OptionalAll838 = { [K in keyof Combined838]?: Combined838[K] }; +type RequiredAll838 = { [K in keyof Combined838]-?: Combined838[K] }; +type ReadonlyAll838 = { readonly [K in keyof Combined838]: Combined838[K] }; +type NullableAll838 = { [K in keyof Combined838]: Combined838[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString838 = T extends string ? true : false; +type IsNumber838 = T extends number ? true : false; +type TypeName838 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames838 = { + [K in keyof BigRecord838]: TypeName838; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb838 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource838 = "user" | "post" | "comment" | "tag" | "category"; +type Action838 = `${Verb838}_${Resource838}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise838 = T extends Promise ? UnwrapPromise838 : T; +type UnwrapArray838 = T extends (infer U)[] ? UnwrapArray838 : T; +type Head838 = T extends [infer H, ...infer _] ? H : never; +type Tail838 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation838 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation838>] + : never; + +type SmallUnion838 = "a" | "b" | "c" | "d"; +type AllPerms838 = Permutation838; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig838, + Flat838, + FR838, + BigUnion838, + ExtractAlpha838, + ExcludeZulu838, + OptionalAll838, + RequiredAll838, + ReadonlyAll838, + NullableAll838, + TypeNames838, + Action838, + AllPerms838, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts new file mode 100644 index 00000000..5d017630 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-39 (seed 839) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord839 { + a839: { x: number; y: string; z: boolean }; + b839: { p: string[]; q: Record }; + c839: { nested: { deep: { deeper: { deepest: string } } } }; + d839: number; + e839: string; + f839: boolean; + g839: null; + h839: undefined; + i839: bigint; + j839: symbol; +} + +type PartialBig839 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten839 = T extends Array ? Flatten839 : T; +type Nested839 = number[][][][][][][][][][]; +type Flat839 = Flatten839; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly839 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly839 : T[K]; +}; +type DeepRequired839 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired839 : T[K]; +}; +type FR839 = DeepReadonly839>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion839 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha839 = Extract; +type ExcludeZulu839 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA839 { width: number; height: number; depth: number } +interface ShapeB839 { color: string; opacity: number; blend: string } +interface ShapeC839 { x: number; y: number; z: number; w: number } +interface ShapeD839 { label: string; title: string; summary: string } + +type Combined839 = ShapeA839 & ShapeB839 & ShapeC839 & ShapeD839; +type OptionalAll839 = { [K in keyof Combined839]?: Combined839[K] }; +type RequiredAll839 = { [K in keyof Combined839]-?: Combined839[K] }; +type ReadonlyAll839 = { readonly [K in keyof Combined839]: Combined839[K] }; +type NullableAll839 = { [K in keyof Combined839]: Combined839[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString839 = T extends string ? true : false; +type IsNumber839 = T extends number ? true : false; +type TypeName839 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames839 = { + [K in keyof BigRecord839]: TypeName839; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb839 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource839 = "user" | "post" | "comment" | "tag" | "category"; +type Action839 = `${Verb839}_${Resource839}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise839 = T extends Promise ? UnwrapPromise839 : T; +type UnwrapArray839 = T extends (infer U)[] ? UnwrapArray839 : T; +type Head839 = T extends [infer H, ...infer _] ? H : never; +type Tail839 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation839 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation839>] + : never; + +type SmallUnion839 = "a" | "b" | "c" | "d"; +type AllPerms839 = Permutation839; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig839, + Flat839, + FR839, + BigUnion839, + ExtractAlpha839, + ExcludeZulu839, + OptionalAll839, + RequiredAll839, + ReadonlyAll839, + NullableAll839, + TypeNames839, + Action839, + AllPerms839, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts new file mode 100644 index 00000000..f20fef01 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-40 (seed 840) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord840 { + a840: { x: number; y: string; z: boolean }; + b840: { p: string[]; q: Record }; + c840: { nested: { deep: { deeper: { deepest: string } } } }; + d840: number; + e840: string; + f840: boolean; + g840: null; + h840: undefined; + i840: bigint; + j840: symbol; +} + +type PartialBig840 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten840 = T extends Array ? Flatten840 : T; +type Nested840 = number[][][][][][][][][][]; +type Flat840 = Flatten840; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly840 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly840 : T[K]; +}; +type DeepRequired840 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired840 : T[K]; +}; +type FR840 = DeepReadonly840>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion840 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha840 = Extract; +type ExcludeZulu840 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA840 { width: number; height: number; depth: number } +interface ShapeB840 { color: string; opacity: number; blend: string } +interface ShapeC840 { x: number; y: number; z: number; w: number } +interface ShapeD840 { label: string; title: string; summary: string } + +type Combined840 = ShapeA840 & ShapeB840 & ShapeC840 & ShapeD840; +type OptionalAll840 = { [K in keyof Combined840]?: Combined840[K] }; +type RequiredAll840 = { [K in keyof Combined840]-?: Combined840[K] }; +type ReadonlyAll840 = { readonly [K in keyof Combined840]: Combined840[K] }; +type NullableAll840 = { [K in keyof Combined840]: Combined840[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString840 = T extends string ? true : false; +type IsNumber840 = T extends number ? true : false; +type TypeName840 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames840 = { + [K in keyof BigRecord840]: TypeName840; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb840 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource840 = "user" | "post" | "comment" | "tag" | "category"; +type Action840 = `${Verb840}_${Resource840}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise840 = T extends Promise ? UnwrapPromise840 : T; +type UnwrapArray840 = T extends (infer U)[] ? UnwrapArray840 : T; +type Head840 = T extends [infer H, ...infer _] ? H : never; +type Tail840 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation840 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation840>] + : never; + +type SmallUnion840 = "a" | "b" | "c" | "d"; +type AllPerms840 = Permutation840; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig840, + Flat840, + FR840, + BigUnion840, + ExtractAlpha840, + ExcludeZulu840, + OptionalAll840, + RequiredAll840, + ReadonlyAll840, + NullableAll840, + TypeNames840, + Action840, + AllPerms840, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts new file mode 100644 index 00000000..b4b4a9df --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-41 (seed 841) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord841 { + a841: { x: number; y: string; z: boolean }; + b841: { p: string[]; q: Record }; + c841: { nested: { deep: { deeper: { deepest: string } } } }; + d841: number; + e841: string; + f841: boolean; + g841: null; + h841: undefined; + i841: bigint; + j841: symbol; +} + +type PartialBig841 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten841 = T extends Array ? Flatten841 : T; +type Nested841 = number[][][][][][][][][][]; +type Flat841 = Flatten841; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly841 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly841 : T[K]; +}; +type DeepRequired841 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired841 : T[K]; +}; +type FR841 = DeepReadonly841>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion841 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha841 = Extract; +type ExcludeZulu841 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA841 { width: number; height: number; depth: number } +interface ShapeB841 { color: string; opacity: number; blend: string } +interface ShapeC841 { x: number; y: number; z: number; w: number } +interface ShapeD841 { label: string; title: string; summary: string } + +type Combined841 = ShapeA841 & ShapeB841 & ShapeC841 & ShapeD841; +type OptionalAll841 = { [K in keyof Combined841]?: Combined841[K] }; +type RequiredAll841 = { [K in keyof Combined841]-?: Combined841[K] }; +type ReadonlyAll841 = { readonly [K in keyof Combined841]: Combined841[K] }; +type NullableAll841 = { [K in keyof Combined841]: Combined841[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString841 = T extends string ? true : false; +type IsNumber841 = T extends number ? true : false; +type TypeName841 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames841 = { + [K in keyof BigRecord841]: TypeName841; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb841 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource841 = "user" | "post" | "comment" | "tag" | "category"; +type Action841 = `${Verb841}_${Resource841}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise841 = T extends Promise ? UnwrapPromise841 : T; +type UnwrapArray841 = T extends (infer U)[] ? UnwrapArray841 : T; +type Head841 = T extends [infer H, ...infer _] ? H : never; +type Tail841 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation841 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation841>] + : never; + +type SmallUnion841 = "a" | "b" | "c" | "d"; +type AllPerms841 = Permutation841; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig841, + Flat841, + FR841, + BigUnion841, + ExtractAlpha841, + ExcludeZulu841, + OptionalAll841, + RequiredAll841, + ReadonlyAll841, + NullableAll841, + TypeNames841, + Action841, + AllPerms841, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts new file mode 100644 index 00000000..75382f9a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-42 (seed 842) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord842 { + a842: { x: number; y: string; z: boolean }; + b842: { p: string[]; q: Record }; + c842: { nested: { deep: { deeper: { deepest: string } } } }; + d842: number; + e842: string; + f842: boolean; + g842: null; + h842: undefined; + i842: bigint; + j842: symbol; +} + +type PartialBig842 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten842 = T extends Array ? Flatten842 : T; +type Nested842 = number[][][][][][][][][][]; +type Flat842 = Flatten842; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly842 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly842 : T[K]; +}; +type DeepRequired842 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired842 : T[K]; +}; +type FR842 = DeepReadonly842>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion842 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha842 = Extract; +type ExcludeZulu842 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA842 { width: number; height: number; depth: number } +interface ShapeB842 { color: string; opacity: number; blend: string } +interface ShapeC842 { x: number; y: number; z: number; w: number } +interface ShapeD842 { label: string; title: string; summary: string } + +type Combined842 = ShapeA842 & ShapeB842 & ShapeC842 & ShapeD842; +type OptionalAll842 = { [K in keyof Combined842]?: Combined842[K] }; +type RequiredAll842 = { [K in keyof Combined842]-?: Combined842[K] }; +type ReadonlyAll842 = { readonly [K in keyof Combined842]: Combined842[K] }; +type NullableAll842 = { [K in keyof Combined842]: Combined842[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString842 = T extends string ? true : false; +type IsNumber842 = T extends number ? true : false; +type TypeName842 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames842 = { + [K in keyof BigRecord842]: TypeName842; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb842 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource842 = "user" | "post" | "comment" | "tag" | "category"; +type Action842 = `${Verb842}_${Resource842}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise842 = T extends Promise ? UnwrapPromise842 : T; +type UnwrapArray842 = T extends (infer U)[] ? UnwrapArray842 : T; +type Head842 = T extends [infer H, ...infer _] ? H : never; +type Tail842 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation842 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation842>] + : never; + +type SmallUnion842 = "a" | "b" | "c" | "d"; +type AllPerms842 = Permutation842; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig842, + Flat842, + FR842, + BigUnion842, + ExtractAlpha842, + ExcludeZulu842, + OptionalAll842, + RequiredAll842, + ReadonlyAll842, + NullableAll842, + TypeNames842, + Action842, + AllPerms842, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts new file mode 100644 index 00000000..9052e954 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-43 (seed 843) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord843 { + a843: { x: number; y: string; z: boolean }; + b843: { p: string[]; q: Record }; + c843: { nested: { deep: { deeper: { deepest: string } } } }; + d843: number; + e843: string; + f843: boolean; + g843: null; + h843: undefined; + i843: bigint; + j843: symbol; +} + +type PartialBig843 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten843 = T extends Array ? Flatten843 : T; +type Nested843 = number[][][][][][][][][][]; +type Flat843 = Flatten843; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly843 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly843 : T[K]; +}; +type DeepRequired843 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired843 : T[K]; +}; +type FR843 = DeepReadonly843>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion843 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha843 = Extract; +type ExcludeZulu843 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA843 { width: number; height: number; depth: number } +interface ShapeB843 { color: string; opacity: number; blend: string } +interface ShapeC843 { x: number; y: number; z: number; w: number } +interface ShapeD843 { label: string; title: string; summary: string } + +type Combined843 = ShapeA843 & ShapeB843 & ShapeC843 & ShapeD843; +type OptionalAll843 = { [K in keyof Combined843]?: Combined843[K] }; +type RequiredAll843 = { [K in keyof Combined843]-?: Combined843[K] }; +type ReadonlyAll843 = { readonly [K in keyof Combined843]: Combined843[K] }; +type NullableAll843 = { [K in keyof Combined843]: Combined843[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString843 = T extends string ? true : false; +type IsNumber843 = T extends number ? true : false; +type TypeName843 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames843 = { + [K in keyof BigRecord843]: TypeName843; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb843 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource843 = "user" | "post" | "comment" | "tag" | "category"; +type Action843 = `${Verb843}_${Resource843}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise843 = T extends Promise ? UnwrapPromise843 : T; +type UnwrapArray843 = T extends (infer U)[] ? UnwrapArray843 : T; +type Head843 = T extends [infer H, ...infer _] ? H : never; +type Tail843 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation843 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation843>] + : never; + +type SmallUnion843 = "a" | "b" | "c" | "d"; +type AllPerms843 = Permutation843; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig843, + Flat843, + FR843, + BigUnion843, + ExtractAlpha843, + ExcludeZulu843, + OptionalAll843, + RequiredAll843, + ReadonlyAll843, + NullableAll843, + TypeNames843, + Action843, + AllPerms843, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts new file mode 100644 index 00000000..28be42fb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-44 (seed 844) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord844 { + a844: { x: number; y: string; z: boolean }; + b844: { p: string[]; q: Record }; + c844: { nested: { deep: { deeper: { deepest: string } } } }; + d844: number; + e844: string; + f844: boolean; + g844: null; + h844: undefined; + i844: bigint; + j844: symbol; +} + +type PartialBig844 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten844 = T extends Array ? Flatten844 : T; +type Nested844 = number[][][][][][][][][][]; +type Flat844 = Flatten844; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly844 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly844 : T[K]; +}; +type DeepRequired844 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired844 : T[K]; +}; +type FR844 = DeepReadonly844>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion844 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha844 = Extract; +type ExcludeZulu844 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA844 { width: number; height: number; depth: number } +interface ShapeB844 { color: string; opacity: number; blend: string } +interface ShapeC844 { x: number; y: number; z: number; w: number } +interface ShapeD844 { label: string; title: string; summary: string } + +type Combined844 = ShapeA844 & ShapeB844 & ShapeC844 & ShapeD844; +type OptionalAll844 = { [K in keyof Combined844]?: Combined844[K] }; +type RequiredAll844 = { [K in keyof Combined844]-?: Combined844[K] }; +type ReadonlyAll844 = { readonly [K in keyof Combined844]: Combined844[K] }; +type NullableAll844 = { [K in keyof Combined844]: Combined844[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString844 = T extends string ? true : false; +type IsNumber844 = T extends number ? true : false; +type TypeName844 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames844 = { + [K in keyof BigRecord844]: TypeName844; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb844 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource844 = "user" | "post" | "comment" | "tag" | "category"; +type Action844 = `${Verb844}_${Resource844}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise844 = T extends Promise ? UnwrapPromise844 : T; +type UnwrapArray844 = T extends (infer U)[] ? UnwrapArray844 : T; +type Head844 = T extends [infer H, ...infer _] ? H : never; +type Tail844 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation844 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation844>] + : never; + +type SmallUnion844 = "a" | "b" | "c" | "d"; +type AllPerms844 = Permutation844; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig844, + Flat844, + FR844, + BigUnion844, + ExtractAlpha844, + ExcludeZulu844, + OptionalAll844, + RequiredAll844, + ReadonlyAll844, + NullableAll844, + TypeNames844, + Action844, + AllPerms844, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts new file mode 100644 index 00000000..5a5332ce --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-45 (seed 845) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord845 { + a845: { x: number; y: string; z: boolean }; + b845: { p: string[]; q: Record }; + c845: { nested: { deep: { deeper: { deepest: string } } } }; + d845: number; + e845: string; + f845: boolean; + g845: null; + h845: undefined; + i845: bigint; + j845: symbol; +} + +type PartialBig845 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten845 = T extends Array ? Flatten845 : T; +type Nested845 = number[][][][][][][][][][]; +type Flat845 = Flatten845; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly845 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly845 : T[K]; +}; +type DeepRequired845 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired845 : T[K]; +}; +type FR845 = DeepReadonly845>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion845 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha845 = Extract; +type ExcludeZulu845 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA845 { width: number; height: number; depth: number } +interface ShapeB845 { color: string; opacity: number; blend: string } +interface ShapeC845 { x: number; y: number; z: number; w: number } +interface ShapeD845 { label: string; title: string; summary: string } + +type Combined845 = ShapeA845 & ShapeB845 & ShapeC845 & ShapeD845; +type OptionalAll845 = { [K in keyof Combined845]?: Combined845[K] }; +type RequiredAll845 = { [K in keyof Combined845]-?: Combined845[K] }; +type ReadonlyAll845 = { readonly [K in keyof Combined845]: Combined845[K] }; +type NullableAll845 = { [K in keyof Combined845]: Combined845[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString845 = T extends string ? true : false; +type IsNumber845 = T extends number ? true : false; +type TypeName845 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames845 = { + [K in keyof BigRecord845]: TypeName845; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb845 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource845 = "user" | "post" | "comment" | "tag" | "category"; +type Action845 = `${Verb845}_${Resource845}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise845 = T extends Promise ? UnwrapPromise845 : T; +type UnwrapArray845 = T extends (infer U)[] ? UnwrapArray845 : T; +type Head845 = T extends [infer H, ...infer _] ? H : never; +type Tail845 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation845 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation845>] + : never; + +type SmallUnion845 = "a" | "b" | "c" | "d"; +type AllPerms845 = Permutation845; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig845, + Flat845, + FR845, + BigUnion845, + ExtractAlpha845, + ExcludeZulu845, + OptionalAll845, + RequiredAll845, + ReadonlyAll845, + NullableAll845, + TypeNames845, + Action845, + AllPerms845, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts new file mode 100644 index 00000000..ce7060f2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-46 (seed 846) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord846 { + a846: { x: number; y: string; z: boolean }; + b846: { p: string[]; q: Record }; + c846: { nested: { deep: { deeper: { deepest: string } } } }; + d846: number; + e846: string; + f846: boolean; + g846: null; + h846: undefined; + i846: bigint; + j846: symbol; +} + +type PartialBig846 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten846 = T extends Array ? Flatten846 : T; +type Nested846 = number[][][][][][][][][][]; +type Flat846 = Flatten846; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly846 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly846 : T[K]; +}; +type DeepRequired846 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired846 : T[K]; +}; +type FR846 = DeepReadonly846>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion846 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha846 = Extract; +type ExcludeZulu846 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA846 { width: number; height: number; depth: number } +interface ShapeB846 { color: string; opacity: number; blend: string } +interface ShapeC846 { x: number; y: number; z: number; w: number } +interface ShapeD846 { label: string; title: string; summary: string } + +type Combined846 = ShapeA846 & ShapeB846 & ShapeC846 & ShapeD846; +type OptionalAll846 = { [K in keyof Combined846]?: Combined846[K] }; +type RequiredAll846 = { [K in keyof Combined846]-?: Combined846[K] }; +type ReadonlyAll846 = { readonly [K in keyof Combined846]: Combined846[K] }; +type NullableAll846 = { [K in keyof Combined846]: Combined846[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString846 = T extends string ? true : false; +type IsNumber846 = T extends number ? true : false; +type TypeName846 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames846 = { + [K in keyof BigRecord846]: TypeName846; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb846 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource846 = "user" | "post" | "comment" | "tag" | "category"; +type Action846 = `${Verb846}_${Resource846}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise846 = T extends Promise ? UnwrapPromise846 : T; +type UnwrapArray846 = T extends (infer U)[] ? UnwrapArray846 : T; +type Head846 = T extends [infer H, ...infer _] ? H : never; +type Tail846 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation846 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation846>] + : never; + +type SmallUnion846 = "a" | "b" | "c" | "d"; +type AllPerms846 = Permutation846; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig846, + Flat846, + FR846, + BigUnion846, + ExtractAlpha846, + ExcludeZulu846, + OptionalAll846, + RequiredAll846, + ReadonlyAll846, + NullableAll846, + TypeNames846, + Action846, + AllPerms846, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts new file mode 100644 index 00000000..fcbd4e3d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-47 (seed 847) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord847 { + a847: { x: number; y: string; z: boolean }; + b847: { p: string[]; q: Record }; + c847: { nested: { deep: { deeper: { deepest: string } } } }; + d847: number; + e847: string; + f847: boolean; + g847: null; + h847: undefined; + i847: bigint; + j847: symbol; +} + +type PartialBig847 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten847 = T extends Array ? Flatten847 : T; +type Nested847 = number[][][][][][][][][][]; +type Flat847 = Flatten847; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly847 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly847 : T[K]; +}; +type DeepRequired847 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired847 : T[K]; +}; +type FR847 = DeepReadonly847>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion847 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha847 = Extract; +type ExcludeZulu847 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA847 { width: number; height: number; depth: number } +interface ShapeB847 { color: string; opacity: number; blend: string } +interface ShapeC847 { x: number; y: number; z: number; w: number } +interface ShapeD847 { label: string; title: string; summary: string } + +type Combined847 = ShapeA847 & ShapeB847 & ShapeC847 & ShapeD847; +type OptionalAll847 = { [K in keyof Combined847]?: Combined847[K] }; +type RequiredAll847 = { [K in keyof Combined847]-?: Combined847[K] }; +type ReadonlyAll847 = { readonly [K in keyof Combined847]: Combined847[K] }; +type NullableAll847 = { [K in keyof Combined847]: Combined847[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString847 = T extends string ? true : false; +type IsNumber847 = T extends number ? true : false; +type TypeName847 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames847 = { + [K in keyof BigRecord847]: TypeName847; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb847 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource847 = "user" | "post" | "comment" | "tag" | "category"; +type Action847 = `${Verb847}_${Resource847}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise847 = T extends Promise ? UnwrapPromise847 : T; +type UnwrapArray847 = T extends (infer U)[] ? UnwrapArray847 : T; +type Head847 = T extends [infer H, ...infer _] ? H : never; +type Tail847 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation847 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation847>] + : never; + +type SmallUnion847 = "a" | "b" | "c" | "d"; +type AllPerms847 = Permutation847; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig847, + Flat847, + FR847, + BigUnion847, + ExtractAlpha847, + ExcludeZulu847, + OptionalAll847, + RequiredAll847, + ReadonlyAll847, + NullableAll847, + TypeNames847, + Action847, + AllPerms847, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts new file mode 100644 index 00000000..95ff0924 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-48 (seed 848) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord848 { + a848: { x: number; y: string; z: boolean }; + b848: { p: string[]; q: Record }; + c848: { nested: { deep: { deeper: { deepest: string } } } }; + d848: number; + e848: string; + f848: boolean; + g848: null; + h848: undefined; + i848: bigint; + j848: symbol; +} + +type PartialBig848 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten848 = T extends Array ? Flatten848 : T; +type Nested848 = number[][][][][][][][][][]; +type Flat848 = Flatten848; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly848 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly848 : T[K]; +}; +type DeepRequired848 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired848 : T[K]; +}; +type FR848 = DeepReadonly848>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion848 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha848 = Extract; +type ExcludeZulu848 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA848 { width: number; height: number; depth: number } +interface ShapeB848 { color: string; opacity: number; blend: string } +interface ShapeC848 { x: number; y: number; z: number; w: number } +interface ShapeD848 { label: string; title: string; summary: string } + +type Combined848 = ShapeA848 & ShapeB848 & ShapeC848 & ShapeD848; +type OptionalAll848 = { [K in keyof Combined848]?: Combined848[K] }; +type RequiredAll848 = { [K in keyof Combined848]-?: Combined848[K] }; +type ReadonlyAll848 = { readonly [K in keyof Combined848]: Combined848[K] }; +type NullableAll848 = { [K in keyof Combined848]: Combined848[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString848 = T extends string ? true : false; +type IsNumber848 = T extends number ? true : false; +type TypeName848 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames848 = { + [K in keyof BigRecord848]: TypeName848; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb848 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource848 = "user" | "post" | "comment" | "tag" | "category"; +type Action848 = `${Verb848}_${Resource848}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise848 = T extends Promise ? UnwrapPromise848 : T; +type UnwrapArray848 = T extends (infer U)[] ? UnwrapArray848 : T; +type Head848 = T extends [infer H, ...infer _] ? H : never; +type Tail848 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation848 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation848>] + : never; + +type SmallUnion848 = "a" | "b" | "c" | "d"; +type AllPerms848 = Permutation848; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig848, + Flat848, + FR848, + BigUnion848, + ExtractAlpha848, + ExcludeZulu848, + OptionalAll848, + RequiredAll848, + ReadonlyAll848, + NullableAll848, + TypeNames848, + Action848, + AllPerms848, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts new file mode 100644 index 00000000..563dfd48 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-49 (seed 849) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord849 { + a849: { x: number; y: string; z: boolean }; + b849: { p: string[]; q: Record }; + c849: { nested: { deep: { deeper: { deepest: string } } } }; + d849: number; + e849: string; + f849: boolean; + g849: null; + h849: undefined; + i849: bigint; + j849: symbol; +} + +type PartialBig849 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten849 = T extends Array ? Flatten849 : T; +type Nested849 = number[][][][][][][][][][]; +type Flat849 = Flatten849; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly849 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly849 : T[K]; +}; +type DeepRequired849 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired849 : T[K]; +}; +type FR849 = DeepReadonly849>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion849 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha849 = Extract; +type ExcludeZulu849 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA849 { width: number; height: number; depth: number } +interface ShapeB849 { color: string; opacity: number; blend: string } +interface ShapeC849 { x: number; y: number; z: number; w: number } +interface ShapeD849 { label: string; title: string; summary: string } + +type Combined849 = ShapeA849 & ShapeB849 & ShapeC849 & ShapeD849; +type OptionalAll849 = { [K in keyof Combined849]?: Combined849[K] }; +type RequiredAll849 = { [K in keyof Combined849]-?: Combined849[K] }; +type ReadonlyAll849 = { readonly [K in keyof Combined849]: Combined849[K] }; +type NullableAll849 = { [K in keyof Combined849]: Combined849[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString849 = T extends string ? true : false; +type IsNumber849 = T extends number ? true : false; +type TypeName849 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames849 = { + [K in keyof BigRecord849]: TypeName849; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb849 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource849 = "user" | "post" | "comment" | "tag" | "category"; +type Action849 = `${Verb849}_${Resource849}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise849 = T extends Promise ? UnwrapPromise849 : T; +type UnwrapArray849 = T extends (infer U)[] ? UnwrapArray849 : T; +type Head849 = T extends [infer H, ...infer _] ? H : never; +type Tail849 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation849 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation849>] + : never; + +type SmallUnion849 = "a" | "b" | "c" | "d"; +type AllPerms849 = Permutation849; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig849, + Flat849, + FR849, + BigUnion849, + ExtractAlpha849, + ExcludeZulu849, + OptionalAll849, + RequiredAll849, + ReadonlyAll849, + NullableAll849, + TypeNames849, + Action849, + AllPerms849, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts new file mode 100644 index 00000000..d99b6e4d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts @@ -0,0 +1,125 @@ +// pkg-08 / types-50 (seed 850) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord850 { + a850: { x: number; y: string; z: boolean }; + b850: { p: string[]; q: Record }; + c850: { nested: { deep: { deeper: { deepest: string } } } }; + d850: number; + e850: string; + f850: boolean; + g850: null; + h850: undefined; + i850: bigint; + j850: symbol; +} + +type PartialBig850 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten850 = T extends Array ? Flatten850 : T; +type Nested850 = number[][][][][][][][][][]; +type Flat850 = Flatten850; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly850 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly850 : T[K]; +}; +type DeepRequired850 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired850 : T[K]; +}; +type FR850 = DeepReadonly850>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion850 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha850 = Extract; +type ExcludeZulu850 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA850 { width: number; height: number; depth: number } +interface ShapeB850 { color: string; opacity: number; blend: string } +interface ShapeC850 { x: number; y: number; z: number; w: number } +interface ShapeD850 { label: string; title: string; summary: string } + +type Combined850 = ShapeA850 & ShapeB850 & ShapeC850 & ShapeD850; +type OptionalAll850 = { [K in keyof Combined850]?: Combined850[K] }; +type RequiredAll850 = { [K in keyof Combined850]-?: Combined850[K] }; +type ReadonlyAll850 = { readonly [K in keyof Combined850]: Combined850[K] }; +type NullableAll850 = { [K in keyof Combined850]: Combined850[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString850 = T extends string ? true : false; +type IsNumber850 = T extends number ? true : false; +type TypeName850 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames850 = { + [K in keyof BigRecord850]: TypeName850; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb850 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource850 = "user" | "post" | "comment" | "tag" | "category"; +type Action850 = `${Verb850}_${Resource850}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise850 = T extends Promise ? UnwrapPromise850 : T; +type UnwrapArray850 = T extends (infer U)[] ? UnwrapArray850 : T; +type Head850 = T extends [infer H, ...infer _] ? H : never; +type Tail850 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation850 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation850>] + : never; + +type SmallUnion850 = "a" | "b" | "c" | "d"; +type AllPerms850 = Permutation850; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig850, + Flat850, + FR850, + BigUnion850, + ExtractAlpha850, + ExcludeZulu850, + OptionalAll850, + RequiredAll850, + ReadonlyAll850, + NullableAll850, + TypeNames850, + Action850, + AllPerms850, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts new file mode 100644 index 00000000..36bcb72c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-01 (seed 901) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord901 { + a901: { x: number; y: string; z: boolean }; + b901: { p: string[]; q: Record }; + c901: { nested: { deep: { deeper: { deepest: string } } } }; + d901: number; + e901: string; + f901: boolean; + g901: null; + h901: undefined; + i901: bigint; + j901: symbol; +} + +type PartialBig901 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten901 = T extends Array ? Flatten901 : T; +type Nested901 = number[][][][][][][][][][]; +type Flat901 = Flatten901; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly901 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly901 : T[K]; +}; +type DeepRequired901 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired901 : T[K]; +}; +type FR901 = DeepReadonly901>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion901 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha901 = Extract; +type ExcludeZulu901 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA901 { width: number; height: number; depth: number } +interface ShapeB901 { color: string; opacity: number; blend: string } +interface ShapeC901 { x: number; y: number; z: number; w: number } +interface ShapeD901 { label: string; title: string; summary: string } + +type Combined901 = ShapeA901 & ShapeB901 & ShapeC901 & ShapeD901; +type OptionalAll901 = { [K in keyof Combined901]?: Combined901[K] }; +type RequiredAll901 = { [K in keyof Combined901]-?: Combined901[K] }; +type ReadonlyAll901 = { readonly [K in keyof Combined901]: Combined901[K] }; +type NullableAll901 = { [K in keyof Combined901]: Combined901[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString901 = T extends string ? true : false; +type IsNumber901 = T extends number ? true : false; +type TypeName901 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames901 = { + [K in keyof BigRecord901]: TypeName901; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb901 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource901 = "user" | "post" | "comment" | "tag" | "category"; +type Action901 = `${Verb901}_${Resource901}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise901 = T extends Promise ? UnwrapPromise901 : T; +type UnwrapArray901 = T extends (infer U)[] ? UnwrapArray901 : T; +type Head901 = T extends [infer H, ...infer _] ? H : never; +type Tail901 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation901 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation901>] + : never; + +type SmallUnion901 = "a" | "b" | "c" | "d"; +type AllPerms901 = Permutation901; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig901, + Flat901, + FR901, + BigUnion901, + ExtractAlpha901, + ExcludeZulu901, + OptionalAll901, + RequiredAll901, + ReadonlyAll901, + NullableAll901, + TypeNames901, + Action901, + AllPerms901, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts new file mode 100644 index 00000000..2b61cd5c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-02 (seed 902) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord902 { + a902: { x: number; y: string; z: boolean }; + b902: { p: string[]; q: Record }; + c902: { nested: { deep: { deeper: { deepest: string } } } }; + d902: number; + e902: string; + f902: boolean; + g902: null; + h902: undefined; + i902: bigint; + j902: symbol; +} + +type PartialBig902 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten902 = T extends Array ? Flatten902 : T; +type Nested902 = number[][][][][][][][][][]; +type Flat902 = Flatten902; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly902 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly902 : T[K]; +}; +type DeepRequired902 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired902 : T[K]; +}; +type FR902 = DeepReadonly902>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion902 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha902 = Extract; +type ExcludeZulu902 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA902 { width: number; height: number; depth: number } +interface ShapeB902 { color: string; opacity: number; blend: string } +interface ShapeC902 { x: number; y: number; z: number; w: number } +interface ShapeD902 { label: string; title: string; summary: string } + +type Combined902 = ShapeA902 & ShapeB902 & ShapeC902 & ShapeD902; +type OptionalAll902 = { [K in keyof Combined902]?: Combined902[K] }; +type RequiredAll902 = { [K in keyof Combined902]-?: Combined902[K] }; +type ReadonlyAll902 = { readonly [K in keyof Combined902]: Combined902[K] }; +type NullableAll902 = { [K in keyof Combined902]: Combined902[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString902 = T extends string ? true : false; +type IsNumber902 = T extends number ? true : false; +type TypeName902 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames902 = { + [K in keyof BigRecord902]: TypeName902; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb902 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource902 = "user" | "post" | "comment" | "tag" | "category"; +type Action902 = `${Verb902}_${Resource902}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise902 = T extends Promise ? UnwrapPromise902 : T; +type UnwrapArray902 = T extends (infer U)[] ? UnwrapArray902 : T; +type Head902 = T extends [infer H, ...infer _] ? H : never; +type Tail902 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation902 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation902>] + : never; + +type SmallUnion902 = "a" | "b" | "c" | "d"; +type AllPerms902 = Permutation902; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig902, + Flat902, + FR902, + BigUnion902, + ExtractAlpha902, + ExcludeZulu902, + OptionalAll902, + RequiredAll902, + ReadonlyAll902, + NullableAll902, + TypeNames902, + Action902, + AllPerms902, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts new file mode 100644 index 00000000..e4c389a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-03 (seed 903) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord903 { + a903: { x: number; y: string; z: boolean }; + b903: { p: string[]; q: Record }; + c903: { nested: { deep: { deeper: { deepest: string } } } }; + d903: number; + e903: string; + f903: boolean; + g903: null; + h903: undefined; + i903: bigint; + j903: symbol; +} + +type PartialBig903 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten903 = T extends Array ? Flatten903 : T; +type Nested903 = number[][][][][][][][][][]; +type Flat903 = Flatten903; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly903 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly903 : T[K]; +}; +type DeepRequired903 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired903 : T[K]; +}; +type FR903 = DeepReadonly903>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion903 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha903 = Extract; +type ExcludeZulu903 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA903 { width: number; height: number; depth: number } +interface ShapeB903 { color: string; opacity: number; blend: string } +interface ShapeC903 { x: number; y: number; z: number; w: number } +interface ShapeD903 { label: string; title: string; summary: string } + +type Combined903 = ShapeA903 & ShapeB903 & ShapeC903 & ShapeD903; +type OptionalAll903 = { [K in keyof Combined903]?: Combined903[K] }; +type RequiredAll903 = { [K in keyof Combined903]-?: Combined903[K] }; +type ReadonlyAll903 = { readonly [K in keyof Combined903]: Combined903[K] }; +type NullableAll903 = { [K in keyof Combined903]: Combined903[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString903 = T extends string ? true : false; +type IsNumber903 = T extends number ? true : false; +type TypeName903 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames903 = { + [K in keyof BigRecord903]: TypeName903; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb903 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource903 = "user" | "post" | "comment" | "tag" | "category"; +type Action903 = `${Verb903}_${Resource903}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise903 = T extends Promise ? UnwrapPromise903 : T; +type UnwrapArray903 = T extends (infer U)[] ? UnwrapArray903 : T; +type Head903 = T extends [infer H, ...infer _] ? H : never; +type Tail903 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation903 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation903>] + : never; + +type SmallUnion903 = "a" | "b" | "c" | "d"; +type AllPerms903 = Permutation903; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig903, + Flat903, + FR903, + BigUnion903, + ExtractAlpha903, + ExcludeZulu903, + OptionalAll903, + RequiredAll903, + ReadonlyAll903, + NullableAll903, + TypeNames903, + Action903, + AllPerms903, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts new file mode 100644 index 00000000..e5a706a8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-04 (seed 904) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord904 { + a904: { x: number; y: string; z: boolean }; + b904: { p: string[]; q: Record }; + c904: { nested: { deep: { deeper: { deepest: string } } } }; + d904: number; + e904: string; + f904: boolean; + g904: null; + h904: undefined; + i904: bigint; + j904: symbol; +} + +type PartialBig904 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten904 = T extends Array ? Flatten904 : T; +type Nested904 = number[][][][][][][][][][]; +type Flat904 = Flatten904; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly904 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly904 : T[K]; +}; +type DeepRequired904 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired904 : T[K]; +}; +type FR904 = DeepReadonly904>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion904 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha904 = Extract; +type ExcludeZulu904 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA904 { width: number; height: number; depth: number } +interface ShapeB904 { color: string; opacity: number; blend: string } +interface ShapeC904 { x: number; y: number; z: number; w: number } +interface ShapeD904 { label: string; title: string; summary: string } + +type Combined904 = ShapeA904 & ShapeB904 & ShapeC904 & ShapeD904; +type OptionalAll904 = { [K in keyof Combined904]?: Combined904[K] }; +type RequiredAll904 = { [K in keyof Combined904]-?: Combined904[K] }; +type ReadonlyAll904 = { readonly [K in keyof Combined904]: Combined904[K] }; +type NullableAll904 = { [K in keyof Combined904]: Combined904[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString904 = T extends string ? true : false; +type IsNumber904 = T extends number ? true : false; +type TypeName904 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames904 = { + [K in keyof BigRecord904]: TypeName904; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb904 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource904 = "user" | "post" | "comment" | "tag" | "category"; +type Action904 = `${Verb904}_${Resource904}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise904 = T extends Promise ? UnwrapPromise904 : T; +type UnwrapArray904 = T extends (infer U)[] ? UnwrapArray904 : T; +type Head904 = T extends [infer H, ...infer _] ? H : never; +type Tail904 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation904 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation904>] + : never; + +type SmallUnion904 = "a" | "b" | "c" | "d"; +type AllPerms904 = Permutation904; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig904, + Flat904, + FR904, + BigUnion904, + ExtractAlpha904, + ExcludeZulu904, + OptionalAll904, + RequiredAll904, + ReadonlyAll904, + NullableAll904, + TypeNames904, + Action904, + AllPerms904, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts new file mode 100644 index 00000000..2cb186cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-05 (seed 905) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord905 { + a905: { x: number; y: string; z: boolean }; + b905: { p: string[]; q: Record }; + c905: { nested: { deep: { deeper: { deepest: string } } } }; + d905: number; + e905: string; + f905: boolean; + g905: null; + h905: undefined; + i905: bigint; + j905: symbol; +} + +type PartialBig905 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten905 = T extends Array ? Flatten905 : T; +type Nested905 = number[][][][][][][][][][]; +type Flat905 = Flatten905; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly905 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly905 : T[K]; +}; +type DeepRequired905 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired905 : T[K]; +}; +type FR905 = DeepReadonly905>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion905 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha905 = Extract; +type ExcludeZulu905 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA905 { width: number; height: number; depth: number } +interface ShapeB905 { color: string; opacity: number; blend: string } +interface ShapeC905 { x: number; y: number; z: number; w: number } +interface ShapeD905 { label: string; title: string; summary: string } + +type Combined905 = ShapeA905 & ShapeB905 & ShapeC905 & ShapeD905; +type OptionalAll905 = { [K in keyof Combined905]?: Combined905[K] }; +type RequiredAll905 = { [K in keyof Combined905]-?: Combined905[K] }; +type ReadonlyAll905 = { readonly [K in keyof Combined905]: Combined905[K] }; +type NullableAll905 = { [K in keyof Combined905]: Combined905[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString905 = T extends string ? true : false; +type IsNumber905 = T extends number ? true : false; +type TypeName905 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames905 = { + [K in keyof BigRecord905]: TypeName905; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb905 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource905 = "user" | "post" | "comment" | "tag" | "category"; +type Action905 = `${Verb905}_${Resource905}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise905 = T extends Promise ? UnwrapPromise905 : T; +type UnwrapArray905 = T extends (infer U)[] ? UnwrapArray905 : T; +type Head905 = T extends [infer H, ...infer _] ? H : never; +type Tail905 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation905 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation905>] + : never; + +type SmallUnion905 = "a" | "b" | "c" | "d"; +type AllPerms905 = Permutation905; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig905, + Flat905, + FR905, + BigUnion905, + ExtractAlpha905, + ExcludeZulu905, + OptionalAll905, + RequiredAll905, + ReadonlyAll905, + NullableAll905, + TypeNames905, + Action905, + AllPerms905, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts new file mode 100644 index 00000000..ce995533 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-06 (seed 906) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord906 { + a906: { x: number; y: string; z: boolean }; + b906: { p: string[]; q: Record }; + c906: { nested: { deep: { deeper: { deepest: string } } } }; + d906: number; + e906: string; + f906: boolean; + g906: null; + h906: undefined; + i906: bigint; + j906: symbol; +} + +type PartialBig906 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten906 = T extends Array ? Flatten906 : T; +type Nested906 = number[][][][][][][][][][]; +type Flat906 = Flatten906; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly906 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly906 : T[K]; +}; +type DeepRequired906 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired906 : T[K]; +}; +type FR906 = DeepReadonly906>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion906 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha906 = Extract; +type ExcludeZulu906 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA906 { width: number; height: number; depth: number } +interface ShapeB906 { color: string; opacity: number; blend: string } +interface ShapeC906 { x: number; y: number; z: number; w: number } +interface ShapeD906 { label: string; title: string; summary: string } + +type Combined906 = ShapeA906 & ShapeB906 & ShapeC906 & ShapeD906; +type OptionalAll906 = { [K in keyof Combined906]?: Combined906[K] }; +type RequiredAll906 = { [K in keyof Combined906]-?: Combined906[K] }; +type ReadonlyAll906 = { readonly [K in keyof Combined906]: Combined906[K] }; +type NullableAll906 = { [K in keyof Combined906]: Combined906[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString906 = T extends string ? true : false; +type IsNumber906 = T extends number ? true : false; +type TypeName906 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames906 = { + [K in keyof BigRecord906]: TypeName906; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb906 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource906 = "user" | "post" | "comment" | "tag" | "category"; +type Action906 = `${Verb906}_${Resource906}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise906 = T extends Promise ? UnwrapPromise906 : T; +type UnwrapArray906 = T extends (infer U)[] ? UnwrapArray906 : T; +type Head906 = T extends [infer H, ...infer _] ? H : never; +type Tail906 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation906 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation906>] + : never; + +type SmallUnion906 = "a" | "b" | "c" | "d"; +type AllPerms906 = Permutation906; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig906, + Flat906, + FR906, + BigUnion906, + ExtractAlpha906, + ExcludeZulu906, + OptionalAll906, + RequiredAll906, + ReadonlyAll906, + NullableAll906, + TypeNames906, + Action906, + AllPerms906, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts new file mode 100644 index 00000000..80c0497d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-07 (seed 907) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord907 { + a907: { x: number; y: string; z: boolean }; + b907: { p: string[]; q: Record }; + c907: { nested: { deep: { deeper: { deepest: string } } } }; + d907: number; + e907: string; + f907: boolean; + g907: null; + h907: undefined; + i907: bigint; + j907: symbol; +} + +type PartialBig907 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten907 = T extends Array ? Flatten907 : T; +type Nested907 = number[][][][][][][][][][]; +type Flat907 = Flatten907; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly907 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly907 : T[K]; +}; +type DeepRequired907 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired907 : T[K]; +}; +type FR907 = DeepReadonly907>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion907 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha907 = Extract; +type ExcludeZulu907 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA907 { width: number; height: number; depth: number } +interface ShapeB907 { color: string; opacity: number; blend: string } +interface ShapeC907 { x: number; y: number; z: number; w: number } +interface ShapeD907 { label: string; title: string; summary: string } + +type Combined907 = ShapeA907 & ShapeB907 & ShapeC907 & ShapeD907; +type OptionalAll907 = { [K in keyof Combined907]?: Combined907[K] }; +type RequiredAll907 = { [K in keyof Combined907]-?: Combined907[K] }; +type ReadonlyAll907 = { readonly [K in keyof Combined907]: Combined907[K] }; +type NullableAll907 = { [K in keyof Combined907]: Combined907[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString907 = T extends string ? true : false; +type IsNumber907 = T extends number ? true : false; +type TypeName907 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames907 = { + [K in keyof BigRecord907]: TypeName907; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb907 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource907 = "user" | "post" | "comment" | "tag" | "category"; +type Action907 = `${Verb907}_${Resource907}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise907 = T extends Promise ? UnwrapPromise907 : T; +type UnwrapArray907 = T extends (infer U)[] ? UnwrapArray907 : T; +type Head907 = T extends [infer H, ...infer _] ? H : never; +type Tail907 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation907 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation907>] + : never; + +type SmallUnion907 = "a" | "b" | "c" | "d"; +type AllPerms907 = Permutation907; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig907, + Flat907, + FR907, + BigUnion907, + ExtractAlpha907, + ExcludeZulu907, + OptionalAll907, + RequiredAll907, + ReadonlyAll907, + NullableAll907, + TypeNames907, + Action907, + AllPerms907, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts new file mode 100644 index 00000000..71a68851 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-08 (seed 908) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord908 { + a908: { x: number; y: string; z: boolean }; + b908: { p: string[]; q: Record }; + c908: { nested: { deep: { deeper: { deepest: string } } } }; + d908: number; + e908: string; + f908: boolean; + g908: null; + h908: undefined; + i908: bigint; + j908: symbol; +} + +type PartialBig908 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten908 = T extends Array ? Flatten908 : T; +type Nested908 = number[][][][][][][][][][]; +type Flat908 = Flatten908; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly908 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly908 : T[K]; +}; +type DeepRequired908 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired908 : T[K]; +}; +type FR908 = DeepReadonly908>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion908 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha908 = Extract; +type ExcludeZulu908 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA908 { width: number; height: number; depth: number } +interface ShapeB908 { color: string; opacity: number; blend: string } +interface ShapeC908 { x: number; y: number; z: number; w: number } +interface ShapeD908 { label: string; title: string; summary: string } + +type Combined908 = ShapeA908 & ShapeB908 & ShapeC908 & ShapeD908; +type OptionalAll908 = { [K in keyof Combined908]?: Combined908[K] }; +type RequiredAll908 = { [K in keyof Combined908]-?: Combined908[K] }; +type ReadonlyAll908 = { readonly [K in keyof Combined908]: Combined908[K] }; +type NullableAll908 = { [K in keyof Combined908]: Combined908[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString908 = T extends string ? true : false; +type IsNumber908 = T extends number ? true : false; +type TypeName908 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames908 = { + [K in keyof BigRecord908]: TypeName908; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb908 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource908 = "user" | "post" | "comment" | "tag" | "category"; +type Action908 = `${Verb908}_${Resource908}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise908 = T extends Promise ? UnwrapPromise908 : T; +type UnwrapArray908 = T extends (infer U)[] ? UnwrapArray908 : T; +type Head908 = T extends [infer H, ...infer _] ? H : never; +type Tail908 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation908 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation908>] + : never; + +type SmallUnion908 = "a" | "b" | "c" | "d"; +type AllPerms908 = Permutation908; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig908, + Flat908, + FR908, + BigUnion908, + ExtractAlpha908, + ExcludeZulu908, + OptionalAll908, + RequiredAll908, + ReadonlyAll908, + NullableAll908, + TypeNames908, + Action908, + AllPerms908, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts new file mode 100644 index 00000000..8ed0bc2c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-09 (seed 909) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord909 { + a909: { x: number; y: string; z: boolean }; + b909: { p: string[]; q: Record }; + c909: { nested: { deep: { deeper: { deepest: string } } } }; + d909: number; + e909: string; + f909: boolean; + g909: null; + h909: undefined; + i909: bigint; + j909: symbol; +} + +type PartialBig909 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten909 = T extends Array ? Flatten909 : T; +type Nested909 = number[][][][][][][][][][]; +type Flat909 = Flatten909; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly909 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly909 : T[K]; +}; +type DeepRequired909 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired909 : T[K]; +}; +type FR909 = DeepReadonly909>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion909 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha909 = Extract; +type ExcludeZulu909 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA909 { width: number; height: number; depth: number } +interface ShapeB909 { color: string; opacity: number; blend: string } +interface ShapeC909 { x: number; y: number; z: number; w: number } +interface ShapeD909 { label: string; title: string; summary: string } + +type Combined909 = ShapeA909 & ShapeB909 & ShapeC909 & ShapeD909; +type OptionalAll909 = { [K in keyof Combined909]?: Combined909[K] }; +type RequiredAll909 = { [K in keyof Combined909]-?: Combined909[K] }; +type ReadonlyAll909 = { readonly [K in keyof Combined909]: Combined909[K] }; +type NullableAll909 = { [K in keyof Combined909]: Combined909[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString909 = T extends string ? true : false; +type IsNumber909 = T extends number ? true : false; +type TypeName909 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames909 = { + [K in keyof BigRecord909]: TypeName909; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb909 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource909 = "user" | "post" | "comment" | "tag" | "category"; +type Action909 = `${Verb909}_${Resource909}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise909 = T extends Promise ? UnwrapPromise909 : T; +type UnwrapArray909 = T extends (infer U)[] ? UnwrapArray909 : T; +type Head909 = T extends [infer H, ...infer _] ? H : never; +type Tail909 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation909 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation909>] + : never; + +type SmallUnion909 = "a" | "b" | "c" | "d"; +type AllPerms909 = Permutation909; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig909, + Flat909, + FR909, + BigUnion909, + ExtractAlpha909, + ExcludeZulu909, + OptionalAll909, + RequiredAll909, + ReadonlyAll909, + NullableAll909, + TypeNames909, + Action909, + AllPerms909, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts new file mode 100644 index 00000000..34652703 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-10 (seed 910) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord910 { + a910: { x: number; y: string; z: boolean }; + b910: { p: string[]; q: Record }; + c910: { nested: { deep: { deeper: { deepest: string } } } }; + d910: number; + e910: string; + f910: boolean; + g910: null; + h910: undefined; + i910: bigint; + j910: symbol; +} + +type PartialBig910 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten910 = T extends Array ? Flatten910 : T; +type Nested910 = number[][][][][][][][][][]; +type Flat910 = Flatten910; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly910 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly910 : T[K]; +}; +type DeepRequired910 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired910 : T[K]; +}; +type FR910 = DeepReadonly910>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion910 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha910 = Extract; +type ExcludeZulu910 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA910 { width: number; height: number; depth: number } +interface ShapeB910 { color: string; opacity: number; blend: string } +interface ShapeC910 { x: number; y: number; z: number; w: number } +interface ShapeD910 { label: string; title: string; summary: string } + +type Combined910 = ShapeA910 & ShapeB910 & ShapeC910 & ShapeD910; +type OptionalAll910 = { [K in keyof Combined910]?: Combined910[K] }; +type RequiredAll910 = { [K in keyof Combined910]-?: Combined910[K] }; +type ReadonlyAll910 = { readonly [K in keyof Combined910]: Combined910[K] }; +type NullableAll910 = { [K in keyof Combined910]: Combined910[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString910 = T extends string ? true : false; +type IsNumber910 = T extends number ? true : false; +type TypeName910 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames910 = { + [K in keyof BigRecord910]: TypeName910; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb910 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource910 = "user" | "post" | "comment" | "tag" | "category"; +type Action910 = `${Verb910}_${Resource910}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise910 = T extends Promise ? UnwrapPromise910 : T; +type UnwrapArray910 = T extends (infer U)[] ? UnwrapArray910 : T; +type Head910 = T extends [infer H, ...infer _] ? H : never; +type Tail910 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation910 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation910>] + : never; + +type SmallUnion910 = "a" | "b" | "c" | "d"; +type AllPerms910 = Permutation910; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig910, + Flat910, + FR910, + BigUnion910, + ExtractAlpha910, + ExcludeZulu910, + OptionalAll910, + RequiredAll910, + ReadonlyAll910, + NullableAll910, + TypeNames910, + Action910, + AllPerms910, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts new file mode 100644 index 00000000..b7332b1a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-11 (seed 911) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord911 { + a911: { x: number; y: string; z: boolean }; + b911: { p: string[]; q: Record }; + c911: { nested: { deep: { deeper: { deepest: string } } } }; + d911: number; + e911: string; + f911: boolean; + g911: null; + h911: undefined; + i911: bigint; + j911: symbol; +} + +type PartialBig911 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten911 = T extends Array ? Flatten911 : T; +type Nested911 = number[][][][][][][][][][]; +type Flat911 = Flatten911; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly911 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly911 : T[K]; +}; +type DeepRequired911 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired911 : T[K]; +}; +type FR911 = DeepReadonly911>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion911 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha911 = Extract; +type ExcludeZulu911 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA911 { width: number; height: number; depth: number } +interface ShapeB911 { color: string; opacity: number; blend: string } +interface ShapeC911 { x: number; y: number; z: number; w: number } +interface ShapeD911 { label: string; title: string; summary: string } + +type Combined911 = ShapeA911 & ShapeB911 & ShapeC911 & ShapeD911; +type OptionalAll911 = { [K in keyof Combined911]?: Combined911[K] }; +type RequiredAll911 = { [K in keyof Combined911]-?: Combined911[K] }; +type ReadonlyAll911 = { readonly [K in keyof Combined911]: Combined911[K] }; +type NullableAll911 = { [K in keyof Combined911]: Combined911[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString911 = T extends string ? true : false; +type IsNumber911 = T extends number ? true : false; +type TypeName911 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames911 = { + [K in keyof BigRecord911]: TypeName911; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb911 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource911 = "user" | "post" | "comment" | "tag" | "category"; +type Action911 = `${Verb911}_${Resource911}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise911 = T extends Promise ? UnwrapPromise911 : T; +type UnwrapArray911 = T extends (infer U)[] ? UnwrapArray911 : T; +type Head911 = T extends [infer H, ...infer _] ? H : never; +type Tail911 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation911 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation911>] + : never; + +type SmallUnion911 = "a" | "b" | "c" | "d"; +type AllPerms911 = Permutation911; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig911, + Flat911, + FR911, + BigUnion911, + ExtractAlpha911, + ExcludeZulu911, + OptionalAll911, + RequiredAll911, + ReadonlyAll911, + NullableAll911, + TypeNames911, + Action911, + AllPerms911, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts new file mode 100644 index 00000000..bd9dc712 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-12 (seed 912) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord912 { + a912: { x: number; y: string; z: boolean }; + b912: { p: string[]; q: Record }; + c912: { nested: { deep: { deeper: { deepest: string } } } }; + d912: number; + e912: string; + f912: boolean; + g912: null; + h912: undefined; + i912: bigint; + j912: symbol; +} + +type PartialBig912 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten912 = T extends Array ? Flatten912 : T; +type Nested912 = number[][][][][][][][][][]; +type Flat912 = Flatten912; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly912 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly912 : T[K]; +}; +type DeepRequired912 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired912 : T[K]; +}; +type FR912 = DeepReadonly912>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion912 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha912 = Extract; +type ExcludeZulu912 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA912 { width: number; height: number; depth: number } +interface ShapeB912 { color: string; opacity: number; blend: string } +interface ShapeC912 { x: number; y: number; z: number; w: number } +interface ShapeD912 { label: string; title: string; summary: string } + +type Combined912 = ShapeA912 & ShapeB912 & ShapeC912 & ShapeD912; +type OptionalAll912 = { [K in keyof Combined912]?: Combined912[K] }; +type RequiredAll912 = { [K in keyof Combined912]-?: Combined912[K] }; +type ReadonlyAll912 = { readonly [K in keyof Combined912]: Combined912[K] }; +type NullableAll912 = { [K in keyof Combined912]: Combined912[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString912 = T extends string ? true : false; +type IsNumber912 = T extends number ? true : false; +type TypeName912 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames912 = { + [K in keyof BigRecord912]: TypeName912; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb912 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource912 = "user" | "post" | "comment" | "tag" | "category"; +type Action912 = `${Verb912}_${Resource912}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise912 = T extends Promise ? UnwrapPromise912 : T; +type UnwrapArray912 = T extends (infer U)[] ? UnwrapArray912 : T; +type Head912 = T extends [infer H, ...infer _] ? H : never; +type Tail912 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation912 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation912>] + : never; + +type SmallUnion912 = "a" | "b" | "c" | "d"; +type AllPerms912 = Permutation912; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig912, + Flat912, + FR912, + BigUnion912, + ExtractAlpha912, + ExcludeZulu912, + OptionalAll912, + RequiredAll912, + ReadonlyAll912, + NullableAll912, + TypeNames912, + Action912, + AllPerms912, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts new file mode 100644 index 00000000..1eadfd2e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-13 (seed 913) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord913 { + a913: { x: number; y: string; z: boolean }; + b913: { p: string[]; q: Record }; + c913: { nested: { deep: { deeper: { deepest: string } } } }; + d913: number; + e913: string; + f913: boolean; + g913: null; + h913: undefined; + i913: bigint; + j913: symbol; +} + +type PartialBig913 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten913 = T extends Array ? Flatten913 : T; +type Nested913 = number[][][][][][][][][][]; +type Flat913 = Flatten913; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly913 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly913 : T[K]; +}; +type DeepRequired913 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired913 : T[K]; +}; +type FR913 = DeepReadonly913>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion913 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha913 = Extract; +type ExcludeZulu913 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA913 { width: number; height: number; depth: number } +interface ShapeB913 { color: string; opacity: number; blend: string } +interface ShapeC913 { x: number; y: number; z: number; w: number } +interface ShapeD913 { label: string; title: string; summary: string } + +type Combined913 = ShapeA913 & ShapeB913 & ShapeC913 & ShapeD913; +type OptionalAll913 = { [K in keyof Combined913]?: Combined913[K] }; +type RequiredAll913 = { [K in keyof Combined913]-?: Combined913[K] }; +type ReadonlyAll913 = { readonly [K in keyof Combined913]: Combined913[K] }; +type NullableAll913 = { [K in keyof Combined913]: Combined913[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString913 = T extends string ? true : false; +type IsNumber913 = T extends number ? true : false; +type TypeName913 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames913 = { + [K in keyof BigRecord913]: TypeName913; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb913 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource913 = "user" | "post" | "comment" | "tag" | "category"; +type Action913 = `${Verb913}_${Resource913}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise913 = T extends Promise ? UnwrapPromise913 : T; +type UnwrapArray913 = T extends (infer U)[] ? UnwrapArray913 : T; +type Head913 = T extends [infer H, ...infer _] ? H : never; +type Tail913 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation913 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation913>] + : never; + +type SmallUnion913 = "a" | "b" | "c" | "d"; +type AllPerms913 = Permutation913; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig913, + Flat913, + FR913, + BigUnion913, + ExtractAlpha913, + ExcludeZulu913, + OptionalAll913, + RequiredAll913, + ReadonlyAll913, + NullableAll913, + TypeNames913, + Action913, + AllPerms913, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts new file mode 100644 index 00000000..6d1fa02d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-14 (seed 914) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord914 { + a914: { x: number; y: string; z: boolean }; + b914: { p: string[]; q: Record }; + c914: { nested: { deep: { deeper: { deepest: string } } } }; + d914: number; + e914: string; + f914: boolean; + g914: null; + h914: undefined; + i914: bigint; + j914: symbol; +} + +type PartialBig914 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten914 = T extends Array ? Flatten914 : T; +type Nested914 = number[][][][][][][][][][]; +type Flat914 = Flatten914; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly914 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly914 : T[K]; +}; +type DeepRequired914 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired914 : T[K]; +}; +type FR914 = DeepReadonly914>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion914 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha914 = Extract; +type ExcludeZulu914 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA914 { width: number; height: number; depth: number } +interface ShapeB914 { color: string; opacity: number; blend: string } +interface ShapeC914 { x: number; y: number; z: number; w: number } +interface ShapeD914 { label: string; title: string; summary: string } + +type Combined914 = ShapeA914 & ShapeB914 & ShapeC914 & ShapeD914; +type OptionalAll914 = { [K in keyof Combined914]?: Combined914[K] }; +type RequiredAll914 = { [K in keyof Combined914]-?: Combined914[K] }; +type ReadonlyAll914 = { readonly [K in keyof Combined914]: Combined914[K] }; +type NullableAll914 = { [K in keyof Combined914]: Combined914[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString914 = T extends string ? true : false; +type IsNumber914 = T extends number ? true : false; +type TypeName914 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames914 = { + [K in keyof BigRecord914]: TypeName914; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb914 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource914 = "user" | "post" | "comment" | "tag" | "category"; +type Action914 = `${Verb914}_${Resource914}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise914 = T extends Promise ? UnwrapPromise914 : T; +type UnwrapArray914 = T extends (infer U)[] ? UnwrapArray914 : T; +type Head914 = T extends [infer H, ...infer _] ? H : never; +type Tail914 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation914 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation914>] + : never; + +type SmallUnion914 = "a" | "b" | "c" | "d"; +type AllPerms914 = Permutation914; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig914, + Flat914, + FR914, + BigUnion914, + ExtractAlpha914, + ExcludeZulu914, + OptionalAll914, + RequiredAll914, + ReadonlyAll914, + NullableAll914, + TypeNames914, + Action914, + AllPerms914, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts new file mode 100644 index 00000000..77130383 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-15 (seed 915) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord915 { + a915: { x: number; y: string; z: boolean }; + b915: { p: string[]; q: Record }; + c915: { nested: { deep: { deeper: { deepest: string } } } }; + d915: number; + e915: string; + f915: boolean; + g915: null; + h915: undefined; + i915: bigint; + j915: symbol; +} + +type PartialBig915 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten915 = T extends Array ? Flatten915 : T; +type Nested915 = number[][][][][][][][][][]; +type Flat915 = Flatten915; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly915 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly915 : T[K]; +}; +type DeepRequired915 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired915 : T[K]; +}; +type FR915 = DeepReadonly915>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion915 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha915 = Extract; +type ExcludeZulu915 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA915 { width: number; height: number; depth: number } +interface ShapeB915 { color: string; opacity: number; blend: string } +interface ShapeC915 { x: number; y: number; z: number; w: number } +interface ShapeD915 { label: string; title: string; summary: string } + +type Combined915 = ShapeA915 & ShapeB915 & ShapeC915 & ShapeD915; +type OptionalAll915 = { [K in keyof Combined915]?: Combined915[K] }; +type RequiredAll915 = { [K in keyof Combined915]-?: Combined915[K] }; +type ReadonlyAll915 = { readonly [K in keyof Combined915]: Combined915[K] }; +type NullableAll915 = { [K in keyof Combined915]: Combined915[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString915 = T extends string ? true : false; +type IsNumber915 = T extends number ? true : false; +type TypeName915 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames915 = { + [K in keyof BigRecord915]: TypeName915; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb915 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource915 = "user" | "post" | "comment" | "tag" | "category"; +type Action915 = `${Verb915}_${Resource915}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise915 = T extends Promise ? UnwrapPromise915 : T; +type UnwrapArray915 = T extends (infer U)[] ? UnwrapArray915 : T; +type Head915 = T extends [infer H, ...infer _] ? H : never; +type Tail915 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation915 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation915>] + : never; + +type SmallUnion915 = "a" | "b" | "c" | "d"; +type AllPerms915 = Permutation915; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig915, + Flat915, + FR915, + BigUnion915, + ExtractAlpha915, + ExcludeZulu915, + OptionalAll915, + RequiredAll915, + ReadonlyAll915, + NullableAll915, + TypeNames915, + Action915, + AllPerms915, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts new file mode 100644 index 00000000..dfc27793 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-16 (seed 916) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord916 { + a916: { x: number; y: string; z: boolean }; + b916: { p: string[]; q: Record }; + c916: { nested: { deep: { deeper: { deepest: string } } } }; + d916: number; + e916: string; + f916: boolean; + g916: null; + h916: undefined; + i916: bigint; + j916: symbol; +} + +type PartialBig916 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten916 = T extends Array ? Flatten916 : T; +type Nested916 = number[][][][][][][][][][]; +type Flat916 = Flatten916; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly916 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly916 : T[K]; +}; +type DeepRequired916 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired916 : T[K]; +}; +type FR916 = DeepReadonly916>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion916 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha916 = Extract; +type ExcludeZulu916 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA916 { width: number; height: number; depth: number } +interface ShapeB916 { color: string; opacity: number; blend: string } +interface ShapeC916 { x: number; y: number; z: number; w: number } +interface ShapeD916 { label: string; title: string; summary: string } + +type Combined916 = ShapeA916 & ShapeB916 & ShapeC916 & ShapeD916; +type OptionalAll916 = { [K in keyof Combined916]?: Combined916[K] }; +type RequiredAll916 = { [K in keyof Combined916]-?: Combined916[K] }; +type ReadonlyAll916 = { readonly [K in keyof Combined916]: Combined916[K] }; +type NullableAll916 = { [K in keyof Combined916]: Combined916[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString916 = T extends string ? true : false; +type IsNumber916 = T extends number ? true : false; +type TypeName916 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames916 = { + [K in keyof BigRecord916]: TypeName916; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb916 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource916 = "user" | "post" | "comment" | "tag" | "category"; +type Action916 = `${Verb916}_${Resource916}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise916 = T extends Promise ? UnwrapPromise916 : T; +type UnwrapArray916 = T extends (infer U)[] ? UnwrapArray916 : T; +type Head916 = T extends [infer H, ...infer _] ? H : never; +type Tail916 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation916 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation916>] + : never; + +type SmallUnion916 = "a" | "b" | "c" | "d"; +type AllPerms916 = Permutation916; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig916, + Flat916, + FR916, + BigUnion916, + ExtractAlpha916, + ExcludeZulu916, + OptionalAll916, + RequiredAll916, + ReadonlyAll916, + NullableAll916, + TypeNames916, + Action916, + AllPerms916, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts new file mode 100644 index 00000000..a0d83e4c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-17 (seed 917) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord917 { + a917: { x: number; y: string; z: boolean }; + b917: { p: string[]; q: Record }; + c917: { nested: { deep: { deeper: { deepest: string } } } }; + d917: number; + e917: string; + f917: boolean; + g917: null; + h917: undefined; + i917: bigint; + j917: symbol; +} + +type PartialBig917 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten917 = T extends Array ? Flatten917 : T; +type Nested917 = number[][][][][][][][][][]; +type Flat917 = Flatten917; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly917 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly917 : T[K]; +}; +type DeepRequired917 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired917 : T[K]; +}; +type FR917 = DeepReadonly917>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion917 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha917 = Extract; +type ExcludeZulu917 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA917 { width: number; height: number; depth: number } +interface ShapeB917 { color: string; opacity: number; blend: string } +interface ShapeC917 { x: number; y: number; z: number; w: number } +interface ShapeD917 { label: string; title: string; summary: string } + +type Combined917 = ShapeA917 & ShapeB917 & ShapeC917 & ShapeD917; +type OptionalAll917 = { [K in keyof Combined917]?: Combined917[K] }; +type RequiredAll917 = { [K in keyof Combined917]-?: Combined917[K] }; +type ReadonlyAll917 = { readonly [K in keyof Combined917]: Combined917[K] }; +type NullableAll917 = { [K in keyof Combined917]: Combined917[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString917 = T extends string ? true : false; +type IsNumber917 = T extends number ? true : false; +type TypeName917 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames917 = { + [K in keyof BigRecord917]: TypeName917; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb917 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource917 = "user" | "post" | "comment" | "tag" | "category"; +type Action917 = `${Verb917}_${Resource917}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise917 = T extends Promise ? UnwrapPromise917 : T; +type UnwrapArray917 = T extends (infer U)[] ? UnwrapArray917 : T; +type Head917 = T extends [infer H, ...infer _] ? H : never; +type Tail917 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation917 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation917>] + : never; + +type SmallUnion917 = "a" | "b" | "c" | "d"; +type AllPerms917 = Permutation917; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig917, + Flat917, + FR917, + BigUnion917, + ExtractAlpha917, + ExcludeZulu917, + OptionalAll917, + RequiredAll917, + ReadonlyAll917, + NullableAll917, + TypeNames917, + Action917, + AllPerms917, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts new file mode 100644 index 00000000..10551547 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-18 (seed 918) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord918 { + a918: { x: number; y: string; z: boolean }; + b918: { p: string[]; q: Record }; + c918: { nested: { deep: { deeper: { deepest: string } } } }; + d918: number; + e918: string; + f918: boolean; + g918: null; + h918: undefined; + i918: bigint; + j918: symbol; +} + +type PartialBig918 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten918 = T extends Array ? Flatten918 : T; +type Nested918 = number[][][][][][][][][][]; +type Flat918 = Flatten918; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly918 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly918 : T[K]; +}; +type DeepRequired918 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired918 : T[K]; +}; +type FR918 = DeepReadonly918>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion918 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha918 = Extract; +type ExcludeZulu918 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA918 { width: number; height: number; depth: number } +interface ShapeB918 { color: string; opacity: number; blend: string } +interface ShapeC918 { x: number; y: number; z: number; w: number } +interface ShapeD918 { label: string; title: string; summary: string } + +type Combined918 = ShapeA918 & ShapeB918 & ShapeC918 & ShapeD918; +type OptionalAll918 = { [K in keyof Combined918]?: Combined918[K] }; +type RequiredAll918 = { [K in keyof Combined918]-?: Combined918[K] }; +type ReadonlyAll918 = { readonly [K in keyof Combined918]: Combined918[K] }; +type NullableAll918 = { [K in keyof Combined918]: Combined918[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString918 = T extends string ? true : false; +type IsNumber918 = T extends number ? true : false; +type TypeName918 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames918 = { + [K in keyof BigRecord918]: TypeName918; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb918 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource918 = "user" | "post" | "comment" | "tag" | "category"; +type Action918 = `${Verb918}_${Resource918}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise918 = T extends Promise ? UnwrapPromise918 : T; +type UnwrapArray918 = T extends (infer U)[] ? UnwrapArray918 : T; +type Head918 = T extends [infer H, ...infer _] ? H : never; +type Tail918 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation918 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation918>] + : never; + +type SmallUnion918 = "a" | "b" | "c" | "d"; +type AllPerms918 = Permutation918; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig918, + Flat918, + FR918, + BigUnion918, + ExtractAlpha918, + ExcludeZulu918, + OptionalAll918, + RequiredAll918, + ReadonlyAll918, + NullableAll918, + TypeNames918, + Action918, + AllPerms918, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts new file mode 100644 index 00000000..f2c0ae84 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-19 (seed 919) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord919 { + a919: { x: number; y: string; z: boolean }; + b919: { p: string[]; q: Record }; + c919: { nested: { deep: { deeper: { deepest: string } } } }; + d919: number; + e919: string; + f919: boolean; + g919: null; + h919: undefined; + i919: bigint; + j919: symbol; +} + +type PartialBig919 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten919 = T extends Array ? Flatten919 : T; +type Nested919 = number[][][][][][][][][][]; +type Flat919 = Flatten919; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly919 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly919 : T[K]; +}; +type DeepRequired919 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired919 : T[K]; +}; +type FR919 = DeepReadonly919>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion919 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha919 = Extract; +type ExcludeZulu919 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA919 { width: number; height: number; depth: number } +interface ShapeB919 { color: string; opacity: number; blend: string } +interface ShapeC919 { x: number; y: number; z: number; w: number } +interface ShapeD919 { label: string; title: string; summary: string } + +type Combined919 = ShapeA919 & ShapeB919 & ShapeC919 & ShapeD919; +type OptionalAll919 = { [K in keyof Combined919]?: Combined919[K] }; +type RequiredAll919 = { [K in keyof Combined919]-?: Combined919[K] }; +type ReadonlyAll919 = { readonly [K in keyof Combined919]: Combined919[K] }; +type NullableAll919 = { [K in keyof Combined919]: Combined919[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString919 = T extends string ? true : false; +type IsNumber919 = T extends number ? true : false; +type TypeName919 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames919 = { + [K in keyof BigRecord919]: TypeName919; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb919 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource919 = "user" | "post" | "comment" | "tag" | "category"; +type Action919 = `${Verb919}_${Resource919}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise919 = T extends Promise ? UnwrapPromise919 : T; +type UnwrapArray919 = T extends (infer U)[] ? UnwrapArray919 : T; +type Head919 = T extends [infer H, ...infer _] ? H : never; +type Tail919 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation919 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation919>] + : never; + +type SmallUnion919 = "a" | "b" | "c" | "d"; +type AllPerms919 = Permutation919; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig919, + Flat919, + FR919, + BigUnion919, + ExtractAlpha919, + ExcludeZulu919, + OptionalAll919, + RequiredAll919, + ReadonlyAll919, + NullableAll919, + TypeNames919, + Action919, + AllPerms919, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts new file mode 100644 index 00000000..b2f6c502 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-20 (seed 920) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord920 { + a920: { x: number; y: string; z: boolean }; + b920: { p: string[]; q: Record }; + c920: { nested: { deep: { deeper: { deepest: string } } } }; + d920: number; + e920: string; + f920: boolean; + g920: null; + h920: undefined; + i920: bigint; + j920: symbol; +} + +type PartialBig920 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten920 = T extends Array ? Flatten920 : T; +type Nested920 = number[][][][][][][][][][]; +type Flat920 = Flatten920; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly920 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly920 : T[K]; +}; +type DeepRequired920 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired920 : T[K]; +}; +type FR920 = DeepReadonly920>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion920 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha920 = Extract; +type ExcludeZulu920 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA920 { width: number; height: number; depth: number } +interface ShapeB920 { color: string; opacity: number; blend: string } +interface ShapeC920 { x: number; y: number; z: number; w: number } +interface ShapeD920 { label: string; title: string; summary: string } + +type Combined920 = ShapeA920 & ShapeB920 & ShapeC920 & ShapeD920; +type OptionalAll920 = { [K in keyof Combined920]?: Combined920[K] }; +type RequiredAll920 = { [K in keyof Combined920]-?: Combined920[K] }; +type ReadonlyAll920 = { readonly [K in keyof Combined920]: Combined920[K] }; +type NullableAll920 = { [K in keyof Combined920]: Combined920[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString920 = T extends string ? true : false; +type IsNumber920 = T extends number ? true : false; +type TypeName920 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames920 = { + [K in keyof BigRecord920]: TypeName920; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb920 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource920 = "user" | "post" | "comment" | "tag" | "category"; +type Action920 = `${Verb920}_${Resource920}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise920 = T extends Promise ? UnwrapPromise920 : T; +type UnwrapArray920 = T extends (infer U)[] ? UnwrapArray920 : T; +type Head920 = T extends [infer H, ...infer _] ? H : never; +type Tail920 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation920 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation920>] + : never; + +type SmallUnion920 = "a" | "b" | "c" | "d"; +type AllPerms920 = Permutation920; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig920, + Flat920, + FR920, + BigUnion920, + ExtractAlpha920, + ExcludeZulu920, + OptionalAll920, + RequiredAll920, + ReadonlyAll920, + NullableAll920, + TypeNames920, + Action920, + AllPerms920, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts new file mode 100644 index 00000000..c9176d9d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-21 (seed 921) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord921 { + a921: { x: number; y: string; z: boolean }; + b921: { p: string[]; q: Record }; + c921: { nested: { deep: { deeper: { deepest: string } } } }; + d921: number; + e921: string; + f921: boolean; + g921: null; + h921: undefined; + i921: bigint; + j921: symbol; +} + +type PartialBig921 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten921 = T extends Array ? Flatten921 : T; +type Nested921 = number[][][][][][][][][][]; +type Flat921 = Flatten921; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly921 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly921 : T[K]; +}; +type DeepRequired921 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired921 : T[K]; +}; +type FR921 = DeepReadonly921>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion921 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha921 = Extract; +type ExcludeZulu921 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA921 { width: number; height: number; depth: number } +interface ShapeB921 { color: string; opacity: number; blend: string } +interface ShapeC921 { x: number; y: number; z: number; w: number } +interface ShapeD921 { label: string; title: string; summary: string } + +type Combined921 = ShapeA921 & ShapeB921 & ShapeC921 & ShapeD921; +type OptionalAll921 = { [K in keyof Combined921]?: Combined921[K] }; +type RequiredAll921 = { [K in keyof Combined921]-?: Combined921[K] }; +type ReadonlyAll921 = { readonly [K in keyof Combined921]: Combined921[K] }; +type NullableAll921 = { [K in keyof Combined921]: Combined921[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString921 = T extends string ? true : false; +type IsNumber921 = T extends number ? true : false; +type TypeName921 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames921 = { + [K in keyof BigRecord921]: TypeName921; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb921 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource921 = "user" | "post" | "comment" | "tag" | "category"; +type Action921 = `${Verb921}_${Resource921}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise921 = T extends Promise ? UnwrapPromise921 : T; +type UnwrapArray921 = T extends (infer U)[] ? UnwrapArray921 : T; +type Head921 = T extends [infer H, ...infer _] ? H : never; +type Tail921 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation921 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation921>] + : never; + +type SmallUnion921 = "a" | "b" | "c" | "d"; +type AllPerms921 = Permutation921; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig921, + Flat921, + FR921, + BigUnion921, + ExtractAlpha921, + ExcludeZulu921, + OptionalAll921, + RequiredAll921, + ReadonlyAll921, + NullableAll921, + TypeNames921, + Action921, + AllPerms921, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts new file mode 100644 index 00000000..86c155b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-22 (seed 922) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord922 { + a922: { x: number; y: string; z: boolean }; + b922: { p: string[]; q: Record }; + c922: { nested: { deep: { deeper: { deepest: string } } } }; + d922: number; + e922: string; + f922: boolean; + g922: null; + h922: undefined; + i922: bigint; + j922: symbol; +} + +type PartialBig922 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten922 = T extends Array ? Flatten922 : T; +type Nested922 = number[][][][][][][][][][]; +type Flat922 = Flatten922; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly922 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly922 : T[K]; +}; +type DeepRequired922 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired922 : T[K]; +}; +type FR922 = DeepReadonly922>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion922 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha922 = Extract; +type ExcludeZulu922 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA922 { width: number; height: number; depth: number } +interface ShapeB922 { color: string; opacity: number; blend: string } +interface ShapeC922 { x: number; y: number; z: number; w: number } +interface ShapeD922 { label: string; title: string; summary: string } + +type Combined922 = ShapeA922 & ShapeB922 & ShapeC922 & ShapeD922; +type OptionalAll922 = { [K in keyof Combined922]?: Combined922[K] }; +type RequiredAll922 = { [K in keyof Combined922]-?: Combined922[K] }; +type ReadonlyAll922 = { readonly [K in keyof Combined922]: Combined922[K] }; +type NullableAll922 = { [K in keyof Combined922]: Combined922[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString922 = T extends string ? true : false; +type IsNumber922 = T extends number ? true : false; +type TypeName922 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames922 = { + [K in keyof BigRecord922]: TypeName922; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb922 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource922 = "user" | "post" | "comment" | "tag" | "category"; +type Action922 = `${Verb922}_${Resource922}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise922 = T extends Promise ? UnwrapPromise922 : T; +type UnwrapArray922 = T extends (infer U)[] ? UnwrapArray922 : T; +type Head922 = T extends [infer H, ...infer _] ? H : never; +type Tail922 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation922 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation922>] + : never; + +type SmallUnion922 = "a" | "b" | "c" | "d"; +type AllPerms922 = Permutation922; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig922, + Flat922, + FR922, + BigUnion922, + ExtractAlpha922, + ExcludeZulu922, + OptionalAll922, + RequiredAll922, + ReadonlyAll922, + NullableAll922, + TypeNames922, + Action922, + AllPerms922, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts new file mode 100644 index 00000000..51bb2181 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-23 (seed 923) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord923 { + a923: { x: number; y: string; z: boolean }; + b923: { p: string[]; q: Record }; + c923: { nested: { deep: { deeper: { deepest: string } } } }; + d923: number; + e923: string; + f923: boolean; + g923: null; + h923: undefined; + i923: bigint; + j923: symbol; +} + +type PartialBig923 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten923 = T extends Array ? Flatten923 : T; +type Nested923 = number[][][][][][][][][][]; +type Flat923 = Flatten923; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly923 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly923 : T[K]; +}; +type DeepRequired923 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired923 : T[K]; +}; +type FR923 = DeepReadonly923>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion923 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha923 = Extract; +type ExcludeZulu923 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA923 { width: number; height: number; depth: number } +interface ShapeB923 { color: string; opacity: number; blend: string } +interface ShapeC923 { x: number; y: number; z: number; w: number } +interface ShapeD923 { label: string; title: string; summary: string } + +type Combined923 = ShapeA923 & ShapeB923 & ShapeC923 & ShapeD923; +type OptionalAll923 = { [K in keyof Combined923]?: Combined923[K] }; +type RequiredAll923 = { [K in keyof Combined923]-?: Combined923[K] }; +type ReadonlyAll923 = { readonly [K in keyof Combined923]: Combined923[K] }; +type NullableAll923 = { [K in keyof Combined923]: Combined923[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString923 = T extends string ? true : false; +type IsNumber923 = T extends number ? true : false; +type TypeName923 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames923 = { + [K in keyof BigRecord923]: TypeName923; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb923 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource923 = "user" | "post" | "comment" | "tag" | "category"; +type Action923 = `${Verb923}_${Resource923}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise923 = T extends Promise ? UnwrapPromise923 : T; +type UnwrapArray923 = T extends (infer U)[] ? UnwrapArray923 : T; +type Head923 = T extends [infer H, ...infer _] ? H : never; +type Tail923 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation923 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation923>] + : never; + +type SmallUnion923 = "a" | "b" | "c" | "d"; +type AllPerms923 = Permutation923; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig923, + Flat923, + FR923, + BigUnion923, + ExtractAlpha923, + ExcludeZulu923, + OptionalAll923, + RequiredAll923, + ReadonlyAll923, + NullableAll923, + TypeNames923, + Action923, + AllPerms923, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts new file mode 100644 index 00000000..729f7fd6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-24 (seed 924) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord924 { + a924: { x: number; y: string; z: boolean }; + b924: { p: string[]; q: Record }; + c924: { nested: { deep: { deeper: { deepest: string } } } }; + d924: number; + e924: string; + f924: boolean; + g924: null; + h924: undefined; + i924: bigint; + j924: symbol; +} + +type PartialBig924 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten924 = T extends Array ? Flatten924 : T; +type Nested924 = number[][][][][][][][][][]; +type Flat924 = Flatten924; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly924 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly924 : T[K]; +}; +type DeepRequired924 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired924 : T[K]; +}; +type FR924 = DeepReadonly924>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion924 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha924 = Extract; +type ExcludeZulu924 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA924 { width: number; height: number; depth: number } +interface ShapeB924 { color: string; opacity: number; blend: string } +interface ShapeC924 { x: number; y: number; z: number; w: number } +interface ShapeD924 { label: string; title: string; summary: string } + +type Combined924 = ShapeA924 & ShapeB924 & ShapeC924 & ShapeD924; +type OptionalAll924 = { [K in keyof Combined924]?: Combined924[K] }; +type RequiredAll924 = { [K in keyof Combined924]-?: Combined924[K] }; +type ReadonlyAll924 = { readonly [K in keyof Combined924]: Combined924[K] }; +type NullableAll924 = { [K in keyof Combined924]: Combined924[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString924 = T extends string ? true : false; +type IsNumber924 = T extends number ? true : false; +type TypeName924 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames924 = { + [K in keyof BigRecord924]: TypeName924; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb924 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource924 = "user" | "post" | "comment" | "tag" | "category"; +type Action924 = `${Verb924}_${Resource924}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise924 = T extends Promise ? UnwrapPromise924 : T; +type UnwrapArray924 = T extends (infer U)[] ? UnwrapArray924 : T; +type Head924 = T extends [infer H, ...infer _] ? H : never; +type Tail924 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation924 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation924>] + : never; + +type SmallUnion924 = "a" | "b" | "c" | "d"; +type AllPerms924 = Permutation924; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig924, + Flat924, + FR924, + BigUnion924, + ExtractAlpha924, + ExcludeZulu924, + OptionalAll924, + RequiredAll924, + ReadonlyAll924, + NullableAll924, + TypeNames924, + Action924, + AllPerms924, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts new file mode 100644 index 00000000..1eb3b4de --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-25 (seed 925) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord925 { + a925: { x: number; y: string; z: boolean }; + b925: { p: string[]; q: Record }; + c925: { nested: { deep: { deeper: { deepest: string } } } }; + d925: number; + e925: string; + f925: boolean; + g925: null; + h925: undefined; + i925: bigint; + j925: symbol; +} + +type PartialBig925 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten925 = T extends Array ? Flatten925 : T; +type Nested925 = number[][][][][][][][][][]; +type Flat925 = Flatten925; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly925 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly925 : T[K]; +}; +type DeepRequired925 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired925 : T[K]; +}; +type FR925 = DeepReadonly925>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion925 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha925 = Extract; +type ExcludeZulu925 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA925 { width: number; height: number; depth: number } +interface ShapeB925 { color: string; opacity: number; blend: string } +interface ShapeC925 { x: number; y: number; z: number; w: number } +interface ShapeD925 { label: string; title: string; summary: string } + +type Combined925 = ShapeA925 & ShapeB925 & ShapeC925 & ShapeD925; +type OptionalAll925 = { [K in keyof Combined925]?: Combined925[K] }; +type RequiredAll925 = { [K in keyof Combined925]-?: Combined925[K] }; +type ReadonlyAll925 = { readonly [K in keyof Combined925]: Combined925[K] }; +type NullableAll925 = { [K in keyof Combined925]: Combined925[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString925 = T extends string ? true : false; +type IsNumber925 = T extends number ? true : false; +type TypeName925 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames925 = { + [K in keyof BigRecord925]: TypeName925; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb925 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource925 = "user" | "post" | "comment" | "tag" | "category"; +type Action925 = `${Verb925}_${Resource925}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise925 = T extends Promise ? UnwrapPromise925 : T; +type UnwrapArray925 = T extends (infer U)[] ? UnwrapArray925 : T; +type Head925 = T extends [infer H, ...infer _] ? H : never; +type Tail925 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation925 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation925>] + : never; + +type SmallUnion925 = "a" | "b" | "c" | "d"; +type AllPerms925 = Permutation925; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig925, + Flat925, + FR925, + BigUnion925, + ExtractAlpha925, + ExcludeZulu925, + OptionalAll925, + RequiredAll925, + ReadonlyAll925, + NullableAll925, + TypeNames925, + Action925, + AllPerms925, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts new file mode 100644 index 00000000..709e4533 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-26 (seed 926) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord926 { + a926: { x: number; y: string; z: boolean }; + b926: { p: string[]; q: Record }; + c926: { nested: { deep: { deeper: { deepest: string } } } }; + d926: number; + e926: string; + f926: boolean; + g926: null; + h926: undefined; + i926: bigint; + j926: symbol; +} + +type PartialBig926 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten926 = T extends Array ? Flatten926 : T; +type Nested926 = number[][][][][][][][][][]; +type Flat926 = Flatten926; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly926 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly926 : T[K]; +}; +type DeepRequired926 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired926 : T[K]; +}; +type FR926 = DeepReadonly926>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion926 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha926 = Extract; +type ExcludeZulu926 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA926 { width: number; height: number; depth: number } +interface ShapeB926 { color: string; opacity: number; blend: string } +interface ShapeC926 { x: number; y: number; z: number; w: number } +interface ShapeD926 { label: string; title: string; summary: string } + +type Combined926 = ShapeA926 & ShapeB926 & ShapeC926 & ShapeD926; +type OptionalAll926 = { [K in keyof Combined926]?: Combined926[K] }; +type RequiredAll926 = { [K in keyof Combined926]-?: Combined926[K] }; +type ReadonlyAll926 = { readonly [K in keyof Combined926]: Combined926[K] }; +type NullableAll926 = { [K in keyof Combined926]: Combined926[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString926 = T extends string ? true : false; +type IsNumber926 = T extends number ? true : false; +type TypeName926 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames926 = { + [K in keyof BigRecord926]: TypeName926; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb926 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource926 = "user" | "post" | "comment" | "tag" | "category"; +type Action926 = `${Verb926}_${Resource926}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise926 = T extends Promise ? UnwrapPromise926 : T; +type UnwrapArray926 = T extends (infer U)[] ? UnwrapArray926 : T; +type Head926 = T extends [infer H, ...infer _] ? H : never; +type Tail926 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation926 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation926>] + : never; + +type SmallUnion926 = "a" | "b" | "c" | "d"; +type AllPerms926 = Permutation926; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig926, + Flat926, + FR926, + BigUnion926, + ExtractAlpha926, + ExcludeZulu926, + OptionalAll926, + RequiredAll926, + ReadonlyAll926, + NullableAll926, + TypeNames926, + Action926, + AllPerms926, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts new file mode 100644 index 00000000..276f9d39 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-27 (seed 927) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord927 { + a927: { x: number; y: string; z: boolean }; + b927: { p: string[]; q: Record }; + c927: { nested: { deep: { deeper: { deepest: string } } } }; + d927: number; + e927: string; + f927: boolean; + g927: null; + h927: undefined; + i927: bigint; + j927: symbol; +} + +type PartialBig927 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten927 = T extends Array ? Flatten927 : T; +type Nested927 = number[][][][][][][][][][]; +type Flat927 = Flatten927; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly927 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly927 : T[K]; +}; +type DeepRequired927 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired927 : T[K]; +}; +type FR927 = DeepReadonly927>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion927 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha927 = Extract; +type ExcludeZulu927 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA927 { width: number; height: number; depth: number } +interface ShapeB927 { color: string; opacity: number; blend: string } +interface ShapeC927 { x: number; y: number; z: number; w: number } +interface ShapeD927 { label: string; title: string; summary: string } + +type Combined927 = ShapeA927 & ShapeB927 & ShapeC927 & ShapeD927; +type OptionalAll927 = { [K in keyof Combined927]?: Combined927[K] }; +type RequiredAll927 = { [K in keyof Combined927]-?: Combined927[K] }; +type ReadonlyAll927 = { readonly [K in keyof Combined927]: Combined927[K] }; +type NullableAll927 = { [K in keyof Combined927]: Combined927[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString927 = T extends string ? true : false; +type IsNumber927 = T extends number ? true : false; +type TypeName927 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames927 = { + [K in keyof BigRecord927]: TypeName927; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb927 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource927 = "user" | "post" | "comment" | "tag" | "category"; +type Action927 = `${Verb927}_${Resource927}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise927 = T extends Promise ? UnwrapPromise927 : T; +type UnwrapArray927 = T extends (infer U)[] ? UnwrapArray927 : T; +type Head927 = T extends [infer H, ...infer _] ? H : never; +type Tail927 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation927 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation927>] + : never; + +type SmallUnion927 = "a" | "b" | "c" | "d"; +type AllPerms927 = Permutation927; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig927, + Flat927, + FR927, + BigUnion927, + ExtractAlpha927, + ExcludeZulu927, + OptionalAll927, + RequiredAll927, + ReadonlyAll927, + NullableAll927, + TypeNames927, + Action927, + AllPerms927, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts new file mode 100644 index 00000000..bd81f2ec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-28 (seed 928) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord928 { + a928: { x: number; y: string; z: boolean }; + b928: { p: string[]; q: Record }; + c928: { nested: { deep: { deeper: { deepest: string } } } }; + d928: number; + e928: string; + f928: boolean; + g928: null; + h928: undefined; + i928: bigint; + j928: symbol; +} + +type PartialBig928 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten928 = T extends Array ? Flatten928 : T; +type Nested928 = number[][][][][][][][][][]; +type Flat928 = Flatten928; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly928 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly928 : T[K]; +}; +type DeepRequired928 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired928 : T[K]; +}; +type FR928 = DeepReadonly928>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion928 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha928 = Extract; +type ExcludeZulu928 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA928 { width: number; height: number; depth: number } +interface ShapeB928 { color: string; opacity: number; blend: string } +interface ShapeC928 { x: number; y: number; z: number; w: number } +interface ShapeD928 { label: string; title: string; summary: string } + +type Combined928 = ShapeA928 & ShapeB928 & ShapeC928 & ShapeD928; +type OptionalAll928 = { [K in keyof Combined928]?: Combined928[K] }; +type RequiredAll928 = { [K in keyof Combined928]-?: Combined928[K] }; +type ReadonlyAll928 = { readonly [K in keyof Combined928]: Combined928[K] }; +type NullableAll928 = { [K in keyof Combined928]: Combined928[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString928 = T extends string ? true : false; +type IsNumber928 = T extends number ? true : false; +type TypeName928 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames928 = { + [K in keyof BigRecord928]: TypeName928; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb928 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource928 = "user" | "post" | "comment" | "tag" | "category"; +type Action928 = `${Verb928}_${Resource928}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise928 = T extends Promise ? UnwrapPromise928 : T; +type UnwrapArray928 = T extends (infer U)[] ? UnwrapArray928 : T; +type Head928 = T extends [infer H, ...infer _] ? H : never; +type Tail928 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation928 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation928>] + : never; + +type SmallUnion928 = "a" | "b" | "c" | "d"; +type AllPerms928 = Permutation928; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig928, + Flat928, + FR928, + BigUnion928, + ExtractAlpha928, + ExcludeZulu928, + OptionalAll928, + RequiredAll928, + ReadonlyAll928, + NullableAll928, + TypeNames928, + Action928, + AllPerms928, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts new file mode 100644 index 00000000..e828b801 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-29 (seed 929) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord929 { + a929: { x: number; y: string; z: boolean }; + b929: { p: string[]; q: Record }; + c929: { nested: { deep: { deeper: { deepest: string } } } }; + d929: number; + e929: string; + f929: boolean; + g929: null; + h929: undefined; + i929: bigint; + j929: symbol; +} + +type PartialBig929 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten929 = T extends Array ? Flatten929 : T; +type Nested929 = number[][][][][][][][][][]; +type Flat929 = Flatten929; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly929 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly929 : T[K]; +}; +type DeepRequired929 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired929 : T[K]; +}; +type FR929 = DeepReadonly929>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion929 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha929 = Extract; +type ExcludeZulu929 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA929 { width: number; height: number; depth: number } +interface ShapeB929 { color: string; opacity: number; blend: string } +interface ShapeC929 { x: number; y: number; z: number; w: number } +interface ShapeD929 { label: string; title: string; summary: string } + +type Combined929 = ShapeA929 & ShapeB929 & ShapeC929 & ShapeD929; +type OptionalAll929 = { [K in keyof Combined929]?: Combined929[K] }; +type RequiredAll929 = { [K in keyof Combined929]-?: Combined929[K] }; +type ReadonlyAll929 = { readonly [K in keyof Combined929]: Combined929[K] }; +type NullableAll929 = { [K in keyof Combined929]: Combined929[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString929 = T extends string ? true : false; +type IsNumber929 = T extends number ? true : false; +type TypeName929 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames929 = { + [K in keyof BigRecord929]: TypeName929; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb929 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource929 = "user" | "post" | "comment" | "tag" | "category"; +type Action929 = `${Verb929}_${Resource929}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise929 = T extends Promise ? UnwrapPromise929 : T; +type UnwrapArray929 = T extends (infer U)[] ? UnwrapArray929 : T; +type Head929 = T extends [infer H, ...infer _] ? H : never; +type Tail929 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation929 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation929>] + : never; + +type SmallUnion929 = "a" | "b" | "c" | "d"; +type AllPerms929 = Permutation929; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig929, + Flat929, + FR929, + BigUnion929, + ExtractAlpha929, + ExcludeZulu929, + OptionalAll929, + RequiredAll929, + ReadonlyAll929, + NullableAll929, + TypeNames929, + Action929, + AllPerms929, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts new file mode 100644 index 00000000..b5490adb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-30 (seed 930) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord930 { + a930: { x: number; y: string; z: boolean }; + b930: { p: string[]; q: Record }; + c930: { nested: { deep: { deeper: { deepest: string } } } }; + d930: number; + e930: string; + f930: boolean; + g930: null; + h930: undefined; + i930: bigint; + j930: symbol; +} + +type PartialBig930 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten930 = T extends Array ? Flatten930 : T; +type Nested930 = number[][][][][][][][][][]; +type Flat930 = Flatten930; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly930 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly930 : T[K]; +}; +type DeepRequired930 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired930 : T[K]; +}; +type FR930 = DeepReadonly930>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion930 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha930 = Extract; +type ExcludeZulu930 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA930 { width: number; height: number; depth: number } +interface ShapeB930 { color: string; opacity: number; blend: string } +interface ShapeC930 { x: number; y: number; z: number; w: number } +interface ShapeD930 { label: string; title: string; summary: string } + +type Combined930 = ShapeA930 & ShapeB930 & ShapeC930 & ShapeD930; +type OptionalAll930 = { [K in keyof Combined930]?: Combined930[K] }; +type RequiredAll930 = { [K in keyof Combined930]-?: Combined930[K] }; +type ReadonlyAll930 = { readonly [K in keyof Combined930]: Combined930[K] }; +type NullableAll930 = { [K in keyof Combined930]: Combined930[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString930 = T extends string ? true : false; +type IsNumber930 = T extends number ? true : false; +type TypeName930 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames930 = { + [K in keyof BigRecord930]: TypeName930; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb930 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource930 = "user" | "post" | "comment" | "tag" | "category"; +type Action930 = `${Verb930}_${Resource930}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise930 = T extends Promise ? UnwrapPromise930 : T; +type UnwrapArray930 = T extends (infer U)[] ? UnwrapArray930 : T; +type Head930 = T extends [infer H, ...infer _] ? H : never; +type Tail930 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation930 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation930>] + : never; + +type SmallUnion930 = "a" | "b" | "c" | "d"; +type AllPerms930 = Permutation930; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig930, + Flat930, + FR930, + BigUnion930, + ExtractAlpha930, + ExcludeZulu930, + OptionalAll930, + RequiredAll930, + ReadonlyAll930, + NullableAll930, + TypeNames930, + Action930, + AllPerms930, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts new file mode 100644 index 00000000..269b7a24 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-31 (seed 931) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord931 { + a931: { x: number; y: string; z: boolean }; + b931: { p: string[]; q: Record }; + c931: { nested: { deep: { deeper: { deepest: string } } } }; + d931: number; + e931: string; + f931: boolean; + g931: null; + h931: undefined; + i931: bigint; + j931: symbol; +} + +type PartialBig931 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten931 = T extends Array ? Flatten931 : T; +type Nested931 = number[][][][][][][][][][]; +type Flat931 = Flatten931; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly931 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly931 : T[K]; +}; +type DeepRequired931 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired931 : T[K]; +}; +type FR931 = DeepReadonly931>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion931 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha931 = Extract; +type ExcludeZulu931 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA931 { width: number; height: number; depth: number } +interface ShapeB931 { color: string; opacity: number; blend: string } +interface ShapeC931 { x: number; y: number; z: number; w: number } +interface ShapeD931 { label: string; title: string; summary: string } + +type Combined931 = ShapeA931 & ShapeB931 & ShapeC931 & ShapeD931; +type OptionalAll931 = { [K in keyof Combined931]?: Combined931[K] }; +type RequiredAll931 = { [K in keyof Combined931]-?: Combined931[K] }; +type ReadonlyAll931 = { readonly [K in keyof Combined931]: Combined931[K] }; +type NullableAll931 = { [K in keyof Combined931]: Combined931[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString931 = T extends string ? true : false; +type IsNumber931 = T extends number ? true : false; +type TypeName931 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames931 = { + [K in keyof BigRecord931]: TypeName931; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb931 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource931 = "user" | "post" | "comment" | "tag" | "category"; +type Action931 = `${Verb931}_${Resource931}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise931 = T extends Promise ? UnwrapPromise931 : T; +type UnwrapArray931 = T extends (infer U)[] ? UnwrapArray931 : T; +type Head931 = T extends [infer H, ...infer _] ? H : never; +type Tail931 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation931 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation931>] + : never; + +type SmallUnion931 = "a" | "b" | "c" | "d"; +type AllPerms931 = Permutation931; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig931, + Flat931, + FR931, + BigUnion931, + ExtractAlpha931, + ExcludeZulu931, + OptionalAll931, + RequiredAll931, + ReadonlyAll931, + NullableAll931, + TypeNames931, + Action931, + AllPerms931, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts new file mode 100644 index 00000000..21f9c856 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-32 (seed 932) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord932 { + a932: { x: number; y: string; z: boolean }; + b932: { p: string[]; q: Record }; + c932: { nested: { deep: { deeper: { deepest: string } } } }; + d932: number; + e932: string; + f932: boolean; + g932: null; + h932: undefined; + i932: bigint; + j932: symbol; +} + +type PartialBig932 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten932 = T extends Array ? Flatten932 : T; +type Nested932 = number[][][][][][][][][][]; +type Flat932 = Flatten932; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly932 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly932 : T[K]; +}; +type DeepRequired932 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired932 : T[K]; +}; +type FR932 = DeepReadonly932>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion932 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha932 = Extract; +type ExcludeZulu932 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA932 { width: number; height: number; depth: number } +interface ShapeB932 { color: string; opacity: number; blend: string } +interface ShapeC932 { x: number; y: number; z: number; w: number } +interface ShapeD932 { label: string; title: string; summary: string } + +type Combined932 = ShapeA932 & ShapeB932 & ShapeC932 & ShapeD932; +type OptionalAll932 = { [K in keyof Combined932]?: Combined932[K] }; +type RequiredAll932 = { [K in keyof Combined932]-?: Combined932[K] }; +type ReadonlyAll932 = { readonly [K in keyof Combined932]: Combined932[K] }; +type NullableAll932 = { [K in keyof Combined932]: Combined932[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString932 = T extends string ? true : false; +type IsNumber932 = T extends number ? true : false; +type TypeName932 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames932 = { + [K in keyof BigRecord932]: TypeName932; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb932 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource932 = "user" | "post" | "comment" | "tag" | "category"; +type Action932 = `${Verb932}_${Resource932}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise932 = T extends Promise ? UnwrapPromise932 : T; +type UnwrapArray932 = T extends (infer U)[] ? UnwrapArray932 : T; +type Head932 = T extends [infer H, ...infer _] ? H : never; +type Tail932 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation932 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation932>] + : never; + +type SmallUnion932 = "a" | "b" | "c" | "d"; +type AllPerms932 = Permutation932; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig932, + Flat932, + FR932, + BigUnion932, + ExtractAlpha932, + ExcludeZulu932, + OptionalAll932, + RequiredAll932, + ReadonlyAll932, + NullableAll932, + TypeNames932, + Action932, + AllPerms932, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts new file mode 100644 index 00000000..aebf93d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-33 (seed 933) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord933 { + a933: { x: number; y: string; z: boolean }; + b933: { p: string[]; q: Record }; + c933: { nested: { deep: { deeper: { deepest: string } } } }; + d933: number; + e933: string; + f933: boolean; + g933: null; + h933: undefined; + i933: bigint; + j933: symbol; +} + +type PartialBig933 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten933 = T extends Array ? Flatten933 : T; +type Nested933 = number[][][][][][][][][][]; +type Flat933 = Flatten933; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly933 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly933 : T[K]; +}; +type DeepRequired933 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired933 : T[K]; +}; +type FR933 = DeepReadonly933>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion933 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha933 = Extract; +type ExcludeZulu933 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA933 { width: number; height: number; depth: number } +interface ShapeB933 { color: string; opacity: number; blend: string } +interface ShapeC933 { x: number; y: number; z: number; w: number } +interface ShapeD933 { label: string; title: string; summary: string } + +type Combined933 = ShapeA933 & ShapeB933 & ShapeC933 & ShapeD933; +type OptionalAll933 = { [K in keyof Combined933]?: Combined933[K] }; +type RequiredAll933 = { [K in keyof Combined933]-?: Combined933[K] }; +type ReadonlyAll933 = { readonly [K in keyof Combined933]: Combined933[K] }; +type NullableAll933 = { [K in keyof Combined933]: Combined933[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString933 = T extends string ? true : false; +type IsNumber933 = T extends number ? true : false; +type TypeName933 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames933 = { + [K in keyof BigRecord933]: TypeName933; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb933 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource933 = "user" | "post" | "comment" | "tag" | "category"; +type Action933 = `${Verb933}_${Resource933}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise933 = T extends Promise ? UnwrapPromise933 : T; +type UnwrapArray933 = T extends (infer U)[] ? UnwrapArray933 : T; +type Head933 = T extends [infer H, ...infer _] ? H : never; +type Tail933 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation933 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation933>] + : never; + +type SmallUnion933 = "a" | "b" | "c" | "d"; +type AllPerms933 = Permutation933; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig933, + Flat933, + FR933, + BigUnion933, + ExtractAlpha933, + ExcludeZulu933, + OptionalAll933, + RequiredAll933, + ReadonlyAll933, + NullableAll933, + TypeNames933, + Action933, + AllPerms933, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts new file mode 100644 index 00000000..b845e2b6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-34 (seed 934) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord934 { + a934: { x: number; y: string; z: boolean }; + b934: { p: string[]; q: Record }; + c934: { nested: { deep: { deeper: { deepest: string } } } }; + d934: number; + e934: string; + f934: boolean; + g934: null; + h934: undefined; + i934: bigint; + j934: symbol; +} + +type PartialBig934 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten934 = T extends Array ? Flatten934 : T; +type Nested934 = number[][][][][][][][][][]; +type Flat934 = Flatten934; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly934 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly934 : T[K]; +}; +type DeepRequired934 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired934 : T[K]; +}; +type FR934 = DeepReadonly934>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion934 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha934 = Extract; +type ExcludeZulu934 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA934 { width: number; height: number; depth: number } +interface ShapeB934 { color: string; opacity: number; blend: string } +interface ShapeC934 { x: number; y: number; z: number; w: number } +interface ShapeD934 { label: string; title: string; summary: string } + +type Combined934 = ShapeA934 & ShapeB934 & ShapeC934 & ShapeD934; +type OptionalAll934 = { [K in keyof Combined934]?: Combined934[K] }; +type RequiredAll934 = { [K in keyof Combined934]-?: Combined934[K] }; +type ReadonlyAll934 = { readonly [K in keyof Combined934]: Combined934[K] }; +type NullableAll934 = { [K in keyof Combined934]: Combined934[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString934 = T extends string ? true : false; +type IsNumber934 = T extends number ? true : false; +type TypeName934 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames934 = { + [K in keyof BigRecord934]: TypeName934; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb934 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource934 = "user" | "post" | "comment" | "tag" | "category"; +type Action934 = `${Verb934}_${Resource934}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise934 = T extends Promise ? UnwrapPromise934 : T; +type UnwrapArray934 = T extends (infer U)[] ? UnwrapArray934 : T; +type Head934 = T extends [infer H, ...infer _] ? H : never; +type Tail934 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation934 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation934>] + : never; + +type SmallUnion934 = "a" | "b" | "c" | "d"; +type AllPerms934 = Permutation934; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig934, + Flat934, + FR934, + BigUnion934, + ExtractAlpha934, + ExcludeZulu934, + OptionalAll934, + RequiredAll934, + ReadonlyAll934, + NullableAll934, + TypeNames934, + Action934, + AllPerms934, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts new file mode 100644 index 00000000..b149f823 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-35 (seed 935) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord935 { + a935: { x: number; y: string; z: boolean }; + b935: { p: string[]; q: Record }; + c935: { nested: { deep: { deeper: { deepest: string } } } }; + d935: number; + e935: string; + f935: boolean; + g935: null; + h935: undefined; + i935: bigint; + j935: symbol; +} + +type PartialBig935 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten935 = T extends Array ? Flatten935 : T; +type Nested935 = number[][][][][][][][][][]; +type Flat935 = Flatten935; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly935 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly935 : T[K]; +}; +type DeepRequired935 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired935 : T[K]; +}; +type FR935 = DeepReadonly935>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion935 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha935 = Extract; +type ExcludeZulu935 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA935 { width: number; height: number; depth: number } +interface ShapeB935 { color: string; opacity: number; blend: string } +interface ShapeC935 { x: number; y: number; z: number; w: number } +interface ShapeD935 { label: string; title: string; summary: string } + +type Combined935 = ShapeA935 & ShapeB935 & ShapeC935 & ShapeD935; +type OptionalAll935 = { [K in keyof Combined935]?: Combined935[K] }; +type RequiredAll935 = { [K in keyof Combined935]-?: Combined935[K] }; +type ReadonlyAll935 = { readonly [K in keyof Combined935]: Combined935[K] }; +type NullableAll935 = { [K in keyof Combined935]: Combined935[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString935 = T extends string ? true : false; +type IsNumber935 = T extends number ? true : false; +type TypeName935 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames935 = { + [K in keyof BigRecord935]: TypeName935; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb935 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource935 = "user" | "post" | "comment" | "tag" | "category"; +type Action935 = `${Verb935}_${Resource935}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise935 = T extends Promise ? UnwrapPromise935 : T; +type UnwrapArray935 = T extends (infer U)[] ? UnwrapArray935 : T; +type Head935 = T extends [infer H, ...infer _] ? H : never; +type Tail935 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation935 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation935>] + : never; + +type SmallUnion935 = "a" | "b" | "c" | "d"; +type AllPerms935 = Permutation935; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig935, + Flat935, + FR935, + BigUnion935, + ExtractAlpha935, + ExcludeZulu935, + OptionalAll935, + RequiredAll935, + ReadonlyAll935, + NullableAll935, + TypeNames935, + Action935, + AllPerms935, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts new file mode 100644 index 00000000..f0e57fbb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-36 (seed 936) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord936 { + a936: { x: number; y: string; z: boolean }; + b936: { p: string[]; q: Record }; + c936: { nested: { deep: { deeper: { deepest: string } } } }; + d936: number; + e936: string; + f936: boolean; + g936: null; + h936: undefined; + i936: bigint; + j936: symbol; +} + +type PartialBig936 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten936 = T extends Array ? Flatten936 : T; +type Nested936 = number[][][][][][][][][][]; +type Flat936 = Flatten936; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly936 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly936 : T[K]; +}; +type DeepRequired936 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired936 : T[K]; +}; +type FR936 = DeepReadonly936>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion936 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha936 = Extract; +type ExcludeZulu936 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA936 { width: number; height: number; depth: number } +interface ShapeB936 { color: string; opacity: number; blend: string } +interface ShapeC936 { x: number; y: number; z: number; w: number } +interface ShapeD936 { label: string; title: string; summary: string } + +type Combined936 = ShapeA936 & ShapeB936 & ShapeC936 & ShapeD936; +type OptionalAll936 = { [K in keyof Combined936]?: Combined936[K] }; +type RequiredAll936 = { [K in keyof Combined936]-?: Combined936[K] }; +type ReadonlyAll936 = { readonly [K in keyof Combined936]: Combined936[K] }; +type NullableAll936 = { [K in keyof Combined936]: Combined936[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString936 = T extends string ? true : false; +type IsNumber936 = T extends number ? true : false; +type TypeName936 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames936 = { + [K in keyof BigRecord936]: TypeName936; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb936 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource936 = "user" | "post" | "comment" | "tag" | "category"; +type Action936 = `${Verb936}_${Resource936}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise936 = T extends Promise ? UnwrapPromise936 : T; +type UnwrapArray936 = T extends (infer U)[] ? UnwrapArray936 : T; +type Head936 = T extends [infer H, ...infer _] ? H : never; +type Tail936 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation936 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation936>] + : never; + +type SmallUnion936 = "a" | "b" | "c" | "d"; +type AllPerms936 = Permutation936; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig936, + Flat936, + FR936, + BigUnion936, + ExtractAlpha936, + ExcludeZulu936, + OptionalAll936, + RequiredAll936, + ReadonlyAll936, + NullableAll936, + TypeNames936, + Action936, + AllPerms936, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts new file mode 100644 index 00000000..fada28f1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-37 (seed 937) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord937 { + a937: { x: number; y: string; z: boolean }; + b937: { p: string[]; q: Record }; + c937: { nested: { deep: { deeper: { deepest: string } } } }; + d937: number; + e937: string; + f937: boolean; + g937: null; + h937: undefined; + i937: bigint; + j937: symbol; +} + +type PartialBig937 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten937 = T extends Array ? Flatten937 : T; +type Nested937 = number[][][][][][][][][][]; +type Flat937 = Flatten937; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly937 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly937 : T[K]; +}; +type DeepRequired937 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired937 : T[K]; +}; +type FR937 = DeepReadonly937>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion937 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha937 = Extract; +type ExcludeZulu937 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA937 { width: number; height: number; depth: number } +interface ShapeB937 { color: string; opacity: number; blend: string } +interface ShapeC937 { x: number; y: number; z: number; w: number } +interface ShapeD937 { label: string; title: string; summary: string } + +type Combined937 = ShapeA937 & ShapeB937 & ShapeC937 & ShapeD937; +type OptionalAll937 = { [K in keyof Combined937]?: Combined937[K] }; +type RequiredAll937 = { [K in keyof Combined937]-?: Combined937[K] }; +type ReadonlyAll937 = { readonly [K in keyof Combined937]: Combined937[K] }; +type NullableAll937 = { [K in keyof Combined937]: Combined937[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString937 = T extends string ? true : false; +type IsNumber937 = T extends number ? true : false; +type TypeName937 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames937 = { + [K in keyof BigRecord937]: TypeName937; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb937 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource937 = "user" | "post" | "comment" | "tag" | "category"; +type Action937 = `${Verb937}_${Resource937}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise937 = T extends Promise ? UnwrapPromise937 : T; +type UnwrapArray937 = T extends (infer U)[] ? UnwrapArray937 : T; +type Head937 = T extends [infer H, ...infer _] ? H : never; +type Tail937 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation937 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation937>] + : never; + +type SmallUnion937 = "a" | "b" | "c" | "d"; +type AllPerms937 = Permutation937; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig937, + Flat937, + FR937, + BigUnion937, + ExtractAlpha937, + ExcludeZulu937, + OptionalAll937, + RequiredAll937, + ReadonlyAll937, + NullableAll937, + TypeNames937, + Action937, + AllPerms937, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts new file mode 100644 index 00000000..293d2da4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-38 (seed 938) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord938 { + a938: { x: number; y: string; z: boolean }; + b938: { p: string[]; q: Record }; + c938: { nested: { deep: { deeper: { deepest: string } } } }; + d938: number; + e938: string; + f938: boolean; + g938: null; + h938: undefined; + i938: bigint; + j938: symbol; +} + +type PartialBig938 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten938 = T extends Array ? Flatten938 : T; +type Nested938 = number[][][][][][][][][][]; +type Flat938 = Flatten938; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly938 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly938 : T[K]; +}; +type DeepRequired938 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired938 : T[K]; +}; +type FR938 = DeepReadonly938>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion938 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha938 = Extract; +type ExcludeZulu938 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA938 { width: number; height: number; depth: number } +interface ShapeB938 { color: string; opacity: number; blend: string } +interface ShapeC938 { x: number; y: number; z: number; w: number } +interface ShapeD938 { label: string; title: string; summary: string } + +type Combined938 = ShapeA938 & ShapeB938 & ShapeC938 & ShapeD938; +type OptionalAll938 = { [K in keyof Combined938]?: Combined938[K] }; +type RequiredAll938 = { [K in keyof Combined938]-?: Combined938[K] }; +type ReadonlyAll938 = { readonly [K in keyof Combined938]: Combined938[K] }; +type NullableAll938 = { [K in keyof Combined938]: Combined938[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString938 = T extends string ? true : false; +type IsNumber938 = T extends number ? true : false; +type TypeName938 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames938 = { + [K in keyof BigRecord938]: TypeName938; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb938 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource938 = "user" | "post" | "comment" | "tag" | "category"; +type Action938 = `${Verb938}_${Resource938}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise938 = T extends Promise ? UnwrapPromise938 : T; +type UnwrapArray938 = T extends (infer U)[] ? UnwrapArray938 : T; +type Head938 = T extends [infer H, ...infer _] ? H : never; +type Tail938 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation938 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation938>] + : never; + +type SmallUnion938 = "a" | "b" | "c" | "d"; +type AllPerms938 = Permutation938; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig938, + Flat938, + FR938, + BigUnion938, + ExtractAlpha938, + ExcludeZulu938, + OptionalAll938, + RequiredAll938, + ReadonlyAll938, + NullableAll938, + TypeNames938, + Action938, + AllPerms938, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts new file mode 100644 index 00000000..75f03358 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-39 (seed 939) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord939 { + a939: { x: number; y: string; z: boolean }; + b939: { p: string[]; q: Record }; + c939: { nested: { deep: { deeper: { deepest: string } } } }; + d939: number; + e939: string; + f939: boolean; + g939: null; + h939: undefined; + i939: bigint; + j939: symbol; +} + +type PartialBig939 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten939 = T extends Array ? Flatten939 : T; +type Nested939 = number[][][][][][][][][][]; +type Flat939 = Flatten939; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly939 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly939 : T[K]; +}; +type DeepRequired939 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired939 : T[K]; +}; +type FR939 = DeepReadonly939>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion939 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha939 = Extract; +type ExcludeZulu939 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA939 { width: number; height: number; depth: number } +interface ShapeB939 { color: string; opacity: number; blend: string } +interface ShapeC939 { x: number; y: number; z: number; w: number } +interface ShapeD939 { label: string; title: string; summary: string } + +type Combined939 = ShapeA939 & ShapeB939 & ShapeC939 & ShapeD939; +type OptionalAll939 = { [K in keyof Combined939]?: Combined939[K] }; +type RequiredAll939 = { [K in keyof Combined939]-?: Combined939[K] }; +type ReadonlyAll939 = { readonly [K in keyof Combined939]: Combined939[K] }; +type NullableAll939 = { [K in keyof Combined939]: Combined939[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString939 = T extends string ? true : false; +type IsNumber939 = T extends number ? true : false; +type TypeName939 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames939 = { + [K in keyof BigRecord939]: TypeName939; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb939 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource939 = "user" | "post" | "comment" | "tag" | "category"; +type Action939 = `${Verb939}_${Resource939}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise939 = T extends Promise ? UnwrapPromise939 : T; +type UnwrapArray939 = T extends (infer U)[] ? UnwrapArray939 : T; +type Head939 = T extends [infer H, ...infer _] ? H : never; +type Tail939 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation939 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation939>] + : never; + +type SmallUnion939 = "a" | "b" | "c" | "d"; +type AllPerms939 = Permutation939; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig939, + Flat939, + FR939, + BigUnion939, + ExtractAlpha939, + ExcludeZulu939, + OptionalAll939, + RequiredAll939, + ReadonlyAll939, + NullableAll939, + TypeNames939, + Action939, + AllPerms939, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts new file mode 100644 index 00000000..9909ddd3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-40 (seed 940) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord940 { + a940: { x: number; y: string; z: boolean }; + b940: { p: string[]; q: Record }; + c940: { nested: { deep: { deeper: { deepest: string } } } }; + d940: number; + e940: string; + f940: boolean; + g940: null; + h940: undefined; + i940: bigint; + j940: symbol; +} + +type PartialBig940 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten940 = T extends Array ? Flatten940 : T; +type Nested940 = number[][][][][][][][][][]; +type Flat940 = Flatten940; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly940 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly940 : T[K]; +}; +type DeepRequired940 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired940 : T[K]; +}; +type FR940 = DeepReadonly940>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion940 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha940 = Extract; +type ExcludeZulu940 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA940 { width: number; height: number; depth: number } +interface ShapeB940 { color: string; opacity: number; blend: string } +interface ShapeC940 { x: number; y: number; z: number; w: number } +interface ShapeD940 { label: string; title: string; summary: string } + +type Combined940 = ShapeA940 & ShapeB940 & ShapeC940 & ShapeD940; +type OptionalAll940 = { [K in keyof Combined940]?: Combined940[K] }; +type RequiredAll940 = { [K in keyof Combined940]-?: Combined940[K] }; +type ReadonlyAll940 = { readonly [K in keyof Combined940]: Combined940[K] }; +type NullableAll940 = { [K in keyof Combined940]: Combined940[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString940 = T extends string ? true : false; +type IsNumber940 = T extends number ? true : false; +type TypeName940 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames940 = { + [K in keyof BigRecord940]: TypeName940; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb940 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource940 = "user" | "post" | "comment" | "tag" | "category"; +type Action940 = `${Verb940}_${Resource940}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise940 = T extends Promise ? UnwrapPromise940 : T; +type UnwrapArray940 = T extends (infer U)[] ? UnwrapArray940 : T; +type Head940 = T extends [infer H, ...infer _] ? H : never; +type Tail940 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation940 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation940>] + : never; + +type SmallUnion940 = "a" | "b" | "c" | "d"; +type AllPerms940 = Permutation940; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig940, + Flat940, + FR940, + BigUnion940, + ExtractAlpha940, + ExcludeZulu940, + OptionalAll940, + RequiredAll940, + ReadonlyAll940, + NullableAll940, + TypeNames940, + Action940, + AllPerms940, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts new file mode 100644 index 00000000..8d748558 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-41 (seed 941) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord941 { + a941: { x: number; y: string; z: boolean }; + b941: { p: string[]; q: Record }; + c941: { nested: { deep: { deeper: { deepest: string } } } }; + d941: number; + e941: string; + f941: boolean; + g941: null; + h941: undefined; + i941: bigint; + j941: symbol; +} + +type PartialBig941 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten941 = T extends Array ? Flatten941 : T; +type Nested941 = number[][][][][][][][][][]; +type Flat941 = Flatten941; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly941 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly941 : T[K]; +}; +type DeepRequired941 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired941 : T[K]; +}; +type FR941 = DeepReadonly941>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion941 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha941 = Extract; +type ExcludeZulu941 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA941 { width: number; height: number; depth: number } +interface ShapeB941 { color: string; opacity: number; blend: string } +interface ShapeC941 { x: number; y: number; z: number; w: number } +interface ShapeD941 { label: string; title: string; summary: string } + +type Combined941 = ShapeA941 & ShapeB941 & ShapeC941 & ShapeD941; +type OptionalAll941 = { [K in keyof Combined941]?: Combined941[K] }; +type RequiredAll941 = { [K in keyof Combined941]-?: Combined941[K] }; +type ReadonlyAll941 = { readonly [K in keyof Combined941]: Combined941[K] }; +type NullableAll941 = { [K in keyof Combined941]: Combined941[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString941 = T extends string ? true : false; +type IsNumber941 = T extends number ? true : false; +type TypeName941 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames941 = { + [K in keyof BigRecord941]: TypeName941; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb941 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource941 = "user" | "post" | "comment" | "tag" | "category"; +type Action941 = `${Verb941}_${Resource941}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise941 = T extends Promise ? UnwrapPromise941 : T; +type UnwrapArray941 = T extends (infer U)[] ? UnwrapArray941 : T; +type Head941 = T extends [infer H, ...infer _] ? H : never; +type Tail941 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation941 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation941>] + : never; + +type SmallUnion941 = "a" | "b" | "c" | "d"; +type AllPerms941 = Permutation941; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig941, + Flat941, + FR941, + BigUnion941, + ExtractAlpha941, + ExcludeZulu941, + OptionalAll941, + RequiredAll941, + ReadonlyAll941, + NullableAll941, + TypeNames941, + Action941, + AllPerms941, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts new file mode 100644 index 00000000..c66428ed --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-42 (seed 942) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord942 { + a942: { x: number; y: string; z: boolean }; + b942: { p: string[]; q: Record }; + c942: { nested: { deep: { deeper: { deepest: string } } } }; + d942: number; + e942: string; + f942: boolean; + g942: null; + h942: undefined; + i942: bigint; + j942: symbol; +} + +type PartialBig942 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten942 = T extends Array ? Flatten942 : T; +type Nested942 = number[][][][][][][][][][]; +type Flat942 = Flatten942; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly942 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly942 : T[K]; +}; +type DeepRequired942 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired942 : T[K]; +}; +type FR942 = DeepReadonly942>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion942 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha942 = Extract; +type ExcludeZulu942 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA942 { width: number; height: number; depth: number } +interface ShapeB942 { color: string; opacity: number; blend: string } +interface ShapeC942 { x: number; y: number; z: number; w: number } +interface ShapeD942 { label: string; title: string; summary: string } + +type Combined942 = ShapeA942 & ShapeB942 & ShapeC942 & ShapeD942; +type OptionalAll942 = { [K in keyof Combined942]?: Combined942[K] }; +type RequiredAll942 = { [K in keyof Combined942]-?: Combined942[K] }; +type ReadonlyAll942 = { readonly [K in keyof Combined942]: Combined942[K] }; +type NullableAll942 = { [K in keyof Combined942]: Combined942[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString942 = T extends string ? true : false; +type IsNumber942 = T extends number ? true : false; +type TypeName942 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames942 = { + [K in keyof BigRecord942]: TypeName942; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb942 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource942 = "user" | "post" | "comment" | "tag" | "category"; +type Action942 = `${Verb942}_${Resource942}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise942 = T extends Promise ? UnwrapPromise942 : T; +type UnwrapArray942 = T extends (infer U)[] ? UnwrapArray942 : T; +type Head942 = T extends [infer H, ...infer _] ? H : never; +type Tail942 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation942 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation942>] + : never; + +type SmallUnion942 = "a" | "b" | "c" | "d"; +type AllPerms942 = Permutation942; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig942, + Flat942, + FR942, + BigUnion942, + ExtractAlpha942, + ExcludeZulu942, + OptionalAll942, + RequiredAll942, + ReadonlyAll942, + NullableAll942, + TypeNames942, + Action942, + AllPerms942, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts new file mode 100644 index 00000000..f476c66d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-43 (seed 943) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord943 { + a943: { x: number; y: string; z: boolean }; + b943: { p: string[]; q: Record }; + c943: { nested: { deep: { deeper: { deepest: string } } } }; + d943: number; + e943: string; + f943: boolean; + g943: null; + h943: undefined; + i943: bigint; + j943: symbol; +} + +type PartialBig943 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten943 = T extends Array ? Flatten943 : T; +type Nested943 = number[][][][][][][][][][]; +type Flat943 = Flatten943; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly943 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly943 : T[K]; +}; +type DeepRequired943 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired943 : T[K]; +}; +type FR943 = DeepReadonly943>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion943 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha943 = Extract; +type ExcludeZulu943 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA943 { width: number; height: number; depth: number } +interface ShapeB943 { color: string; opacity: number; blend: string } +interface ShapeC943 { x: number; y: number; z: number; w: number } +interface ShapeD943 { label: string; title: string; summary: string } + +type Combined943 = ShapeA943 & ShapeB943 & ShapeC943 & ShapeD943; +type OptionalAll943 = { [K in keyof Combined943]?: Combined943[K] }; +type RequiredAll943 = { [K in keyof Combined943]-?: Combined943[K] }; +type ReadonlyAll943 = { readonly [K in keyof Combined943]: Combined943[K] }; +type NullableAll943 = { [K in keyof Combined943]: Combined943[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString943 = T extends string ? true : false; +type IsNumber943 = T extends number ? true : false; +type TypeName943 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames943 = { + [K in keyof BigRecord943]: TypeName943; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb943 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource943 = "user" | "post" | "comment" | "tag" | "category"; +type Action943 = `${Verb943}_${Resource943}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise943 = T extends Promise ? UnwrapPromise943 : T; +type UnwrapArray943 = T extends (infer U)[] ? UnwrapArray943 : T; +type Head943 = T extends [infer H, ...infer _] ? H : never; +type Tail943 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation943 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation943>] + : never; + +type SmallUnion943 = "a" | "b" | "c" | "d"; +type AllPerms943 = Permutation943; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig943, + Flat943, + FR943, + BigUnion943, + ExtractAlpha943, + ExcludeZulu943, + OptionalAll943, + RequiredAll943, + ReadonlyAll943, + NullableAll943, + TypeNames943, + Action943, + AllPerms943, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts new file mode 100644 index 00000000..96ccdadd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-44 (seed 944) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord944 { + a944: { x: number; y: string; z: boolean }; + b944: { p: string[]; q: Record }; + c944: { nested: { deep: { deeper: { deepest: string } } } }; + d944: number; + e944: string; + f944: boolean; + g944: null; + h944: undefined; + i944: bigint; + j944: symbol; +} + +type PartialBig944 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten944 = T extends Array ? Flatten944 : T; +type Nested944 = number[][][][][][][][][][]; +type Flat944 = Flatten944; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly944 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly944 : T[K]; +}; +type DeepRequired944 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired944 : T[K]; +}; +type FR944 = DeepReadonly944>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion944 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha944 = Extract; +type ExcludeZulu944 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA944 { width: number; height: number; depth: number } +interface ShapeB944 { color: string; opacity: number; blend: string } +interface ShapeC944 { x: number; y: number; z: number; w: number } +interface ShapeD944 { label: string; title: string; summary: string } + +type Combined944 = ShapeA944 & ShapeB944 & ShapeC944 & ShapeD944; +type OptionalAll944 = { [K in keyof Combined944]?: Combined944[K] }; +type RequiredAll944 = { [K in keyof Combined944]-?: Combined944[K] }; +type ReadonlyAll944 = { readonly [K in keyof Combined944]: Combined944[K] }; +type NullableAll944 = { [K in keyof Combined944]: Combined944[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString944 = T extends string ? true : false; +type IsNumber944 = T extends number ? true : false; +type TypeName944 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames944 = { + [K in keyof BigRecord944]: TypeName944; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb944 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource944 = "user" | "post" | "comment" | "tag" | "category"; +type Action944 = `${Verb944}_${Resource944}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise944 = T extends Promise ? UnwrapPromise944 : T; +type UnwrapArray944 = T extends (infer U)[] ? UnwrapArray944 : T; +type Head944 = T extends [infer H, ...infer _] ? H : never; +type Tail944 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation944 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation944>] + : never; + +type SmallUnion944 = "a" | "b" | "c" | "d"; +type AllPerms944 = Permutation944; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig944, + Flat944, + FR944, + BigUnion944, + ExtractAlpha944, + ExcludeZulu944, + OptionalAll944, + RequiredAll944, + ReadonlyAll944, + NullableAll944, + TypeNames944, + Action944, + AllPerms944, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts new file mode 100644 index 00000000..d23946f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-45 (seed 945) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord945 { + a945: { x: number; y: string; z: boolean }; + b945: { p: string[]; q: Record }; + c945: { nested: { deep: { deeper: { deepest: string } } } }; + d945: number; + e945: string; + f945: boolean; + g945: null; + h945: undefined; + i945: bigint; + j945: symbol; +} + +type PartialBig945 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten945 = T extends Array ? Flatten945 : T; +type Nested945 = number[][][][][][][][][][]; +type Flat945 = Flatten945; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly945 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly945 : T[K]; +}; +type DeepRequired945 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired945 : T[K]; +}; +type FR945 = DeepReadonly945>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion945 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha945 = Extract; +type ExcludeZulu945 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA945 { width: number; height: number; depth: number } +interface ShapeB945 { color: string; opacity: number; blend: string } +interface ShapeC945 { x: number; y: number; z: number; w: number } +interface ShapeD945 { label: string; title: string; summary: string } + +type Combined945 = ShapeA945 & ShapeB945 & ShapeC945 & ShapeD945; +type OptionalAll945 = { [K in keyof Combined945]?: Combined945[K] }; +type RequiredAll945 = { [K in keyof Combined945]-?: Combined945[K] }; +type ReadonlyAll945 = { readonly [K in keyof Combined945]: Combined945[K] }; +type NullableAll945 = { [K in keyof Combined945]: Combined945[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString945 = T extends string ? true : false; +type IsNumber945 = T extends number ? true : false; +type TypeName945 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames945 = { + [K in keyof BigRecord945]: TypeName945; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb945 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource945 = "user" | "post" | "comment" | "tag" | "category"; +type Action945 = `${Verb945}_${Resource945}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise945 = T extends Promise ? UnwrapPromise945 : T; +type UnwrapArray945 = T extends (infer U)[] ? UnwrapArray945 : T; +type Head945 = T extends [infer H, ...infer _] ? H : never; +type Tail945 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation945 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation945>] + : never; + +type SmallUnion945 = "a" | "b" | "c" | "d"; +type AllPerms945 = Permutation945; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig945, + Flat945, + FR945, + BigUnion945, + ExtractAlpha945, + ExcludeZulu945, + OptionalAll945, + RequiredAll945, + ReadonlyAll945, + NullableAll945, + TypeNames945, + Action945, + AllPerms945, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts new file mode 100644 index 00000000..b7335ac3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-46 (seed 946) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord946 { + a946: { x: number; y: string; z: boolean }; + b946: { p: string[]; q: Record }; + c946: { nested: { deep: { deeper: { deepest: string } } } }; + d946: number; + e946: string; + f946: boolean; + g946: null; + h946: undefined; + i946: bigint; + j946: symbol; +} + +type PartialBig946 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten946 = T extends Array ? Flatten946 : T; +type Nested946 = number[][][][][][][][][][]; +type Flat946 = Flatten946; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly946 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly946 : T[K]; +}; +type DeepRequired946 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired946 : T[K]; +}; +type FR946 = DeepReadonly946>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion946 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha946 = Extract; +type ExcludeZulu946 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA946 { width: number; height: number; depth: number } +interface ShapeB946 { color: string; opacity: number; blend: string } +interface ShapeC946 { x: number; y: number; z: number; w: number } +interface ShapeD946 { label: string; title: string; summary: string } + +type Combined946 = ShapeA946 & ShapeB946 & ShapeC946 & ShapeD946; +type OptionalAll946 = { [K in keyof Combined946]?: Combined946[K] }; +type RequiredAll946 = { [K in keyof Combined946]-?: Combined946[K] }; +type ReadonlyAll946 = { readonly [K in keyof Combined946]: Combined946[K] }; +type NullableAll946 = { [K in keyof Combined946]: Combined946[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString946 = T extends string ? true : false; +type IsNumber946 = T extends number ? true : false; +type TypeName946 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames946 = { + [K in keyof BigRecord946]: TypeName946; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb946 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource946 = "user" | "post" | "comment" | "tag" | "category"; +type Action946 = `${Verb946}_${Resource946}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise946 = T extends Promise ? UnwrapPromise946 : T; +type UnwrapArray946 = T extends (infer U)[] ? UnwrapArray946 : T; +type Head946 = T extends [infer H, ...infer _] ? H : never; +type Tail946 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation946 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation946>] + : never; + +type SmallUnion946 = "a" | "b" | "c" | "d"; +type AllPerms946 = Permutation946; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig946, + Flat946, + FR946, + BigUnion946, + ExtractAlpha946, + ExcludeZulu946, + OptionalAll946, + RequiredAll946, + ReadonlyAll946, + NullableAll946, + TypeNames946, + Action946, + AllPerms946, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts new file mode 100644 index 00000000..7ecdf8e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-47 (seed 947) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord947 { + a947: { x: number; y: string; z: boolean }; + b947: { p: string[]; q: Record }; + c947: { nested: { deep: { deeper: { deepest: string } } } }; + d947: number; + e947: string; + f947: boolean; + g947: null; + h947: undefined; + i947: bigint; + j947: symbol; +} + +type PartialBig947 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten947 = T extends Array ? Flatten947 : T; +type Nested947 = number[][][][][][][][][][]; +type Flat947 = Flatten947; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly947 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly947 : T[K]; +}; +type DeepRequired947 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired947 : T[K]; +}; +type FR947 = DeepReadonly947>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion947 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha947 = Extract; +type ExcludeZulu947 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA947 { width: number; height: number; depth: number } +interface ShapeB947 { color: string; opacity: number; blend: string } +interface ShapeC947 { x: number; y: number; z: number; w: number } +interface ShapeD947 { label: string; title: string; summary: string } + +type Combined947 = ShapeA947 & ShapeB947 & ShapeC947 & ShapeD947; +type OptionalAll947 = { [K in keyof Combined947]?: Combined947[K] }; +type RequiredAll947 = { [K in keyof Combined947]-?: Combined947[K] }; +type ReadonlyAll947 = { readonly [K in keyof Combined947]: Combined947[K] }; +type NullableAll947 = { [K in keyof Combined947]: Combined947[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString947 = T extends string ? true : false; +type IsNumber947 = T extends number ? true : false; +type TypeName947 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames947 = { + [K in keyof BigRecord947]: TypeName947; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb947 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource947 = "user" | "post" | "comment" | "tag" | "category"; +type Action947 = `${Verb947}_${Resource947}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise947 = T extends Promise ? UnwrapPromise947 : T; +type UnwrapArray947 = T extends (infer U)[] ? UnwrapArray947 : T; +type Head947 = T extends [infer H, ...infer _] ? H : never; +type Tail947 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation947 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation947>] + : never; + +type SmallUnion947 = "a" | "b" | "c" | "d"; +type AllPerms947 = Permutation947; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig947, + Flat947, + FR947, + BigUnion947, + ExtractAlpha947, + ExcludeZulu947, + OptionalAll947, + RequiredAll947, + ReadonlyAll947, + NullableAll947, + TypeNames947, + Action947, + AllPerms947, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts new file mode 100644 index 00000000..2c6df07a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-48 (seed 948) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord948 { + a948: { x: number; y: string; z: boolean }; + b948: { p: string[]; q: Record }; + c948: { nested: { deep: { deeper: { deepest: string } } } }; + d948: number; + e948: string; + f948: boolean; + g948: null; + h948: undefined; + i948: bigint; + j948: symbol; +} + +type PartialBig948 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten948 = T extends Array ? Flatten948 : T; +type Nested948 = number[][][][][][][][][][]; +type Flat948 = Flatten948; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly948 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly948 : T[K]; +}; +type DeepRequired948 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired948 : T[K]; +}; +type FR948 = DeepReadonly948>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion948 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha948 = Extract; +type ExcludeZulu948 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA948 { width: number; height: number; depth: number } +interface ShapeB948 { color: string; opacity: number; blend: string } +interface ShapeC948 { x: number; y: number; z: number; w: number } +interface ShapeD948 { label: string; title: string; summary: string } + +type Combined948 = ShapeA948 & ShapeB948 & ShapeC948 & ShapeD948; +type OptionalAll948 = { [K in keyof Combined948]?: Combined948[K] }; +type RequiredAll948 = { [K in keyof Combined948]-?: Combined948[K] }; +type ReadonlyAll948 = { readonly [K in keyof Combined948]: Combined948[K] }; +type NullableAll948 = { [K in keyof Combined948]: Combined948[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString948 = T extends string ? true : false; +type IsNumber948 = T extends number ? true : false; +type TypeName948 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames948 = { + [K in keyof BigRecord948]: TypeName948; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb948 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource948 = "user" | "post" | "comment" | "tag" | "category"; +type Action948 = `${Verb948}_${Resource948}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise948 = T extends Promise ? UnwrapPromise948 : T; +type UnwrapArray948 = T extends (infer U)[] ? UnwrapArray948 : T; +type Head948 = T extends [infer H, ...infer _] ? H : never; +type Tail948 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation948 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation948>] + : never; + +type SmallUnion948 = "a" | "b" | "c" | "d"; +type AllPerms948 = Permutation948; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig948, + Flat948, + FR948, + BigUnion948, + ExtractAlpha948, + ExcludeZulu948, + OptionalAll948, + RequiredAll948, + ReadonlyAll948, + NullableAll948, + TypeNames948, + Action948, + AllPerms948, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts new file mode 100644 index 00000000..1d035d36 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-49 (seed 949) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord949 { + a949: { x: number; y: string; z: boolean }; + b949: { p: string[]; q: Record }; + c949: { nested: { deep: { deeper: { deepest: string } } } }; + d949: number; + e949: string; + f949: boolean; + g949: null; + h949: undefined; + i949: bigint; + j949: symbol; +} + +type PartialBig949 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten949 = T extends Array ? Flatten949 : T; +type Nested949 = number[][][][][][][][][][]; +type Flat949 = Flatten949; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly949 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly949 : T[K]; +}; +type DeepRequired949 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired949 : T[K]; +}; +type FR949 = DeepReadonly949>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion949 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha949 = Extract; +type ExcludeZulu949 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA949 { width: number; height: number; depth: number } +interface ShapeB949 { color: string; opacity: number; blend: string } +interface ShapeC949 { x: number; y: number; z: number; w: number } +interface ShapeD949 { label: string; title: string; summary: string } + +type Combined949 = ShapeA949 & ShapeB949 & ShapeC949 & ShapeD949; +type OptionalAll949 = { [K in keyof Combined949]?: Combined949[K] }; +type RequiredAll949 = { [K in keyof Combined949]-?: Combined949[K] }; +type ReadonlyAll949 = { readonly [K in keyof Combined949]: Combined949[K] }; +type NullableAll949 = { [K in keyof Combined949]: Combined949[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString949 = T extends string ? true : false; +type IsNumber949 = T extends number ? true : false; +type TypeName949 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames949 = { + [K in keyof BigRecord949]: TypeName949; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb949 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource949 = "user" | "post" | "comment" | "tag" | "category"; +type Action949 = `${Verb949}_${Resource949}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise949 = T extends Promise ? UnwrapPromise949 : T; +type UnwrapArray949 = T extends (infer U)[] ? UnwrapArray949 : T; +type Head949 = T extends [infer H, ...infer _] ? H : never; +type Tail949 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation949 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation949>] + : never; + +type SmallUnion949 = "a" | "b" | "c" | "d"; +type AllPerms949 = Permutation949; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig949, + Flat949, + FR949, + BigUnion949, + ExtractAlpha949, + ExcludeZulu949, + OptionalAll949, + RequiredAll949, + ReadonlyAll949, + NullableAll949, + TypeNames949, + Action949, + AllPerms949, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts new file mode 100644 index 00000000..2991f534 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts @@ -0,0 +1,125 @@ +// pkg-09 / types-50 (seed 950) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord950 { + a950: { x: number; y: string; z: boolean }; + b950: { p: string[]; q: Record }; + c950: { nested: { deep: { deeper: { deepest: string } } } }; + d950: number; + e950: string; + f950: boolean; + g950: null; + h950: undefined; + i950: bigint; + j950: symbol; +} + +type PartialBig950 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten950 = T extends Array ? Flatten950 : T; +type Nested950 = number[][][][][][][][][][]; +type Flat950 = Flatten950; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly950 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly950 : T[K]; +}; +type DeepRequired950 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired950 : T[K]; +}; +type FR950 = DeepReadonly950>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion950 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha950 = Extract; +type ExcludeZulu950 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA950 { width: number; height: number; depth: number } +interface ShapeB950 { color: string; opacity: number; blend: string } +interface ShapeC950 { x: number; y: number; z: number; w: number } +interface ShapeD950 { label: string; title: string; summary: string } + +type Combined950 = ShapeA950 & ShapeB950 & ShapeC950 & ShapeD950; +type OptionalAll950 = { [K in keyof Combined950]?: Combined950[K] }; +type RequiredAll950 = { [K in keyof Combined950]-?: Combined950[K] }; +type ReadonlyAll950 = { readonly [K in keyof Combined950]: Combined950[K] }; +type NullableAll950 = { [K in keyof Combined950]: Combined950[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString950 = T extends string ? true : false; +type IsNumber950 = T extends number ? true : false; +type TypeName950 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames950 = { + [K in keyof BigRecord950]: TypeName950; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb950 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource950 = "user" | "post" | "comment" | "tag" | "category"; +type Action950 = `${Verb950}_${Resource950}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise950 = T extends Promise ? UnwrapPromise950 : T; +type UnwrapArray950 = T extends (infer U)[] ? UnwrapArray950 : T; +type Head950 = T extends [infer H, ...infer _] ? H : never; +type Tail950 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation950 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation950>] + : never; + +type SmallUnion950 = "a" | "b" | "c" | "d"; +type AllPerms950 = Permutation950; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig950, + Flat950, + FR950, + BigUnion950, + ExtractAlpha950, + ExcludeZulu950, + OptionalAll950, + RequiredAll950, + ReadonlyAll950, + NullableAll950, + TypeNames950, + Action950, + AllPerms950, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts new file mode 100644 index 00000000..8bc59b4d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-01 (seed 1001) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1001 { + a1001: { x: number; y: string; z: boolean }; + b1001: { p: string[]; q: Record }; + c1001: { nested: { deep: { deeper: { deepest: string } } } }; + d1001: number; + e1001: string; + f1001: boolean; + g1001: null; + h1001: undefined; + i1001: bigint; + j1001: symbol; +} + +type PartialBig1001 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1001 = T extends Array ? Flatten1001 : T; +type Nested1001 = number[][][][][][][][][][]; +type Flat1001 = Flatten1001; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1001 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1001 : T[K]; +}; +type DeepRequired1001 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1001 : T[K]; +}; +type FR1001 = DeepReadonly1001>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1001 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1001 = Extract; +type ExcludeZulu1001 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1001 { width: number; height: number; depth: number } +interface ShapeB1001 { color: string; opacity: number; blend: string } +interface ShapeC1001 { x: number; y: number; z: number; w: number } +interface ShapeD1001 { label: string; title: string; summary: string } + +type Combined1001 = ShapeA1001 & ShapeB1001 & ShapeC1001 & ShapeD1001; +type OptionalAll1001 = { [K in keyof Combined1001]?: Combined1001[K] }; +type RequiredAll1001 = { [K in keyof Combined1001]-?: Combined1001[K] }; +type ReadonlyAll1001 = { readonly [K in keyof Combined1001]: Combined1001[K] }; +type NullableAll1001 = { [K in keyof Combined1001]: Combined1001[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1001 = T extends string ? true : false; +type IsNumber1001 = T extends number ? true : false; +type TypeName1001 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1001 = { + [K in keyof BigRecord1001]: TypeName1001; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1001 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1001 = "user" | "post" | "comment" | "tag" | "category"; +type Action1001 = `${Verb1001}_${Resource1001}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1001 = T extends Promise ? UnwrapPromise1001 : T; +type UnwrapArray1001 = T extends (infer U)[] ? UnwrapArray1001 : T; +type Head1001 = T extends [infer H, ...infer _] ? H : never; +type Tail1001 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1001 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1001>] + : never; + +type SmallUnion1001 = "a" | "b" | "c" | "d"; +type AllPerms1001 = Permutation1001; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1001, + Flat1001, + FR1001, + BigUnion1001, + ExtractAlpha1001, + ExcludeZulu1001, + OptionalAll1001, + RequiredAll1001, + ReadonlyAll1001, + NullableAll1001, + TypeNames1001, + Action1001, + AllPerms1001, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts new file mode 100644 index 00000000..a91bed66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-02 (seed 1002) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1002 { + a1002: { x: number; y: string; z: boolean }; + b1002: { p: string[]; q: Record }; + c1002: { nested: { deep: { deeper: { deepest: string } } } }; + d1002: number; + e1002: string; + f1002: boolean; + g1002: null; + h1002: undefined; + i1002: bigint; + j1002: symbol; +} + +type PartialBig1002 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1002 = T extends Array ? Flatten1002 : T; +type Nested1002 = number[][][][][][][][][][]; +type Flat1002 = Flatten1002; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1002 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1002 : T[K]; +}; +type DeepRequired1002 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1002 : T[K]; +}; +type FR1002 = DeepReadonly1002>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1002 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1002 = Extract; +type ExcludeZulu1002 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1002 { width: number; height: number; depth: number } +interface ShapeB1002 { color: string; opacity: number; blend: string } +interface ShapeC1002 { x: number; y: number; z: number; w: number } +interface ShapeD1002 { label: string; title: string; summary: string } + +type Combined1002 = ShapeA1002 & ShapeB1002 & ShapeC1002 & ShapeD1002; +type OptionalAll1002 = { [K in keyof Combined1002]?: Combined1002[K] }; +type RequiredAll1002 = { [K in keyof Combined1002]-?: Combined1002[K] }; +type ReadonlyAll1002 = { readonly [K in keyof Combined1002]: Combined1002[K] }; +type NullableAll1002 = { [K in keyof Combined1002]: Combined1002[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1002 = T extends string ? true : false; +type IsNumber1002 = T extends number ? true : false; +type TypeName1002 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1002 = { + [K in keyof BigRecord1002]: TypeName1002; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1002 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1002 = "user" | "post" | "comment" | "tag" | "category"; +type Action1002 = `${Verb1002}_${Resource1002}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1002 = T extends Promise ? UnwrapPromise1002 : T; +type UnwrapArray1002 = T extends (infer U)[] ? UnwrapArray1002 : T; +type Head1002 = T extends [infer H, ...infer _] ? H : never; +type Tail1002 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1002 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1002>] + : never; + +type SmallUnion1002 = "a" | "b" | "c" | "d"; +type AllPerms1002 = Permutation1002; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1002, + Flat1002, + FR1002, + BigUnion1002, + ExtractAlpha1002, + ExcludeZulu1002, + OptionalAll1002, + RequiredAll1002, + ReadonlyAll1002, + NullableAll1002, + TypeNames1002, + Action1002, + AllPerms1002, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts new file mode 100644 index 00000000..8d47fc79 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-03 (seed 1003) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1003 { + a1003: { x: number; y: string; z: boolean }; + b1003: { p: string[]; q: Record }; + c1003: { nested: { deep: { deeper: { deepest: string } } } }; + d1003: number; + e1003: string; + f1003: boolean; + g1003: null; + h1003: undefined; + i1003: bigint; + j1003: symbol; +} + +type PartialBig1003 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1003 = T extends Array ? Flatten1003 : T; +type Nested1003 = number[][][][][][][][][][]; +type Flat1003 = Flatten1003; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1003 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1003 : T[K]; +}; +type DeepRequired1003 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1003 : T[K]; +}; +type FR1003 = DeepReadonly1003>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1003 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1003 = Extract; +type ExcludeZulu1003 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1003 { width: number; height: number; depth: number } +interface ShapeB1003 { color: string; opacity: number; blend: string } +interface ShapeC1003 { x: number; y: number; z: number; w: number } +interface ShapeD1003 { label: string; title: string; summary: string } + +type Combined1003 = ShapeA1003 & ShapeB1003 & ShapeC1003 & ShapeD1003; +type OptionalAll1003 = { [K in keyof Combined1003]?: Combined1003[K] }; +type RequiredAll1003 = { [K in keyof Combined1003]-?: Combined1003[K] }; +type ReadonlyAll1003 = { readonly [K in keyof Combined1003]: Combined1003[K] }; +type NullableAll1003 = { [K in keyof Combined1003]: Combined1003[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1003 = T extends string ? true : false; +type IsNumber1003 = T extends number ? true : false; +type TypeName1003 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1003 = { + [K in keyof BigRecord1003]: TypeName1003; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1003 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1003 = "user" | "post" | "comment" | "tag" | "category"; +type Action1003 = `${Verb1003}_${Resource1003}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1003 = T extends Promise ? UnwrapPromise1003 : T; +type UnwrapArray1003 = T extends (infer U)[] ? UnwrapArray1003 : T; +type Head1003 = T extends [infer H, ...infer _] ? H : never; +type Tail1003 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1003 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1003>] + : never; + +type SmallUnion1003 = "a" | "b" | "c" | "d"; +type AllPerms1003 = Permutation1003; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1003, + Flat1003, + FR1003, + BigUnion1003, + ExtractAlpha1003, + ExcludeZulu1003, + OptionalAll1003, + RequiredAll1003, + ReadonlyAll1003, + NullableAll1003, + TypeNames1003, + Action1003, + AllPerms1003, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts new file mode 100644 index 00000000..84f6d65d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-04 (seed 1004) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1004 { + a1004: { x: number; y: string; z: boolean }; + b1004: { p: string[]; q: Record }; + c1004: { nested: { deep: { deeper: { deepest: string } } } }; + d1004: number; + e1004: string; + f1004: boolean; + g1004: null; + h1004: undefined; + i1004: bigint; + j1004: symbol; +} + +type PartialBig1004 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1004 = T extends Array ? Flatten1004 : T; +type Nested1004 = number[][][][][][][][][][]; +type Flat1004 = Flatten1004; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1004 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1004 : T[K]; +}; +type DeepRequired1004 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1004 : T[K]; +}; +type FR1004 = DeepReadonly1004>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1004 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1004 = Extract; +type ExcludeZulu1004 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1004 { width: number; height: number; depth: number } +interface ShapeB1004 { color: string; opacity: number; blend: string } +interface ShapeC1004 { x: number; y: number; z: number; w: number } +interface ShapeD1004 { label: string; title: string; summary: string } + +type Combined1004 = ShapeA1004 & ShapeB1004 & ShapeC1004 & ShapeD1004; +type OptionalAll1004 = { [K in keyof Combined1004]?: Combined1004[K] }; +type RequiredAll1004 = { [K in keyof Combined1004]-?: Combined1004[K] }; +type ReadonlyAll1004 = { readonly [K in keyof Combined1004]: Combined1004[K] }; +type NullableAll1004 = { [K in keyof Combined1004]: Combined1004[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1004 = T extends string ? true : false; +type IsNumber1004 = T extends number ? true : false; +type TypeName1004 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1004 = { + [K in keyof BigRecord1004]: TypeName1004; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1004 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1004 = "user" | "post" | "comment" | "tag" | "category"; +type Action1004 = `${Verb1004}_${Resource1004}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1004 = T extends Promise ? UnwrapPromise1004 : T; +type UnwrapArray1004 = T extends (infer U)[] ? UnwrapArray1004 : T; +type Head1004 = T extends [infer H, ...infer _] ? H : never; +type Tail1004 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1004 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1004>] + : never; + +type SmallUnion1004 = "a" | "b" | "c" | "d"; +type AllPerms1004 = Permutation1004; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1004, + Flat1004, + FR1004, + BigUnion1004, + ExtractAlpha1004, + ExcludeZulu1004, + OptionalAll1004, + RequiredAll1004, + ReadonlyAll1004, + NullableAll1004, + TypeNames1004, + Action1004, + AllPerms1004, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts new file mode 100644 index 00000000..cfa8d630 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-05 (seed 1005) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1005 { + a1005: { x: number; y: string; z: boolean }; + b1005: { p: string[]; q: Record }; + c1005: { nested: { deep: { deeper: { deepest: string } } } }; + d1005: number; + e1005: string; + f1005: boolean; + g1005: null; + h1005: undefined; + i1005: bigint; + j1005: symbol; +} + +type PartialBig1005 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1005 = T extends Array ? Flatten1005 : T; +type Nested1005 = number[][][][][][][][][][]; +type Flat1005 = Flatten1005; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1005 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1005 : T[K]; +}; +type DeepRequired1005 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1005 : T[K]; +}; +type FR1005 = DeepReadonly1005>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1005 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1005 = Extract; +type ExcludeZulu1005 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1005 { width: number; height: number; depth: number } +interface ShapeB1005 { color: string; opacity: number; blend: string } +interface ShapeC1005 { x: number; y: number; z: number; w: number } +interface ShapeD1005 { label: string; title: string; summary: string } + +type Combined1005 = ShapeA1005 & ShapeB1005 & ShapeC1005 & ShapeD1005; +type OptionalAll1005 = { [K in keyof Combined1005]?: Combined1005[K] }; +type RequiredAll1005 = { [K in keyof Combined1005]-?: Combined1005[K] }; +type ReadonlyAll1005 = { readonly [K in keyof Combined1005]: Combined1005[K] }; +type NullableAll1005 = { [K in keyof Combined1005]: Combined1005[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1005 = T extends string ? true : false; +type IsNumber1005 = T extends number ? true : false; +type TypeName1005 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1005 = { + [K in keyof BigRecord1005]: TypeName1005; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1005 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1005 = "user" | "post" | "comment" | "tag" | "category"; +type Action1005 = `${Verb1005}_${Resource1005}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1005 = T extends Promise ? UnwrapPromise1005 : T; +type UnwrapArray1005 = T extends (infer U)[] ? UnwrapArray1005 : T; +type Head1005 = T extends [infer H, ...infer _] ? H : never; +type Tail1005 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1005 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1005>] + : never; + +type SmallUnion1005 = "a" | "b" | "c" | "d"; +type AllPerms1005 = Permutation1005; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1005, + Flat1005, + FR1005, + BigUnion1005, + ExtractAlpha1005, + ExcludeZulu1005, + OptionalAll1005, + RequiredAll1005, + ReadonlyAll1005, + NullableAll1005, + TypeNames1005, + Action1005, + AllPerms1005, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts new file mode 100644 index 00000000..1e9d9da7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-06 (seed 1006) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1006 { + a1006: { x: number; y: string; z: boolean }; + b1006: { p: string[]; q: Record }; + c1006: { nested: { deep: { deeper: { deepest: string } } } }; + d1006: number; + e1006: string; + f1006: boolean; + g1006: null; + h1006: undefined; + i1006: bigint; + j1006: symbol; +} + +type PartialBig1006 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1006 = T extends Array ? Flatten1006 : T; +type Nested1006 = number[][][][][][][][][][]; +type Flat1006 = Flatten1006; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1006 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1006 : T[K]; +}; +type DeepRequired1006 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1006 : T[K]; +}; +type FR1006 = DeepReadonly1006>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1006 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1006 = Extract; +type ExcludeZulu1006 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1006 { width: number; height: number; depth: number } +interface ShapeB1006 { color: string; opacity: number; blend: string } +interface ShapeC1006 { x: number; y: number; z: number; w: number } +interface ShapeD1006 { label: string; title: string; summary: string } + +type Combined1006 = ShapeA1006 & ShapeB1006 & ShapeC1006 & ShapeD1006; +type OptionalAll1006 = { [K in keyof Combined1006]?: Combined1006[K] }; +type RequiredAll1006 = { [K in keyof Combined1006]-?: Combined1006[K] }; +type ReadonlyAll1006 = { readonly [K in keyof Combined1006]: Combined1006[K] }; +type NullableAll1006 = { [K in keyof Combined1006]: Combined1006[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1006 = T extends string ? true : false; +type IsNumber1006 = T extends number ? true : false; +type TypeName1006 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1006 = { + [K in keyof BigRecord1006]: TypeName1006; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1006 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1006 = "user" | "post" | "comment" | "tag" | "category"; +type Action1006 = `${Verb1006}_${Resource1006}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1006 = T extends Promise ? UnwrapPromise1006 : T; +type UnwrapArray1006 = T extends (infer U)[] ? UnwrapArray1006 : T; +type Head1006 = T extends [infer H, ...infer _] ? H : never; +type Tail1006 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1006 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1006>] + : never; + +type SmallUnion1006 = "a" | "b" | "c" | "d"; +type AllPerms1006 = Permutation1006; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1006, + Flat1006, + FR1006, + BigUnion1006, + ExtractAlpha1006, + ExcludeZulu1006, + OptionalAll1006, + RequiredAll1006, + ReadonlyAll1006, + NullableAll1006, + TypeNames1006, + Action1006, + AllPerms1006, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts new file mode 100644 index 00000000..3cf29bf4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-07 (seed 1007) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1007 { + a1007: { x: number; y: string; z: boolean }; + b1007: { p: string[]; q: Record }; + c1007: { nested: { deep: { deeper: { deepest: string } } } }; + d1007: number; + e1007: string; + f1007: boolean; + g1007: null; + h1007: undefined; + i1007: bigint; + j1007: symbol; +} + +type PartialBig1007 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1007 = T extends Array ? Flatten1007 : T; +type Nested1007 = number[][][][][][][][][][]; +type Flat1007 = Flatten1007; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1007 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1007 : T[K]; +}; +type DeepRequired1007 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1007 : T[K]; +}; +type FR1007 = DeepReadonly1007>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1007 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1007 = Extract; +type ExcludeZulu1007 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1007 { width: number; height: number; depth: number } +interface ShapeB1007 { color: string; opacity: number; blend: string } +interface ShapeC1007 { x: number; y: number; z: number; w: number } +interface ShapeD1007 { label: string; title: string; summary: string } + +type Combined1007 = ShapeA1007 & ShapeB1007 & ShapeC1007 & ShapeD1007; +type OptionalAll1007 = { [K in keyof Combined1007]?: Combined1007[K] }; +type RequiredAll1007 = { [K in keyof Combined1007]-?: Combined1007[K] }; +type ReadonlyAll1007 = { readonly [K in keyof Combined1007]: Combined1007[K] }; +type NullableAll1007 = { [K in keyof Combined1007]: Combined1007[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1007 = T extends string ? true : false; +type IsNumber1007 = T extends number ? true : false; +type TypeName1007 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1007 = { + [K in keyof BigRecord1007]: TypeName1007; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1007 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1007 = "user" | "post" | "comment" | "tag" | "category"; +type Action1007 = `${Verb1007}_${Resource1007}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1007 = T extends Promise ? UnwrapPromise1007 : T; +type UnwrapArray1007 = T extends (infer U)[] ? UnwrapArray1007 : T; +type Head1007 = T extends [infer H, ...infer _] ? H : never; +type Tail1007 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1007 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1007>] + : never; + +type SmallUnion1007 = "a" | "b" | "c" | "d"; +type AllPerms1007 = Permutation1007; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1007, + Flat1007, + FR1007, + BigUnion1007, + ExtractAlpha1007, + ExcludeZulu1007, + OptionalAll1007, + RequiredAll1007, + ReadonlyAll1007, + NullableAll1007, + TypeNames1007, + Action1007, + AllPerms1007, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts new file mode 100644 index 00000000..48a75681 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-08 (seed 1008) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1008 { + a1008: { x: number; y: string; z: boolean }; + b1008: { p: string[]; q: Record }; + c1008: { nested: { deep: { deeper: { deepest: string } } } }; + d1008: number; + e1008: string; + f1008: boolean; + g1008: null; + h1008: undefined; + i1008: bigint; + j1008: symbol; +} + +type PartialBig1008 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1008 = T extends Array ? Flatten1008 : T; +type Nested1008 = number[][][][][][][][][][]; +type Flat1008 = Flatten1008; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1008 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1008 : T[K]; +}; +type DeepRequired1008 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1008 : T[K]; +}; +type FR1008 = DeepReadonly1008>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1008 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1008 = Extract; +type ExcludeZulu1008 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1008 { width: number; height: number; depth: number } +interface ShapeB1008 { color: string; opacity: number; blend: string } +interface ShapeC1008 { x: number; y: number; z: number; w: number } +interface ShapeD1008 { label: string; title: string; summary: string } + +type Combined1008 = ShapeA1008 & ShapeB1008 & ShapeC1008 & ShapeD1008; +type OptionalAll1008 = { [K in keyof Combined1008]?: Combined1008[K] }; +type RequiredAll1008 = { [K in keyof Combined1008]-?: Combined1008[K] }; +type ReadonlyAll1008 = { readonly [K in keyof Combined1008]: Combined1008[K] }; +type NullableAll1008 = { [K in keyof Combined1008]: Combined1008[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1008 = T extends string ? true : false; +type IsNumber1008 = T extends number ? true : false; +type TypeName1008 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1008 = { + [K in keyof BigRecord1008]: TypeName1008; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1008 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1008 = "user" | "post" | "comment" | "tag" | "category"; +type Action1008 = `${Verb1008}_${Resource1008}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1008 = T extends Promise ? UnwrapPromise1008 : T; +type UnwrapArray1008 = T extends (infer U)[] ? UnwrapArray1008 : T; +type Head1008 = T extends [infer H, ...infer _] ? H : never; +type Tail1008 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1008 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1008>] + : never; + +type SmallUnion1008 = "a" | "b" | "c" | "d"; +type AllPerms1008 = Permutation1008; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1008, + Flat1008, + FR1008, + BigUnion1008, + ExtractAlpha1008, + ExcludeZulu1008, + OptionalAll1008, + RequiredAll1008, + ReadonlyAll1008, + NullableAll1008, + TypeNames1008, + Action1008, + AllPerms1008, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts new file mode 100644 index 00000000..263cd744 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-09 (seed 1009) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1009 { + a1009: { x: number; y: string; z: boolean }; + b1009: { p: string[]; q: Record }; + c1009: { nested: { deep: { deeper: { deepest: string } } } }; + d1009: number; + e1009: string; + f1009: boolean; + g1009: null; + h1009: undefined; + i1009: bigint; + j1009: symbol; +} + +type PartialBig1009 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1009 = T extends Array ? Flatten1009 : T; +type Nested1009 = number[][][][][][][][][][]; +type Flat1009 = Flatten1009; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1009 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1009 : T[K]; +}; +type DeepRequired1009 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1009 : T[K]; +}; +type FR1009 = DeepReadonly1009>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1009 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1009 = Extract; +type ExcludeZulu1009 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1009 { width: number; height: number; depth: number } +interface ShapeB1009 { color: string; opacity: number; blend: string } +interface ShapeC1009 { x: number; y: number; z: number; w: number } +interface ShapeD1009 { label: string; title: string; summary: string } + +type Combined1009 = ShapeA1009 & ShapeB1009 & ShapeC1009 & ShapeD1009; +type OptionalAll1009 = { [K in keyof Combined1009]?: Combined1009[K] }; +type RequiredAll1009 = { [K in keyof Combined1009]-?: Combined1009[K] }; +type ReadonlyAll1009 = { readonly [K in keyof Combined1009]: Combined1009[K] }; +type NullableAll1009 = { [K in keyof Combined1009]: Combined1009[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1009 = T extends string ? true : false; +type IsNumber1009 = T extends number ? true : false; +type TypeName1009 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1009 = { + [K in keyof BigRecord1009]: TypeName1009; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1009 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1009 = "user" | "post" | "comment" | "tag" | "category"; +type Action1009 = `${Verb1009}_${Resource1009}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1009 = T extends Promise ? UnwrapPromise1009 : T; +type UnwrapArray1009 = T extends (infer U)[] ? UnwrapArray1009 : T; +type Head1009 = T extends [infer H, ...infer _] ? H : never; +type Tail1009 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1009 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1009>] + : never; + +type SmallUnion1009 = "a" | "b" | "c" | "d"; +type AllPerms1009 = Permutation1009; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1009, + Flat1009, + FR1009, + BigUnion1009, + ExtractAlpha1009, + ExcludeZulu1009, + OptionalAll1009, + RequiredAll1009, + ReadonlyAll1009, + NullableAll1009, + TypeNames1009, + Action1009, + AllPerms1009, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts new file mode 100644 index 00000000..b8638ceb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-10 (seed 1010) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1010 { + a1010: { x: number; y: string; z: boolean }; + b1010: { p: string[]; q: Record }; + c1010: { nested: { deep: { deeper: { deepest: string } } } }; + d1010: number; + e1010: string; + f1010: boolean; + g1010: null; + h1010: undefined; + i1010: bigint; + j1010: symbol; +} + +type PartialBig1010 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1010 = T extends Array ? Flatten1010 : T; +type Nested1010 = number[][][][][][][][][][]; +type Flat1010 = Flatten1010; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1010 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1010 : T[K]; +}; +type DeepRequired1010 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1010 : T[K]; +}; +type FR1010 = DeepReadonly1010>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1010 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1010 = Extract; +type ExcludeZulu1010 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1010 { width: number; height: number; depth: number } +interface ShapeB1010 { color: string; opacity: number; blend: string } +interface ShapeC1010 { x: number; y: number; z: number; w: number } +interface ShapeD1010 { label: string; title: string; summary: string } + +type Combined1010 = ShapeA1010 & ShapeB1010 & ShapeC1010 & ShapeD1010; +type OptionalAll1010 = { [K in keyof Combined1010]?: Combined1010[K] }; +type RequiredAll1010 = { [K in keyof Combined1010]-?: Combined1010[K] }; +type ReadonlyAll1010 = { readonly [K in keyof Combined1010]: Combined1010[K] }; +type NullableAll1010 = { [K in keyof Combined1010]: Combined1010[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1010 = T extends string ? true : false; +type IsNumber1010 = T extends number ? true : false; +type TypeName1010 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1010 = { + [K in keyof BigRecord1010]: TypeName1010; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1010 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1010 = "user" | "post" | "comment" | "tag" | "category"; +type Action1010 = `${Verb1010}_${Resource1010}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1010 = T extends Promise ? UnwrapPromise1010 : T; +type UnwrapArray1010 = T extends (infer U)[] ? UnwrapArray1010 : T; +type Head1010 = T extends [infer H, ...infer _] ? H : never; +type Tail1010 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1010 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1010>] + : never; + +type SmallUnion1010 = "a" | "b" | "c" | "d"; +type AllPerms1010 = Permutation1010; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1010, + Flat1010, + FR1010, + BigUnion1010, + ExtractAlpha1010, + ExcludeZulu1010, + OptionalAll1010, + RequiredAll1010, + ReadonlyAll1010, + NullableAll1010, + TypeNames1010, + Action1010, + AllPerms1010, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts new file mode 100644 index 00000000..d240a2c0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-11 (seed 1011) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1011 { + a1011: { x: number; y: string; z: boolean }; + b1011: { p: string[]; q: Record }; + c1011: { nested: { deep: { deeper: { deepest: string } } } }; + d1011: number; + e1011: string; + f1011: boolean; + g1011: null; + h1011: undefined; + i1011: bigint; + j1011: symbol; +} + +type PartialBig1011 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1011 = T extends Array ? Flatten1011 : T; +type Nested1011 = number[][][][][][][][][][]; +type Flat1011 = Flatten1011; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1011 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1011 : T[K]; +}; +type DeepRequired1011 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1011 : T[K]; +}; +type FR1011 = DeepReadonly1011>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1011 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1011 = Extract; +type ExcludeZulu1011 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1011 { width: number; height: number; depth: number } +interface ShapeB1011 { color: string; opacity: number; blend: string } +interface ShapeC1011 { x: number; y: number; z: number; w: number } +interface ShapeD1011 { label: string; title: string; summary: string } + +type Combined1011 = ShapeA1011 & ShapeB1011 & ShapeC1011 & ShapeD1011; +type OptionalAll1011 = { [K in keyof Combined1011]?: Combined1011[K] }; +type RequiredAll1011 = { [K in keyof Combined1011]-?: Combined1011[K] }; +type ReadonlyAll1011 = { readonly [K in keyof Combined1011]: Combined1011[K] }; +type NullableAll1011 = { [K in keyof Combined1011]: Combined1011[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1011 = T extends string ? true : false; +type IsNumber1011 = T extends number ? true : false; +type TypeName1011 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1011 = { + [K in keyof BigRecord1011]: TypeName1011; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1011 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1011 = "user" | "post" | "comment" | "tag" | "category"; +type Action1011 = `${Verb1011}_${Resource1011}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1011 = T extends Promise ? UnwrapPromise1011 : T; +type UnwrapArray1011 = T extends (infer U)[] ? UnwrapArray1011 : T; +type Head1011 = T extends [infer H, ...infer _] ? H : never; +type Tail1011 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1011 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1011>] + : never; + +type SmallUnion1011 = "a" | "b" | "c" | "d"; +type AllPerms1011 = Permutation1011; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1011, + Flat1011, + FR1011, + BigUnion1011, + ExtractAlpha1011, + ExcludeZulu1011, + OptionalAll1011, + RequiredAll1011, + ReadonlyAll1011, + NullableAll1011, + TypeNames1011, + Action1011, + AllPerms1011, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts new file mode 100644 index 00000000..361cc5f3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-12 (seed 1012) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1012 { + a1012: { x: number; y: string; z: boolean }; + b1012: { p: string[]; q: Record }; + c1012: { nested: { deep: { deeper: { deepest: string } } } }; + d1012: number; + e1012: string; + f1012: boolean; + g1012: null; + h1012: undefined; + i1012: bigint; + j1012: symbol; +} + +type PartialBig1012 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1012 = T extends Array ? Flatten1012 : T; +type Nested1012 = number[][][][][][][][][][]; +type Flat1012 = Flatten1012; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1012 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1012 : T[K]; +}; +type DeepRequired1012 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1012 : T[K]; +}; +type FR1012 = DeepReadonly1012>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1012 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1012 = Extract; +type ExcludeZulu1012 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1012 { width: number; height: number; depth: number } +interface ShapeB1012 { color: string; opacity: number; blend: string } +interface ShapeC1012 { x: number; y: number; z: number; w: number } +interface ShapeD1012 { label: string; title: string; summary: string } + +type Combined1012 = ShapeA1012 & ShapeB1012 & ShapeC1012 & ShapeD1012; +type OptionalAll1012 = { [K in keyof Combined1012]?: Combined1012[K] }; +type RequiredAll1012 = { [K in keyof Combined1012]-?: Combined1012[K] }; +type ReadonlyAll1012 = { readonly [K in keyof Combined1012]: Combined1012[K] }; +type NullableAll1012 = { [K in keyof Combined1012]: Combined1012[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1012 = T extends string ? true : false; +type IsNumber1012 = T extends number ? true : false; +type TypeName1012 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1012 = { + [K in keyof BigRecord1012]: TypeName1012; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1012 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1012 = "user" | "post" | "comment" | "tag" | "category"; +type Action1012 = `${Verb1012}_${Resource1012}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1012 = T extends Promise ? UnwrapPromise1012 : T; +type UnwrapArray1012 = T extends (infer U)[] ? UnwrapArray1012 : T; +type Head1012 = T extends [infer H, ...infer _] ? H : never; +type Tail1012 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1012 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1012>] + : never; + +type SmallUnion1012 = "a" | "b" | "c" | "d"; +type AllPerms1012 = Permutation1012; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1012, + Flat1012, + FR1012, + BigUnion1012, + ExtractAlpha1012, + ExcludeZulu1012, + OptionalAll1012, + RequiredAll1012, + ReadonlyAll1012, + NullableAll1012, + TypeNames1012, + Action1012, + AllPerms1012, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts new file mode 100644 index 00000000..47273e94 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-13 (seed 1013) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1013 { + a1013: { x: number; y: string; z: boolean }; + b1013: { p: string[]; q: Record }; + c1013: { nested: { deep: { deeper: { deepest: string } } } }; + d1013: number; + e1013: string; + f1013: boolean; + g1013: null; + h1013: undefined; + i1013: bigint; + j1013: symbol; +} + +type PartialBig1013 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1013 = T extends Array ? Flatten1013 : T; +type Nested1013 = number[][][][][][][][][][]; +type Flat1013 = Flatten1013; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1013 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1013 : T[K]; +}; +type DeepRequired1013 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1013 : T[K]; +}; +type FR1013 = DeepReadonly1013>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1013 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1013 = Extract; +type ExcludeZulu1013 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1013 { width: number; height: number; depth: number } +interface ShapeB1013 { color: string; opacity: number; blend: string } +interface ShapeC1013 { x: number; y: number; z: number; w: number } +interface ShapeD1013 { label: string; title: string; summary: string } + +type Combined1013 = ShapeA1013 & ShapeB1013 & ShapeC1013 & ShapeD1013; +type OptionalAll1013 = { [K in keyof Combined1013]?: Combined1013[K] }; +type RequiredAll1013 = { [K in keyof Combined1013]-?: Combined1013[K] }; +type ReadonlyAll1013 = { readonly [K in keyof Combined1013]: Combined1013[K] }; +type NullableAll1013 = { [K in keyof Combined1013]: Combined1013[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1013 = T extends string ? true : false; +type IsNumber1013 = T extends number ? true : false; +type TypeName1013 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1013 = { + [K in keyof BigRecord1013]: TypeName1013; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1013 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1013 = "user" | "post" | "comment" | "tag" | "category"; +type Action1013 = `${Verb1013}_${Resource1013}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1013 = T extends Promise ? UnwrapPromise1013 : T; +type UnwrapArray1013 = T extends (infer U)[] ? UnwrapArray1013 : T; +type Head1013 = T extends [infer H, ...infer _] ? H : never; +type Tail1013 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1013 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1013>] + : never; + +type SmallUnion1013 = "a" | "b" | "c" | "d"; +type AllPerms1013 = Permutation1013; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1013, + Flat1013, + FR1013, + BigUnion1013, + ExtractAlpha1013, + ExcludeZulu1013, + OptionalAll1013, + RequiredAll1013, + ReadonlyAll1013, + NullableAll1013, + TypeNames1013, + Action1013, + AllPerms1013, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts new file mode 100644 index 00000000..85f7d5ae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-14 (seed 1014) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1014 { + a1014: { x: number; y: string; z: boolean }; + b1014: { p: string[]; q: Record }; + c1014: { nested: { deep: { deeper: { deepest: string } } } }; + d1014: number; + e1014: string; + f1014: boolean; + g1014: null; + h1014: undefined; + i1014: bigint; + j1014: symbol; +} + +type PartialBig1014 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1014 = T extends Array ? Flatten1014 : T; +type Nested1014 = number[][][][][][][][][][]; +type Flat1014 = Flatten1014; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1014 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1014 : T[K]; +}; +type DeepRequired1014 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1014 : T[K]; +}; +type FR1014 = DeepReadonly1014>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1014 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1014 = Extract; +type ExcludeZulu1014 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1014 { width: number; height: number; depth: number } +interface ShapeB1014 { color: string; opacity: number; blend: string } +interface ShapeC1014 { x: number; y: number; z: number; w: number } +interface ShapeD1014 { label: string; title: string; summary: string } + +type Combined1014 = ShapeA1014 & ShapeB1014 & ShapeC1014 & ShapeD1014; +type OptionalAll1014 = { [K in keyof Combined1014]?: Combined1014[K] }; +type RequiredAll1014 = { [K in keyof Combined1014]-?: Combined1014[K] }; +type ReadonlyAll1014 = { readonly [K in keyof Combined1014]: Combined1014[K] }; +type NullableAll1014 = { [K in keyof Combined1014]: Combined1014[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1014 = T extends string ? true : false; +type IsNumber1014 = T extends number ? true : false; +type TypeName1014 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1014 = { + [K in keyof BigRecord1014]: TypeName1014; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1014 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1014 = "user" | "post" | "comment" | "tag" | "category"; +type Action1014 = `${Verb1014}_${Resource1014}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1014 = T extends Promise ? UnwrapPromise1014 : T; +type UnwrapArray1014 = T extends (infer U)[] ? UnwrapArray1014 : T; +type Head1014 = T extends [infer H, ...infer _] ? H : never; +type Tail1014 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1014 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1014>] + : never; + +type SmallUnion1014 = "a" | "b" | "c" | "d"; +type AllPerms1014 = Permutation1014; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1014, + Flat1014, + FR1014, + BigUnion1014, + ExtractAlpha1014, + ExcludeZulu1014, + OptionalAll1014, + RequiredAll1014, + ReadonlyAll1014, + NullableAll1014, + TypeNames1014, + Action1014, + AllPerms1014, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts new file mode 100644 index 00000000..7bbde5be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-15 (seed 1015) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1015 { + a1015: { x: number; y: string; z: boolean }; + b1015: { p: string[]; q: Record }; + c1015: { nested: { deep: { deeper: { deepest: string } } } }; + d1015: number; + e1015: string; + f1015: boolean; + g1015: null; + h1015: undefined; + i1015: bigint; + j1015: symbol; +} + +type PartialBig1015 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1015 = T extends Array ? Flatten1015 : T; +type Nested1015 = number[][][][][][][][][][]; +type Flat1015 = Flatten1015; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1015 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1015 : T[K]; +}; +type DeepRequired1015 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1015 : T[K]; +}; +type FR1015 = DeepReadonly1015>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1015 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1015 = Extract; +type ExcludeZulu1015 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1015 { width: number; height: number; depth: number } +interface ShapeB1015 { color: string; opacity: number; blend: string } +interface ShapeC1015 { x: number; y: number; z: number; w: number } +interface ShapeD1015 { label: string; title: string; summary: string } + +type Combined1015 = ShapeA1015 & ShapeB1015 & ShapeC1015 & ShapeD1015; +type OptionalAll1015 = { [K in keyof Combined1015]?: Combined1015[K] }; +type RequiredAll1015 = { [K in keyof Combined1015]-?: Combined1015[K] }; +type ReadonlyAll1015 = { readonly [K in keyof Combined1015]: Combined1015[K] }; +type NullableAll1015 = { [K in keyof Combined1015]: Combined1015[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1015 = T extends string ? true : false; +type IsNumber1015 = T extends number ? true : false; +type TypeName1015 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1015 = { + [K in keyof BigRecord1015]: TypeName1015; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1015 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1015 = "user" | "post" | "comment" | "tag" | "category"; +type Action1015 = `${Verb1015}_${Resource1015}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1015 = T extends Promise ? UnwrapPromise1015 : T; +type UnwrapArray1015 = T extends (infer U)[] ? UnwrapArray1015 : T; +type Head1015 = T extends [infer H, ...infer _] ? H : never; +type Tail1015 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1015 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1015>] + : never; + +type SmallUnion1015 = "a" | "b" | "c" | "d"; +type AllPerms1015 = Permutation1015; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1015, + Flat1015, + FR1015, + BigUnion1015, + ExtractAlpha1015, + ExcludeZulu1015, + OptionalAll1015, + RequiredAll1015, + ReadonlyAll1015, + NullableAll1015, + TypeNames1015, + Action1015, + AllPerms1015, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts new file mode 100644 index 00000000..3419bdfc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-16 (seed 1016) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1016 { + a1016: { x: number; y: string; z: boolean }; + b1016: { p: string[]; q: Record }; + c1016: { nested: { deep: { deeper: { deepest: string } } } }; + d1016: number; + e1016: string; + f1016: boolean; + g1016: null; + h1016: undefined; + i1016: bigint; + j1016: symbol; +} + +type PartialBig1016 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1016 = T extends Array ? Flatten1016 : T; +type Nested1016 = number[][][][][][][][][][]; +type Flat1016 = Flatten1016; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1016 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1016 : T[K]; +}; +type DeepRequired1016 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1016 : T[K]; +}; +type FR1016 = DeepReadonly1016>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1016 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1016 = Extract; +type ExcludeZulu1016 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1016 { width: number; height: number; depth: number } +interface ShapeB1016 { color: string; opacity: number; blend: string } +interface ShapeC1016 { x: number; y: number; z: number; w: number } +interface ShapeD1016 { label: string; title: string; summary: string } + +type Combined1016 = ShapeA1016 & ShapeB1016 & ShapeC1016 & ShapeD1016; +type OptionalAll1016 = { [K in keyof Combined1016]?: Combined1016[K] }; +type RequiredAll1016 = { [K in keyof Combined1016]-?: Combined1016[K] }; +type ReadonlyAll1016 = { readonly [K in keyof Combined1016]: Combined1016[K] }; +type NullableAll1016 = { [K in keyof Combined1016]: Combined1016[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1016 = T extends string ? true : false; +type IsNumber1016 = T extends number ? true : false; +type TypeName1016 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1016 = { + [K in keyof BigRecord1016]: TypeName1016; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1016 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1016 = "user" | "post" | "comment" | "tag" | "category"; +type Action1016 = `${Verb1016}_${Resource1016}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1016 = T extends Promise ? UnwrapPromise1016 : T; +type UnwrapArray1016 = T extends (infer U)[] ? UnwrapArray1016 : T; +type Head1016 = T extends [infer H, ...infer _] ? H : never; +type Tail1016 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1016 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1016>] + : never; + +type SmallUnion1016 = "a" | "b" | "c" | "d"; +type AllPerms1016 = Permutation1016; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1016, + Flat1016, + FR1016, + BigUnion1016, + ExtractAlpha1016, + ExcludeZulu1016, + OptionalAll1016, + RequiredAll1016, + ReadonlyAll1016, + NullableAll1016, + TypeNames1016, + Action1016, + AllPerms1016, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts new file mode 100644 index 00000000..cf7e21de --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-17 (seed 1017) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1017 { + a1017: { x: number; y: string; z: boolean }; + b1017: { p: string[]; q: Record }; + c1017: { nested: { deep: { deeper: { deepest: string } } } }; + d1017: number; + e1017: string; + f1017: boolean; + g1017: null; + h1017: undefined; + i1017: bigint; + j1017: symbol; +} + +type PartialBig1017 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1017 = T extends Array ? Flatten1017 : T; +type Nested1017 = number[][][][][][][][][][]; +type Flat1017 = Flatten1017; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1017 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1017 : T[K]; +}; +type DeepRequired1017 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1017 : T[K]; +}; +type FR1017 = DeepReadonly1017>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1017 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1017 = Extract; +type ExcludeZulu1017 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1017 { width: number; height: number; depth: number } +interface ShapeB1017 { color: string; opacity: number; blend: string } +interface ShapeC1017 { x: number; y: number; z: number; w: number } +interface ShapeD1017 { label: string; title: string; summary: string } + +type Combined1017 = ShapeA1017 & ShapeB1017 & ShapeC1017 & ShapeD1017; +type OptionalAll1017 = { [K in keyof Combined1017]?: Combined1017[K] }; +type RequiredAll1017 = { [K in keyof Combined1017]-?: Combined1017[K] }; +type ReadonlyAll1017 = { readonly [K in keyof Combined1017]: Combined1017[K] }; +type NullableAll1017 = { [K in keyof Combined1017]: Combined1017[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1017 = T extends string ? true : false; +type IsNumber1017 = T extends number ? true : false; +type TypeName1017 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1017 = { + [K in keyof BigRecord1017]: TypeName1017; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1017 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1017 = "user" | "post" | "comment" | "tag" | "category"; +type Action1017 = `${Verb1017}_${Resource1017}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1017 = T extends Promise ? UnwrapPromise1017 : T; +type UnwrapArray1017 = T extends (infer U)[] ? UnwrapArray1017 : T; +type Head1017 = T extends [infer H, ...infer _] ? H : never; +type Tail1017 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1017 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1017>] + : never; + +type SmallUnion1017 = "a" | "b" | "c" | "d"; +type AllPerms1017 = Permutation1017; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1017, + Flat1017, + FR1017, + BigUnion1017, + ExtractAlpha1017, + ExcludeZulu1017, + OptionalAll1017, + RequiredAll1017, + ReadonlyAll1017, + NullableAll1017, + TypeNames1017, + Action1017, + AllPerms1017, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts new file mode 100644 index 00000000..13cd371b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-18 (seed 1018) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1018 { + a1018: { x: number; y: string; z: boolean }; + b1018: { p: string[]; q: Record }; + c1018: { nested: { deep: { deeper: { deepest: string } } } }; + d1018: number; + e1018: string; + f1018: boolean; + g1018: null; + h1018: undefined; + i1018: bigint; + j1018: symbol; +} + +type PartialBig1018 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1018 = T extends Array ? Flatten1018 : T; +type Nested1018 = number[][][][][][][][][][]; +type Flat1018 = Flatten1018; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1018 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1018 : T[K]; +}; +type DeepRequired1018 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1018 : T[K]; +}; +type FR1018 = DeepReadonly1018>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1018 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1018 = Extract; +type ExcludeZulu1018 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1018 { width: number; height: number; depth: number } +interface ShapeB1018 { color: string; opacity: number; blend: string } +interface ShapeC1018 { x: number; y: number; z: number; w: number } +interface ShapeD1018 { label: string; title: string; summary: string } + +type Combined1018 = ShapeA1018 & ShapeB1018 & ShapeC1018 & ShapeD1018; +type OptionalAll1018 = { [K in keyof Combined1018]?: Combined1018[K] }; +type RequiredAll1018 = { [K in keyof Combined1018]-?: Combined1018[K] }; +type ReadonlyAll1018 = { readonly [K in keyof Combined1018]: Combined1018[K] }; +type NullableAll1018 = { [K in keyof Combined1018]: Combined1018[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1018 = T extends string ? true : false; +type IsNumber1018 = T extends number ? true : false; +type TypeName1018 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1018 = { + [K in keyof BigRecord1018]: TypeName1018; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1018 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1018 = "user" | "post" | "comment" | "tag" | "category"; +type Action1018 = `${Verb1018}_${Resource1018}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1018 = T extends Promise ? UnwrapPromise1018 : T; +type UnwrapArray1018 = T extends (infer U)[] ? UnwrapArray1018 : T; +type Head1018 = T extends [infer H, ...infer _] ? H : never; +type Tail1018 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1018 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1018>] + : never; + +type SmallUnion1018 = "a" | "b" | "c" | "d"; +type AllPerms1018 = Permutation1018; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1018, + Flat1018, + FR1018, + BigUnion1018, + ExtractAlpha1018, + ExcludeZulu1018, + OptionalAll1018, + RequiredAll1018, + ReadonlyAll1018, + NullableAll1018, + TypeNames1018, + Action1018, + AllPerms1018, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts new file mode 100644 index 00000000..03b59b7d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-19 (seed 1019) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1019 { + a1019: { x: number; y: string; z: boolean }; + b1019: { p: string[]; q: Record }; + c1019: { nested: { deep: { deeper: { deepest: string } } } }; + d1019: number; + e1019: string; + f1019: boolean; + g1019: null; + h1019: undefined; + i1019: bigint; + j1019: symbol; +} + +type PartialBig1019 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1019 = T extends Array ? Flatten1019 : T; +type Nested1019 = number[][][][][][][][][][]; +type Flat1019 = Flatten1019; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1019 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1019 : T[K]; +}; +type DeepRequired1019 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1019 : T[K]; +}; +type FR1019 = DeepReadonly1019>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1019 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1019 = Extract; +type ExcludeZulu1019 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1019 { width: number; height: number; depth: number } +interface ShapeB1019 { color: string; opacity: number; blend: string } +interface ShapeC1019 { x: number; y: number; z: number; w: number } +interface ShapeD1019 { label: string; title: string; summary: string } + +type Combined1019 = ShapeA1019 & ShapeB1019 & ShapeC1019 & ShapeD1019; +type OptionalAll1019 = { [K in keyof Combined1019]?: Combined1019[K] }; +type RequiredAll1019 = { [K in keyof Combined1019]-?: Combined1019[K] }; +type ReadonlyAll1019 = { readonly [K in keyof Combined1019]: Combined1019[K] }; +type NullableAll1019 = { [K in keyof Combined1019]: Combined1019[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1019 = T extends string ? true : false; +type IsNumber1019 = T extends number ? true : false; +type TypeName1019 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1019 = { + [K in keyof BigRecord1019]: TypeName1019; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1019 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1019 = "user" | "post" | "comment" | "tag" | "category"; +type Action1019 = `${Verb1019}_${Resource1019}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1019 = T extends Promise ? UnwrapPromise1019 : T; +type UnwrapArray1019 = T extends (infer U)[] ? UnwrapArray1019 : T; +type Head1019 = T extends [infer H, ...infer _] ? H : never; +type Tail1019 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1019 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1019>] + : never; + +type SmallUnion1019 = "a" | "b" | "c" | "d"; +type AllPerms1019 = Permutation1019; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1019, + Flat1019, + FR1019, + BigUnion1019, + ExtractAlpha1019, + ExcludeZulu1019, + OptionalAll1019, + RequiredAll1019, + ReadonlyAll1019, + NullableAll1019, + TypeNames1019, + Action1019, + AllPerms1019, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts new file mode 100644 index 00000000..7d230a50 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-20 (seed 1020) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1020 { + a1020: { x: number; y: string; z: boolean }; + b1020: { p: string[]; q: Record }; + c1020: { nested: { deep: { deeper: { deepest: string } } } }; + d1020: number; + e1020: string; + f1020: boolean; + g1020: null; + h1020: undefined; + i1020: bigint; + j1020: symbol; +} + +type PartialBig1020 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1020 = T extends Array ? Flatten1020 : T; +type Nested1020 = number[][][][][][][][][][]; +type Flat1020 = Flatten1020; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1020 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1020 : T[K]; +}; +type DeepRequired1020 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1020 : T[K]; +}; +type FR1020 = DeepReadonly1020>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1020 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1020 = Extract; +type ExcludeZulu1020 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1020 { width: number; height: number; depth: number } +interface ShapeB1020 { color: string; opacity: number; blend: string } +interface ShapeC1020 { x: number; y: number; z: number; w: number } +interface ShapeD1020 { label: string; title: string; summary: string } + +type Combined1020 = ShapeA1020 & ShapeB1020 & ShapeC1020 & ShapeD1020; +type OptionalAll1020 = { [K in keyof Combined1020]?: Combined1020[K] }; +type RequiredAll1020 = { [K in keyof Combined1020]-?: Combined1020[K] }; +type ReadonlyAll1020 = { readonly [K in keyof Combined1020]: Combined1020[K] }; +type NullableAll1020 = { [K in keyof Combined1020]: Combined1020[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1020 = T extends string ? true : false; +type IsNumber1020 = T extends number ? true : false; +type TypeName1020 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1020 = { + [K in keyof BigRecord1020]: TypeName1020; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1020 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1020 = "user" | "post" | "comment" | "tag" | "category"; +type Action1020 = `${Verb1020}_${Resource1020}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1020 = T extends Promise ? UnwrapPromise1020 : T; +type UnwrapArray1020 = T extends (infer U)[] ? UnwrapArray1020 : T; +type Head1020 = T extends [infer H, ...infer _] ? H : never; +type Tail1020 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1020 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1020>] + : never; + +type SmallUnion1020 = "a" | "b" | "c" | "d"; +type AllPerms1020 = Permutation1020; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1020, + Flat1020, + FR1020, + BigUnion1020, + ExtractAlpha1020, + ExcludeZulu1020, + OptionalAll1020, + RequiredAll1020, + ReadonlyAll1020, + NullableAll1020, + TypeNames1020, + Action1020, + AllPerms1020, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts new file mode 100644 index 00000000..077a9269 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-21 (seed 1021) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1021 { + a1021: { x: number; y: string; z: boolean }; + b1021: { p: string[]; q: Record }; + c1021: { nested: { deep: { deeper: { deepest: string } } } }; + d1021: number; + e1021: string; + f1021: boolean; + g1021: null; + h1021: undefined; + i1021: bigint; + j1021: symbol; +} + +type PartialBig1021 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1021 = T extends Array ? Flatten1021 : T; +type Nested1021 = number[][][][][][][][][][]; +type Flat1021 = Flatten1021; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1021 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1021 : T[K]; +}; +type DeepRequired1021 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1021 : T[K]; +}; +type FR1021 = DeepReadonly1021>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1021 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1021 = Extract; +type ExcludeZulu1021 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1021 { width: number; height: number; depth: number } +interface ShapeB1021 { color: string; opacity: number; blend: string } +interface ShapeC1021 { x: number; y: number; z: number; w: number } +interface ShapeD1021 { label: string; title: string; summary: string } + +type Combined1021 = ShapeA1021 & ShapeB1021 & ShapeC1021 & ShapeD1021; +type OptionalAll1021 = { [K in keyof Combined1021]?: Combined1021[K] }; +type RequiredAll1021 = { [K in keyof Combined1021]-?: Combined1021[K] }; +type ReadonlyAll1021 = { readonly [K in keyof Combined1021]: Combined1021[K] }; +type NullableAll1021 = { [K in keyof Combined1021]: Combined1021[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1021 = T extends string ? true : false; +type IsNumber1021 = T extends number ? true : false; +type TypeName1021 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1021 = { + [K in keyof BigRecord1021]: TypeName1021; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1021 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1021 = "user" | "post" | "comment" | "tag" | "category"; +type Action1021 = `${Verb1021}_${Resource1021}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1021 = T extends Promise ? UnwrapPromise1021 : T; +type UnwrapArray1021 = T extends (infer U)[] ? UnwrapArray1021 : T; +type Head1021 = T extends [infer H, ...infer _] ? H : never; +type Tail1021 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1021 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1021>] + : never; + +type SmallUnion1021 = "a" | "b" | "c" | "d"; +type AllPerms1021 = Permutation1021; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1021, + Flat1021, + FR1021, + BigUnion1021, + ExtractAlpha1021, + ExcludeZulu1021, + OptionalAll1021, + RequiredAll1021, + ReadonlyAll1021, + NullableAll1021, + TypeNames1021, + Action1021, + AllPerms1021, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts new file mode 100644 index 00000000..e3072deb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-22 (seed 1022) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1022 { + a1022: { x: number; y: string; z: boolean }; + b1022: { p: string[]; q: Record }; + c1022: { nested: { deep: { deeper: { deepest: string } } } }; + d1022: number; + e1022: string; + f1022: boolean; + g1022: null; + h1022: undefined; + i1022: bigint; + j1022: symbol; +} + +type PartialBig1022 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1022 = T extends Array ? Flatten1022 : T; +type Nested1022 = number[][][][][][][][][][]; +type Flat1022 = Flatten1022; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1022 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1022 : T[K]; +}; +type DeepRequired1022 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1022 : T[K]; +}; +type FR1022 = DeepReadonly1022>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1022 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1022 = Extract; +type ExcludeZulu1022 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1022 { width: number; height: number; depth: number } +interface ShapeB1022 { color: string; opacity: number; blend: string } +interface ShapeC1022 { x: number; y: number; z: number; w: number } +interface ShapeD1022 { label: string; title: string; summary: string } + +type Combined1022 = ShapeA1022 & ShapeB1022 & ShapeC1022 & ShapeD1022; +type OptionalAll1022 = { [K in keyof Combined1022]?: Combined1022[K] }; +type RequiredAll1022 = { [K in keyof Combined1022]-?: Combined1022[K] }; +type ReadonlyAll1022 = { readonly [K in keyof Combined1022]: Combined1022[K] }; +type NullableAll1022 = { [K in keyof Combined1022]: Combined1022[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1022 = T extends string ? true : false; +type IsNumber1022 = T extends number ? true : false; +type TypeName1022 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1022 = { + [K in keyof BigRecord1022]: TypeName1022; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1022 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1022 = "user" | "post" | "comment" | "tag" | "category"; +type Action1022 = `${Verb1022}_${Resource1022}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1022 = T extends Promise ? UnwrapPromise1022 : T; +type UnwrapArray1022 = T extends (infer U)[] ? UnwrapArray1022 : T; +type Head1022 = T extends [infer H, ...infer _] ? H : never; +type Tail1022 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1022 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1022>] + : never; + +type SmallUnion1022 = "a" | "b" | "c" | "d"; +type AllPerms1022 = Permutation1022; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1022, + Flat1022, + FR1022, + BigUnion1022, + ExtractAlpha1022, + ExcludeZulu1022, + OptionalAll1022, + RequiredAll1022, + ReadonlyAll1022, + NullableAll1022, + TypeNames1022, + Action1022, + AllPerms1022, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts new file mode 100644 index 00000000..266a9bff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-23 (seed 1023) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1023 { + a1023: { x: number; y: string; z: boolean }; + b1023: { p: string[]; q: Record }; + c1023: { nested: { deep: { deeper: { deepest: string } } } }; + d1023: number; + e1023: string; + f1023: boolean; + g1023: null; + h1023: undefined; + i1023: bigint; + j1023: symbol; +} + +type PartialBig1023 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1023 = T extends Array ? Flatten1023 : T; +type Nested1023 = number[][][][][][][][][][]; +type Flat1023 = Flatten1023; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1023 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1023 : T[K]; +}; +type DeepRequired1023 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1023 : T[K]; +}; +type FR1023 = DeepReadonly1023>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1023 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1023 = Extract; +type ExcludeZulu1023 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1023 { width: number; height: number; depth: number } +interface ShapeB1023 { color: string; opacity: number; blend: string } +interface ShapeC1023 { x: number; y: number; z: number; w: number } +interface ShapeD1023 { label: string; title: string; summary: string } + +type Combined1023 = ShapeA1023 & ShapeB1023 & ShapeC1023 & ShapeD1023; +type OptionalAll1023 = { [K in keyof Combined1023]?: Combined1023[K] }; +type RequiredAll1023 = { [K in keyof Combined1023]-?: Combined1023[K] }; +type ReadonlyAll1023 = { readonly [K in keyof Combined1023]: Combined1023[K] }; +type NullableAll1023 = { [K in keyof Combined1023]: Combined1023[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1023 = T extends string ? true : false; +type IsNumber1023 = T extends number ? true : false; +type TypeName1023 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1023 = { + [K in keyof BigRecord1023]: TypeName1023; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1023 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1023 = "user" | "post" | "comment" | "tag" | "category"; +type Action1023 = `${Verb1023}_${Resource1023}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1023 = T extends Promise ? UnwrapPromise1023 : T; +type UnwrapArray1023 = T extends (infer U)[] ? UnwrapArray1023 : T; +type Head1023 = T extends [infer H, ...infer _] ? H : never; +type Tail1023 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1023 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1023>] + : never; + +type SmallUnion1023 = "a" | "b" | "c" | "d"; +type AllPerms1023 = Permutation1023; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1023, + Flat1023, + FR1023, + BigUnion1023, + ExtractAlpha1023, + ExcludeZulu1023, + OptionalAll1023, + RequiredAll1023, + ReadonlyAll1023, + NullableAll1023, + TypeNames1023, + Action1023, + AllPerms1023, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts new file mode 100644 index 00000000..30fcfcca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-24 (seed 1024) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1024 { + a1024: { x: number; y: string; z: boolean }; + b1024: { p: string[]; q: Record }; + c1024: { nested: { deep: { deeper: { deepest: string } } } }; + d1024: number; + e1024: string; + f1024: boolean; + g1024: null; + h1024: undefined; + i1024: bigint; + j1024: symbol; +} + +type PartialBig1024 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1024 = T extends Array ? Flatten1024 : T; +type Nested1024 = number[][][][][][][][][][]; +type Flat1024 = Flatten1024; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1024 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1024 : T[K]; +}; +type DeepRequired1024 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1024 : T[K]; +}; +type FR1024 = DeepReadonly1024>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1024 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1024 = Extract; +type ExcludeZulu1024 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1024 { width: number; height: number; depth: number } +interface ShapeB1024 { color: string; opacity: number; blend: string } +interface ShapeC1024 { x: number; y: number; z: number; w: number } +interface ShapeD1024 { label: string; title: string; summary: string } + +type Combined1024 = ShapeA1024 & ShapeB1024 & ShapeC1024 & ShapeD1024; +type OptionalAll1024 = { [K in keyof Combined1024]?: Combined1024[K] }; +type RequiredAll1024 = { [K in keyof Combined1024]-?: Combined1024[K] }; +type ReadonlyAll1024 = { readonly [K in keyof Combined1024]: Combined1024[K] }; +type NullableAll1024 = { [K in keyof Combined1024]: Combined1024[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1024 = T extends string ? true : false; +type IsNumber1024 = T extends number ? true : false; +type TypeName1024 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1024 = { + [K in keyof BigRecord1024]: TypeName1024; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1024 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1024 = "user" | "post" | "comment" | "tag" | "category"; +type Action1024 = `${Verb1024}_${Resource1024}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1024 = T extends Promise ? UnwrapPromise1024 : T; +type UnwrapArray1024 = T extends (infer U)[] ? UnwrapArray1024 : T; +type Head1024 = T extends [infer H, ...infer _] ? H : never; +type Tail1024 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1024 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1024>] + : never; + +type SmallUnion1024 = "a" | "b" | "c" | "d"; +type AllPerms1024 = Permutation1024; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1024, + Flat1024, + FR1024, + BigUnion1024, + ExtractAlpha1024, + ExcludeZulu1024, + OptionalAll1024, + RequiredAll1024, + ReadonlyAll1024, + NullableAll1024, + TypeNames1024, + Action1024, + AllPerms1024, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts new file mode 100644 index 00000000..1f8c7458 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-25 (seed 1025) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1025 { + a1025: { x: number; y: string; z: boolean }; + b1025: { p: string[]; q: Record }; + c1025: { nested: { deep: { deeper: { deepest: string } } } }; + d1025: number; + e1025: string; + f1025: boolean; + g1025: null; + h1025: undefined; + i1025: bigint; + j1025: symbol; +} + +type PartialBig1025 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1025 = T extends Array ? Flatten1025 : T; +type Nested1025 = number[][][][][][][][][][]; +type Flat1025 = Flatten1025; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1025 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1025 : T[K]; +}; +type DeepRequired1025 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1025 : T[K]; +}; +type FR1025 = DeepReadonly1025>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1025 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1025 = Extract; +type ExcludeZulu1025 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1025 { width: number; height: number; depth: number } +interface ShapeB1025 { color: string; opacity: number; blend: string } +interface ShapeC1025 { x: number; y: number; z: number; w: number } +interface ShapeD1025 { label: string; title: string; summary: string } + +type Combined1025 = ShapeA1025 & ShapeB1025 & ShapeC1025 & ShapeD1025; +type OptionalAll1025 = { [K in keyof Combined1025]?: Combined1025[K] }; +type RequiredAll1025 = { [K in keyof Combined1025]-?: Combined1025[K] }; +type ReadonlyAll1025 = { readonly [K in keyof Combined1025]: Combined1025[K] }; +type NullableAll1025 = { [K in keyof Combined1025]: Combined1025[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1025 = T extends string ? true : false; +type IsNumber1025 = T extends number ? true : false; +type TypeName1025 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1025 = { + [K in keyof BigRecord1025]: TypeName1025; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1025 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1025 = "user" | "post" | "comment" | "tag" | "category"; +type Action1025 = `${Verb1025}_${Resource1025}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1025 = T extends Promise ? UnwrapPromise1025 : T; +type UnwrapArray1025 = T extends (infer U)[] ? UnwrapArray1025 : T; +type Head1025 = T extends [infer H, ...infer _] ? H : never; +type Tail1025 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1025 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1025>] + : never; + +type SmallUnion1025 = "a" | "b" | "c" | "d"; +type AllPerms1025 = Permutation1025; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1025, + Flat1025, + FR1025, + BigUnion1025, + ExtractAlpha1025, + ExcludeZulu1025, + OptionalAll1025, + RequiredAll1025, + ReadonlyAll1025, + NullableAll1025, + TypeNames1025, + Action1025, + AllPerms1025, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts new file mode 100644 index 00000000..9bd47312 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-26 (seed 1026) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1026 { + a1026: { x: number; y: string; z: boolean }; + b1026: { p: string[]; q: Record }; + c1026: { nested: { deep: { deeper: { deepest: string } } } }; + d1026: number; + e1026: string; + f1026: boolean; + g1026: null; + h1026: undefined; + i1026: bigint; + j1026: symbol; +} + +type PartialBig1026 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1026 = T extends Array ? Flatten1026 : T; +type Nested1026 = number[][][][][][][][][][]; +type Flat1026 = Flatten1026; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1026 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1026 : T[K]; +}; +type DeepRequired1026 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1026 : T[K]; +}; +type FR1026 = DeepReadonly1026>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1026 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1026 = Extract; +type ExcludeZulu1026 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1026 { width: number; height: number; depth: number } +interface ShapeB1026 { color: string; opacity: number; blend: string } +interface ShapeC1026 { x: number; y: number; z: number; w: number } +interface ShapeD1026 { label: string; title: string; summary: string } + +type Combined1026 = ShapeA1026 & ShapeB1026 & ShapeC1026 & ShapeD1026; +type OptionalAll1026 = { [K in keyof Combined1026]?: Combined1026[K] }; +type RequiredAll1026 = { [K in keyof Combined1026]-?: Combined1026[K] }; +type ReadonlyAll1026 = { readonly [K in keyof Combined1026]: Combined1026[K] }; +type NullableAll1026 = { [K in keyof Combined1026]: Combined1026[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1026 = T extends string ? true : false; +type IsNumber1026 = T extends number ? true : false; +type TypeName1026 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1026 = { + [K in keyof BigRecord1026]: TypeName1026; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1026 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1026 = "user" | "post" | "comment" | "tag" | "category"; +type Action1026 = `${Verb1026}_${Resource1026}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1026 = T extends Promise ? UnwrapPromise1026 : T; +type UnwrapArray1026 = T extends (infer U)[] ? UnwrapArray1026 : T; +type Head1026 = T extends [infer H, ...infer _] ? H : never; +type Tail1026 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1026 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1026>] + : never; + +type SmallUnion1026 = "a" | "b" | "c" | "d"; +type AllPerms1026 = Permutation1026; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1026, + Flat1026, + FR1026, + BigUnion1026, + ExtractAlpha1026, + ExcludeZulu1026, + OptionalAll1026, + RequiredAll1026, + ReadonlyAll1026, + NullableAll1026, + TypeNames1026, + Action1026, + AllPerms1026, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts new file mode 100644 index 00000000..9fc9b605 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-27 (seed 1027) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1027 { + a1027: { x: number; y: string; z: boolean }; + b1027: { p: string[]; q: Record }; + c1027: { nested: { deep: { deeper: { deepest: string } } } }; + d1027: number; + e1027: string; + f1027: boolean; + g1027: null; + h1027: undefined; + i1027: bigint; + j1027: symbol; +} + +type PartialBig1027 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1027 = T extends Array ? Flatten1027 : T; +type Nested1027 = number[][][][][][][][][][]; +type Flat1027 = Flatten1027; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1027 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1027 : T[K]; +}; +type DeepRequired1027 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1027 : T[K]; +}; +type FR1027 = DeepReadonly1027>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1027 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1027 = Extract; +type ExcludeZulu1027 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1027 { width: number; height: number; depth: number } +interface ShapeB1027 { color: string; opacity: number; blend: string } +interface ShapeC1027 { x: number; y: number; z: number; w: number } +interface ShapeD1027 { label: string; title: string; summary: string } + +type Combined1027 = ShapeA1027 & ShapeB1027 & ShapeC1027 & ShapeD1027; +type OptionalAll1027 = { [K in keyof Combined1027]?: Combined1027[K] }; +type RequiredAll1027 = { [K in keyof Combined1027]-?: Combined1027[K] }; +type ReadonlyAll1027 = { readonly [K in keyof Combined1027]: Combined1027[K] }; +type NullableAll1027 = { [K in keyof Combined1027]: Combined1027[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1027 = T extends string ? true : false; +type IsNumber1027 = T extends number ? true : false; +type TypeName1027 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1027 = { + [K in keyof BigRecord1027]: TypeName1027; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1027 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1027 = "user" | "post" | "comment" | "tag" | "category"; +type Action1027 = `${Verb1027}_${Resource1027}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1027 = T extends Promise ? UnwrapPromise1027 : T; +type UnwrapArray1027 = T extends (infer U)[] ? UnwrapArray1027 : T; +type Head1027 = T extends [infer H, ...infer _] ? H : never; +type Tail1027 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1027 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1027>] + : never; + +type SmallUnion1027 = "a" | "b" | "c" | "d"; +type AllPerms1027 = Permutation1027; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1027, + Flat1027, + FR1027, + BigUnion1027, + ExtractAlpha1027, + ExcludeZulu1027, + OptionalAll1027, + RequiredAll1027, + ReadonlyAll1027, + NullableAll1027, + TypeNames1027, + Action1027, + AllPerms1027, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts new file mode 100644 index 00000000..8cc45889 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-28 (seed 1028) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1028 { + a1028: { x: number; y: string; z: boolean }; + b1028: { p: string[]; q: Record }; + c1028: { nested: { deep: { deeper: { deepest: string } } } }; + d1028: number; + e1028: string; + f1028: boolean; + g1028: null; + h1028: undefined; + i1028: bigint; + j1028: symbol; +} + +type PartialBig1028 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1028 = T extends Array ? Flatten1028 : T; +type Nested1028 = number[][][][][][][][][][]; +type Flat1028 = Flatten1028; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1028 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1028 : T[K]; +}; +type DeepRequired1028 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1028 : T[K]; +}; +type FR1028 = DeepReadonly1028>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1028 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1028 = Extract; +type ExcludeZulu1028 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1028 { width: number; height: number; depth: number } +interface ShapeB1028 { color: string; opacity: number; blend: string } +interface ShapeC1028 { x: number; y: number; z: number; w: number } +interface ShapeD1028 { label: string; title: string; summary: string } + +type Combined1028 = ShapeA1028 & ShapeB1028 & ShapeC1028 & ShapeD1028; +type OptionalAll1028 = { [K in keyof Combined1028]?: Combined1028[K] }; +type RequiredAll1028 = { [K in keyof Combined1028]-?: Combined1028[K] }; +type ReadonlyAll1028 = { readonly [K in keyof Combined1028]: Combined1028[K] }; +type NullableAll1028 = { [K in keyof Combined1028]: Combined1028[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1028 = T extends string ? true : false; +type IsNumber1028 = T extends number ? true : false; +type TypeName1028 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1028 = { + [K in keyof BigRecord1028]: TypeName1028; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1028 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1028 = "user" | "post" | "comment" | "tag" | "category"; +type Action1028 = `${Verb1028}_${Resource1028}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1028 = T extends Promise ? UnwrapPromise1028 : T; +type UnwrapArray1028 = T extends (infer U)[] ? UnwrapArray1028 : T; +type Head1028 = T extends [infer H, ...infer _] ? H : never; +type Tail1028 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1028 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1028>] + : never; + +type SmallUnion1028 = "a" | "b" | "c" | "d"; +type AllPerms1028 = Permutation1028; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1028, + Flat1028, + FR1028, + BigUnion1028, + ExtractAlpha1028, + ExcludeZulu1028, + OptionalAll1028, + RequiredAll1028, + ReadonlyAll1028, + NullableAll1028, + TypeNames1028, + Action1028, + AllPerms1028, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts new file mode 100644 index 00000000..773b2eba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-29 (seed 1029) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1029 { + a1029: { x: number; y: string; z: boolean }; + b1029: { p: string[]; q: Record }; + c1029: { nested: { deep: { deeper: { deepest: string } } } }; + d1029: number; + e1029: string; + f1029: boolean; + g1029: null; + h1029: undefined; + i1029: bigint; + j1029: symbol; +} + +type PartialBig1029 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1029 = T extends Array ? Flatten1029 : T; +type Nested1029 = number[][][][][][][][][][]; +type Flat1029 = Flatten1029; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1029 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1029 : T[K]; +}; +type DeepRequired1029 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1029 : T[K]; +}; +type FR1029 = DeepReadonly1029>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1029 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1029 = Extract; +type ExcludeZulu1029 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1029 { width: number; height: number; depth: number } +interface ShapeB1029 { color: string; opacity: number; blend: string } +interface ShapeC1029 { x: number; y: number; z: number; w: number } +interface ShapeD1029 { label: string; title: string; summary: string } + +type Combined1029 = ShapeA1029 & ShapeB1029 & ShapeC1029 & ShapeD1029; +type OptionalAll1029 = { [K in keyof Combined1029]?: Combined1029[K] }; +type RequiredAll1029 = { [K in keyof Combined1029]-?: Combined1029[K] }; +type ReadonlyAll1029 = { readonly [K in keyof Combined1029]: Combined1029[K] }; +type NullableAll1029 = { [K in keyof Combined1029]: Combined1029[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1029 = T extends string ? true : false; +type IsNumber1029 = T extends number ? true : false; +type TypeName1029 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1029 = { + [K in keyof BigRecord1029]: TypeName1029; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1029 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1029 = "user" | "post" | "comment" | "tag" | "category"; +type Action1029 = `${Verb1029}_${Resource1029}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1029 = T extends Promise ? UnwrapPromise1029 : T; +type UnwrapArray1029 = T extends (infer U)[] ? UnwrapArray1029 : T; +type Head1029 = T extends [infer H, ...infer _] ? H : never; +type Tail1029 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1029 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1029>] + : never; + +type SmallUnion1029 = "a" | "b" | "c" | "d"; +type AllPerms1029 = Permutation1029; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1029, + Flat1029, + FR1029, + BigUnion1029, + ExtractAlpha1029, + ExcludeZulu1029, + OptionalAll1029, + RequiredAll1029, + ReadonlyAll1029, + NullableAll1029, + TypeNames1029, + Action1029, + AllPerms1029, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts new file mode 100644 index 00000000..7dc4e4bf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-30 (seed 1030) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1030 { + a1030: { x: number; y: string; z: boolean }; + b1030: { p: string[]; q: Record }; + c1030: { nested: { deep: { deeper: { deepest: string } } } }; + d1030: number; + e1030: string; + f1030: boolean; + g1030: null; + h1030: undefined; + i1030: bigint; + j1030: symbol; +} + +type PartialBig1030 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1030 = T extends Array ? Flatten1030 : T; +type Nested1030 = number[][][][][][][][][][]; +type Flat1030 = Flatten1030; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1030 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1030 : T[K]; +}; +type DeepRequired1030 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1030 : T[K]; +}; +type FR1030 = DeepReadonly1030>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1030 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1030 = Extract; +type ExcludeZulu1030 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1030 { width: number; height: number; depth: number } +interface ShapeB1030 { color: string; opacity: number; blend: string } +interface ShapeC1030 { x: number; y: number; z: number; w: number } +interface ShapeD1030 { label: string; title: string; summary: string } + +type Combined1030 = ShapeA1030 & ShapeB1030 & ShapeC1030 & ShapeD1030; +type OptionalAll1030 = { [K in keyof Combined1030]?: Combined1030[K] }; +type RequiredAll1030 = { [K in keyof Combined1030]-?: Combined1030[K] }; +type ReadonlyAll1030 = { readonly [K in keyof Combined1030]: Combined1030[K] }; +type NullableAll1030 = { [K in keyof Combined1030]: Combined1030[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1030 = T extends string ? true : false; +type IsNumber1030 = T extends number ? true : false; +type TypeName1030 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1030 = { + [K in keyof BigRecord1030]: TypeName1030; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1030 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1030 = "user" | "post" | "comment" | "tag" | "category"; +type Action1030 = `${Verb1030}_${Resource1030}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1030 = T extends Promise ? UnwrapPromise1030 : T; +type UnwrapArray1030 = T extends (infer U)[] ? UnwrapArray1030 : T; +type Head1030 = T extends [infer H, ...infer _] ? H : never; +type Tail1030 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1030 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1030>] + : never; + +type SmallUnion1030 = "a" | "b" | "c" | "d"; +type AllPerms1030 = Permutation1030; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1030, + Flat1030, + FR1030, + BigUnion1030, + ExtractAlpha1030, + ExcludeZulu1030, + OptionalAll1030, + RequiredAll1030, + ReadonlyAll1030, + NullableAll1030, + TypeNames1030, + Action1030, + AllPerms1030, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts new file mode 100644 index 00000000..9aae997c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-31 (seed 1031) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1031 { + a1031: { x: number; y: string; z: boolean }; + b1031: { p: string[]; q: Record }; + c1031: { nested: { deep: { deeper: { deepest: string } } } }; + d1031: number; + e1031: string; + f1031: boolean; + g1031: null; + h1031: undefined; + i1031: bigint; + j1031: symbol; +} + +type PartialBig1031 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1031 = T extends Array ? Flatten1031 : T; +type Nested1031 = number[][][][][][][][][][]; +type Flat1031 = Flatten1031; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1031 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1031 : T[K]; +}; +type DeepRequired1031 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1031 : T[K]; +}; +type FR1031 = DeepReadonly1031>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1031 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1031 = Extract; +type ExcludeZulu1031 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1031 { width: number; height: number; depth: number } +interface ShapeB1031 { color: string; opacity: number; blend: string } +interface ShapeC1031 { x: number; y: number; z: number; w: number } +interface ShapeD1031 { label: string; title: string; summary: string } + +type Combined1031 = ShapeA1031 & ShapeB1031 & ShapeC1031 & ShapeD1031; +type OptionalAll1031 = { [K in keyof Combined1031]?: Combined1031[K] }; +type RequiredAll1031 = { [K in keyof Combined1031]-?: Combined1031[K] }; +type ReadonlyAll1031 = { readonly [K in keyof Combined1031]: Combined1031[K] }; +type NullableAll1031 = { [K in keyof Combined1031]: Combined1031[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1031 = T extends string ? true : false; +type IsNumber1031 = T extends number ? true : false; +type TypeName1031 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1031 = { + [K in keyof BigRecord1031]: TypeName1031; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1031 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1031 = "user" | "post" | "comment" | "tag" | "category"; +type Action1031 = `${Verb1031}_${Resource1031}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1031 = T extends Promise ? UnwrapPromise1031 : T; +type UnwrapArray1031 = T extends (infer U)[] ? UnwrapArray1031 : T; +type Head1031 = T extends [infer H, ...infer _] ? H : never; +type Tail1031 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1031 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1031>] + : never; + +type SmallUnion1031 = "a" | "b" | "c" | "d"; +type AllPerms1031 = Permutation1031; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1031, + Flat1031, + FR1031, + BigUnion1031, + ExtractAlpha1031, + ExcludeZulu1031, + OptionalAll1031, + RequiredAll1031, + ReadonlyAll1031, + NullableAll1031, + TypeNames1031, + Action1031, + AllPerms1031, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts new file mode 100644 index 00000000..c90f4e1b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-32 (seed 1032) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1032 { + a1032: { x: number; y: string; z: boolean }; + b1032: { p: string[]; q: Record }; + c1032: { nested: { deep: { deeper: { deepest: string } } } }; + d1032: number; + e1032: string; + f1032: boolean; + g1032: null; + h1032: undefined; + i1032: bigint; + j1032: symbol; +} + +type PartialBig1032 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1032 = T extends Array ? Flatten1032 : T; +type Nested1032 = number[][][][][][][][][][]; +type Flat1032 = Flatten1032; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1032 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1032 : T[K]; +}; +type DeepRequired1032 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1032 : T[K]; +}; +type FR1032 = DeepReadonly1032>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1032 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1032 = Extract; +type ExcludeZulu1032 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1032 { width: number; height: number; depth: number } +interface ShapeB1032 { color: string; opacity: number; blend: string } +interface ShapeC1032 { x: number; y: number; z: number; w: number } +interface ShapeD1032 { label: string; title: string; summary: string } + +type Combined1032 = ShapeA1032 & ShapeB1032 & ShapeC1032 & ShapeD1032; +type OptionalAll1032 = { [K in keyof Combined1032]?: Combined1032[K] }; +type RequiredAll1032 = { [K in keyof Combined1032]-?: Combined1032[K] }; +type ReadonlyAll1032 = { readonly [K in keyof Combined1032]: Combined1032[K] }; +type NullableAll1032 = { [K in keyof Combined1032]: Combined1032[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1032 = T extends string ? true : false; +type IsNumber1032 = T extends number ? true : false; +type TypeName1032 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1032 = { + [K in keyof BigRecord1032]: TypeName1032; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1032 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1032 = "user" | "post" | "comment" | "tag" | "category"; +type Action1032 = `${Verb1032}_${Resource1032}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1032 = T extends Promise ? UnwrapPromise1032 : T; +type UnwrapArray1032 = T extends (infer U)[] ? UnwrapArray1032 : T; +type Head1032 = T extends [infer H, ...infer _] ? H : never; +type Tail1032 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1032 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1032>] + : never; + +type SmallUnion1032 = "a" | "b" | "c" | "d"; +type AllPerms1032 = Permutation1032; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1032, + Flat1032, + FR1032, + BigUnion1032, + ExtractAlpha1032, + ExcludeZulu1032, + OptionalAll1032, + RequiredAll1032, + ReadonlyAll1032, + NullableAll1032, + TypeNames1032, + Action1032, + AllPerms1032, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts new file mode 100644 index 00000000..20c880d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-33 (seed 1033) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1033 { + a1033: { x: number; y: string; z: boolean }; + b1033: { p: string[]; q: Record }; + c1033: { nested: { deep: { deeper: { deepest: string } } } }; + d1033: number; + e1033: string; + f1033: boolean; + g1033: null; + h1033: undefined; + i1033: bigint; + j1033: symbol; +} + +type PartialBig1033 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1033 = T extends Array ? Flatten1033 : T; +type Nested1033 = number[][][][][][][][][][]; +type Flat1033 = Flatten1033; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1033 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1033 : T[K]; +}; +type DeepRequired1033 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1033 : T[K]; +}; +type FR1033 = DeepReadonly1033>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1033 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1033 = Extract; +type ExcludeZulu1033 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1033 { width: number; height: number; depth: number } +interface ShapeB1033 { color: string; opacity: number; blend: string } +interface ShapeC1033 { x: number; y: number; z: number; w: number } +interface ShapeD1033 { label: string; title: string; summary: string } + +type Combined1033 = ShapeA1033 & ShapeB1033 & ShapeC1033 & ShapeD1033; +type OptionalAll1033 = { [K in keyof Combined1033]?: Combined1033[K] }; +type RequiredAll1033 = { [K in keyof Combined1033]-?: Combined1033[K] }; +type ReadonlyAll1033 = { readonly [K in keyof Combined1033]: Combined1033[K] }; +type NullableAll1033 = { [K in keyof Combined1033]: Combined1033[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1033 = T extends string ? true : false; +type IsNumber1033 = T extends number ? true : false; +type TypeName1033 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1033 = { + [K in keyof BigRecord1033]: TypeName1033; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1033 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1033 = "user" | "post" | "comment" | "tag" | "category"; +type Action1033 = `${Verb1033}_${Resource1033}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1033 = T extends Promise ? UnwrapPromise1033 : T; +type UnwrapArray1033 = T extends (infer U)[] ? UnwrapArray1033 : T; +type Head1033 = T extends [infer H, ...infer _] ? H : never; +type Tail1033 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1033 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1033>] + : never; + +type SmallUnion1033 = "a" | "b" | "c" | "d"; +type AllPerms1033 = Permutation1033; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1033, + Flat1033, + FR1033, + BigUnion1033, + ExtractAlpha1033, + ExcludeZulu1033, + OptionalAll1033, + RequiredAll1033, + ReadonlyAll1033, + NullableAll1033, + TypeNames1033, + Action1033, + AllPerms1033, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts new file mode 100644 index 00000000..a553ca55 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-34 (seed 1034) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1034 { + a1034: { x: number; y: string; z: boolean }; + b1034: { p: string[]; q: Record }; + c1034: { nested: { deep: { deeper: { deepest: string } } } }; + d1034: number; + e1034: string; + f1034: boolean; + g1034: null; + h1034: undefined; + i1034: bigint; + j1034: symbol; +} + +type PartialBig1034 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1034 = T extends Array ? Flatten1034 : T; +type Nested1034 = number[][][][][][][][][][]; +type Flat1034 = Flatten1034; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1034 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1034 : T[K]; +}; +type DeepRequired1034 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1034 : T[K]; +}; +type FR1034 = DeepReadonly1034>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1034 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1034 = Extract; +type ExcludeZulu1034 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1034 { width: number; height: number; depth: number } +interface ShapeB1034 { color: string; opacity: number; blend: string } +interface ShapeC1034 { x: number; y: number; z: number; w: number } +interface ShapeD1034 { label: string; title: string; summary: string } + +type Combined1034 = ShapeA1034 & ShapeB1034 & ShapeC1034 & ShapeD1034; +type OptionalAll1034 = { [K in keyof Combined1034]?: Combined1034[K] }; +type RequiredAll1034 = { [K in keyof Combined1034]-?: Combined1034[K] }; +type ReadonlyAll1034 = { readonly [K in keyof Combined1034]: Combined1034[K] }; +type NullableAll1034 = { [K in keyof Combined1034]: Combined1034[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1034 = T extends string ? true : false; +type IsNumber1034 = T extends number ? true : false; +type TypeName1034 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1034 = { + [K in keyof BigRecord1034]: TypeName1034; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1034 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1034 = "user" | "post" | "comment" | "tag" | "category"; +type Action1034 = `${Verb1034}_${Resource1034}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1034 = T extends Promise ? UnwrapPromise1034 : T; +type UnwrapArray1034 = T extends (infer U)[] ? UnwrapArray1034 : T; +type Head1034 = T extends [infer H, ...infer _] ? H : never; +type Tail1034 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1034 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1034>] + : never; + +type SmallUnion1034 = "a" | "b" | "c" | "d"; +type AllPerms1034 = Permutation1034; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1034, + Flat1034, + FR1034, + BigUnion1034, + ExtractAlpha1034, + ExcludeZulu1034, + OptionalAll1034, + RequiredAll1034, + ReadonlyAll1034, + NullableAll1034, + TypeNames1034, + Action1034, + AllPerms1034, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts new file mode 100644 index 00000000..bbae1e43 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-35 (seed 1035) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1035 { + a1035: { x: number; y: string; z: boolean }; + b1035: { p: string[]; q: Record }; + c1035: { nested: { deep: { deeper: { deepest: string } } } }; + d1035: number; + e1035: string; + f1035: boolean; + g1035: null; + h1035: undefined; + i1035: bigint; + j1035: symbol; +} + +type PartialBig1035 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1035 = T extends Array ? Flatten1035 : T; +type Nested1035 = number[][][][][][][][][][]; +type Flat1035 = Flatten1035; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1035 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1035 : T[K]; +}; +type DeepRequired1035 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1035 : T[K]; +}; +type FR1035 = DeepReadonly1035>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1035 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1035 = Extract; +type ExcludeZulu1035 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1035 { width: number; height: number; depth: number } +interface ShapeB1035 { color: string; opacity: number; blend: string } +interface ShapeC1035 { x: number; y: number; z: number; w: number } +interface ShapeD1035 { label: string; title: string; summary: string } + +type Combined1035 = ShapeA1035 & ShapeB1035 & ShapeC1035 & ShapeD1035; +type OptionalAll1035 = { [K in keyof Combined1035]?: Combined1035[K] }; +type RequiredAll1035 = { [K in keyof Combined1035]-?: Combined1035[K] }; +type ReadonlyAll1035 = { readonly [K in keyof Combined1035]: Combined1035[K] }; +type NullableAll1035 = { [K in keyof Combined1035]: Combined1035[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1035 = T extends string ? true : false; +type IsNumber1035 = T extends number ? true : false; +type TypeName1035 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1035 = { + [K in keyof BigRecord1035]: TypeName1035; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1035 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1035 = "user" | "post" | "comment" | "tag" | "category"; +type Action1035 = `${Verb1035}_${Resource1035}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1035 = T extends Promise ? UnwrapPromise1035 : T; +type UnwrapArray1035 = T extends (infer U)[] ? UnwrapArray1035 : T; +type Head1035 = T extends [infer H, ...infer _] ? H : never; +type Tail1035 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1035 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1035>] + : never; + +type SmallUnion1035 = "a" | "b" | "c" | "d"; +type AllPerms1035 = Permutation1035; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1035, + Flat1035, + FR1035, + BigUnion1035, + ExtractAlpha1035, + ExcludeZulu1035, + OptionalAll1035, + RequiredAll1035, + ReadonlyAll1035, + NullableAll1035, + TypeNames1035, + Action1035, + AllPerms1035, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts new file mode 100644 index 00000000..5b947d9f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-36 (seed 1036) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1036 { + a1036: { x: number; y: string; z: boolean }; + b1036: { p: string[]; q: Record }; + c1036: { nested: { deep: { deeper: { deepest: string } } } }; + d1036: number; + e1036: string; + f1036: boolean; + g1036: null; + h1036: undefined; + i1036: bigint; + j1036: symbol; +} + +type PartialBig1036 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1036 = T extends Array ? Flatten1036 : T; +type Nested1036 = number[][][][][][][][][][]; +type Flat1036 = Flatten1036; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1036 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1036 : T[K]; +}; +type DeepRequired1036 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1036 : T[K]; +}; +type FR1036 = DeepReadonly1036>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1036 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1036 = Extract; +type ExcludeZulu1036 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1036 { width: number; height: number; depth: number } +interface ShapeB1036 { color: string; opacity: number; blend: string } +interface ShapeC1036 { x: number; y: number; z: number; w: number } +interface ShapeD1036 { label: string; title: string; summary: string } + +type Combined1036 = ShapeA1036 & ShapeB1036 & ShapeC1036 & ShapeD1036; +type OptionalAll1036 = { [K in keyof Combined1036]?: Combined1036[K] }; +type RequiredAll1036 = { [K in keyof Combined1036]-?: Combined1036[K] }; +type ReadonlyAll1036 = { readonly [K in keyof Combined1036]: Combined1036[K] }; +type NullableAll1036 = { [K in keyof Combined1036]: Combined1036[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1036 = T extends string ? true : false; +type IsNumber1036 = T extends number ? true : false; +type TypeName1036 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1036 = { + [K in keyof BigRecord1036]: TypeName1036; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1036 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1036 = "user" | "post" | "comment" | "tag" | "category"; +type Action1036 = `${Verb1036}_${Resource1036}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1036 = T extends Promise ? UnwrapPromise1036 : T; +type UnwrapArray1036 = T extends (infer U)[] ? UnwrapArray1036 : T; +type Head1036 = T extends [infer H, ...infer _] ? H : never; +type Tail1036 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1036 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1036>] + : never; + +type SmallUnion1036 = "a" | "b" | "c" | "d"; +type AllPerms1036 = Permutation1036; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1036, + Flat1036, + FR1036, + BigUnion1036, + ExtractAlpha1036, + ExcludeZulu1036, + OptionalAll1036, + RequiredAll1036, + ReadonlyAll1036, + NullableAll1036, + TypeNames1036, + Action1036, + AllPerms1036, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts new file mode 100644 index 00000000..3d20ded1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-37 (seed 1037) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1037 { + a1037: { x: number; y: string; z: boolean }; + b1037: { p: string[]; q: Record }; + c1037: { nested: { deep: { deeper: { deepest: string } } } }; + d1037: number; + e1037: string; + f1037: boolean; + g1037: null; + h1037: undefined; + i1037: bigint; + j1037: symbol; +} + +type PartialBig1037 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1037 = T extends Array ? Flatten1037 : T; +type Nested1037 = number[][][][][][][][][][]; +type Flat1037 = Flatten1037; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1037 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1037 : T[K]; +}; +type DeepRequired1037 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1037 : T[K]; +}; +type FR1037 = DeepReadonly1037>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1037 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1037 = Extract; +type ExcludeZulu1037 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1037 { width: number; height: number; depth: number } +interface ShapeB1037 { color: string; opacity: number; blend: string } +interface ShapeC1037 { x: number; y: number; z: number; w: number } +interface ShapeD1037 { label: string; title: string; summary: string } + +type Combined1037 = ShapeA1037 & ShapeB1037 & ShapeC1037 & ShapeD1037; +type OptionalAll1037 = { [K in keyof Combined1037]?: Combined1037[K] }; +type RequiredAll1037 = { [K in keyof Combined1037]-?: Combined1037[K] }; +type ReadonlyAll1037 = { readonly [K in keyof Combined1037]: Combined1037[K] }; +type NullableAll1037 = { [K in keyof Combined1037]: Combined1037[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1037 = T extends string ? true : false; +type IsNumber1037 = T extends number ? true : false; +type TypeName1037 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1037 = { + [K in keyof BigRecord1037]: TypeName1037; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1037 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1037 = "user" | "post" | "comment" | "tag" | "category"; +type Action1037 = `${Verb1037}_${Resource1037}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1037 = T extends Promise ? UnwrapPromise1037 : T; +type UnwrapArray1037 = T extends (infer U)[] ? UnwrapArray1037 : T; +type Head1037 = T extends [infer H, ...infer _] ? H : never; +type Tail1037 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1037 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1037>] + : never; + +type SmallUnion1037 = "a" | "b" | "c" | "d"; +type AllPerms1037 = Permutation1037; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1037, + Flat1037, + FR1037, + BigUnion1037, + ExtractAlpha1037, + ExcludeZulu1037, + OptionalAll1037, + RequiredAll1037, + ReadonlyAll1037, + NullableAll1037, + TypeNames1037, + Action1037, + AllPerms1037, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts new file mode 100644 index 00000000..23447763 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-38 (seed 1038) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1038 { + a1038: { x: number; y: string; z: boolean }; + b1038: { p: string[]; q: Record }; + c1038: { nested: { deep: { deeper: { deepest: string } } } }; + d1038: number; + e1038: string; + f1038: boolean; + g1038: null; + h1038: undefined; + i1038: bigint; + j1038: symbol; +} + +type PartialBig1038 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1038 = T extends Array ? Flatten1038 : T; +type Nested1038 = number[][][][][][][][][][]; +type Flat1038 = Flatten1038; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1038 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1038 : T[K]; +}; +type DeepRequired1038 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1038 : T[K]; +}; +type FR1038 = DeepReadonly1038>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1038 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1038 = Extract; +type ExcludeZulu1038 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1038 { width: number; height: number; depth: number } +interface ShapeB1038 { color: string; opacity: number; blend: string } +interface ShapeC1038 { x: number; y: number; z: number; w: number } +interface ShapeD1038 { label: string; title: string; summary: string } + +type Combined1038 = ShapeA1038 & ShapeB1038 & ShapeC1038 & ShapeD1038; +type OptionalAll1038 = { [K in keyof Combined1038]?: Combined1038[K] }; +type RequiredAll1038 = { [K in keyof Combined1038]-?: Combined1038[K] }; +type ReadonlyAll1038 = { readonly [K in keyof Combined1038]: Combined1038[K] }; +type NullableAll1038 = { [K in keyof Combined1038]: Combined1038[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1038 = T extends string ? true : false; +type IsNumber1038 = T extends number ? true : false; +type TypeName1038 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1038 = { + [K in keyof BigRecord1038]: TypeName1038; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1038 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1038 = "user" | "post" | "comment" | "tag" | "category"; +type Action1038 = `${Verb1038}_${Resource1038}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1038 = T extends Promise ? UnwrapPromise1038 : T; +type UnwrapArray1038 = T extends (infer U)[] ? UnwrapArray1038 : T; +type Head1038 = T extends [infer H, ...infer _] ? H : never; +type Tail1038 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1038 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1038>] + : never; + +type SmallUnion1038 = "a" | "b" | "c" | "d"; +type AllPerms1038 = Permutation1038; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1038, + Flat1038, + FR1038, + BigUnion1038, + ExtractAlpha1038, + ExcludeZulu1038, + OptionalAll1038, + RequiredAll1038, + ReadonlyAll1038, + NullableAll1038, + TypeNames1038, + Action1038, + AllPerms1038, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts new file mode 100644 index 00000000..a930b032 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-39 (seed 1039) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1039 { + a1039: { x: number; y: string; z: boolean }; + b1039: { p: string[]; q: Record }; + c1039: { nested: { deep: { deeper: { deepest: string } } } }; + d1039: number; + e1039: string; + f1039: boolean; + g1039: null; + h1039: undefined; + i1039: bigint; + j1039: symbol; +} + +type PartialBig1039 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1039 = T extends Array ? Flatten1039 : T; +type Nested1039 = number[][][][][][][][][][]; +type Flat1039 = Flatten1039; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1039 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1039 : T[K]; +}; +type DeepRequired1039 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1039 : T[K]; +}; +type FR1039 = DeepReadonly1039>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1039 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1039 = Extract; +type ExcludeZulu1039 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1039 { width: number; height: number; depth: number } +interface ShapeB1039 { color: string; opacity: number; blend: string } +interface ShapeC1039 { x: number; y: number; z: number; w: number } +interface ShapeD1039 { label: string; title: string; summary: string } + +type Combined1039 = ShapeA1039 & ShapeB1039 & ShapeC1039 & ShapeD1039; +type OptionalAll1039 = { [K in keyof Combined1039]?: Combined1039[K] }; +type RequiredAll1039 = { [K in keyof Combined1039]-?: Combined1039[K] }; +type ReadonlyAll1039 = { readonly [K in keyof Combined1039]: Combined1039[K] }; +type NullableAll1039 = { [K in keyof Combined1039]: Combined1039[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1039 = T extends string ? true : false; +type IsNumber1039 = T extends number ? true : false; +type TypeName1039 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1039 = { + [K in keyof BigRecord1039]: TypeName1039; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1039 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1039 = "user" | "post" | "comment" | "tag" | "category"; +type Action1039 = `${Verb1039}_${Resource1039}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1039 = T extends Promise ? UnwrapPromise1039 : T; +type UnwrapArray1039 = T extends (infer U)[] ? UnwrapArray1039 : T; +type Head1039 = T extends [infer H, ...infer _] ? H : never; +type Tail1039 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1039 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1039>] + : never; + +type SmallUnion1039 = "a" | "b" | "c" | "d"; +type AllPerms1039 = Permutation1039; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1039, + Flat1039, + FR1039, + BigUnion1039, + ExtractAlpha1039, + ExcludeZulu1039, + OptionalAll1039, + RequiredAll1039, + ReadonlyAll1039, + NullableAll1039, + TypeNames1039, + Action1039, + AllPerms1039, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts new file mode 100644 index 00000000..0a0e501b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-40 (seed 1040) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1040 { + a1040: { x: number; y: string; z: boolean }; + b1040: { p: string[]; q: Record }; + c1040: { nested: { deep: { deeper: { deepest: string } } } }; + d1040: number; + e1040: string; + f1040: boolean; + g1040: null; + h1040: undefined; + i1040: bigint; + j1040: symbol; +} + +type PartialBig1040 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1040 = T extends Array ? Flatten1040 : T; +type Nested1040 = number[][][][][][][][][][]; +type Flat1040 = Flatten1040; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1040 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1040 : T[K]; +}; +type DeepRequired1040 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1040 : T[K]; +}; +type FR1040 = DeepReadonly1040>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1040 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1040 = Extract; +type ExcludeZulu1040 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1040 { width: number; height: number; depth: number } +interface ShapeB1040 { color: string; opacity: number; blend: string } +interface ShapeC1040 { x: number; y: number; z: number; w: number } +interface ShapeD1040 { label: string; title: string; summary: string } + +type Combined1040 = ShapeA1040 & ShapeB1040 & ShapeC1040 & ShapeD1040; +type OptionalAll1040 = { [K in keyof Combined1040]?: Combined1040[K] }; +type RequiredAll1040 = { [K in keyof Combined1040]-?: Combined1040[K] }; +type ReadonlyAll1040 = { readonly [K in keyof Combined1040]: Combined1040[K] }; +type NullableAll1040 = { [K in keyof Combined1040]: Combined1040[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1040 = T extends string ? true : false; +type IsNumber1040 = T extends number ? true : false; +type TypeName1040 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1040 = { + [K in keyof BigRecord1040]: TypeName1040; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1040 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1040 = "user" | "post" | "comment" | "tag" | "category"; +type Action1040 = `${Verb1040}_${Resource1040}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1040 = T extends Promise ? UnwrapPromise1040 : T; +type UnwrapArray1040 = T extends (infer U)[] ? UnwrapArray1040 : T; +type Head1040 = T extends [infer H, ...infer _] ? H : never; +type Tail1040 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1040 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1040>] + : never; + +type SmallUnion1040 = "a" | "b" | "c" | "d"; +type AllPerms1040 = Permutation1040; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1040, + Flat1040, + FR1040, + BigUnion1040, + ExtractAlpha1040, + ExcludeZulu1040, + OptionalAll1040, + RequiredAll1040, + ReadonlyAll1040, + NullableAll1040, + TypeNames1040, + Action1040, + AllPerms1040, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts new file mode 100644 index 00000000..7395abaa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-41 (seed 1041) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1041 { + a1041: { x: number; y: string; z: boolean }; + b1041: { p: string[]; q: Record }; + c1041: { nested: { deep: { deeper: { deepest: string } } } }; + d1041: number; + e1041: string; + f1041: boolean; + g1041: null; + h1041: undefined; + i1041: bigint; + j1041: symbol; +} + +type PartialBig1041 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1041 = T extends Array ? Flatten1041 : T; +type Nested1041 = number[][][][][][][][][][]; +type Flat1041 = Flatten1041; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1041 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1041 : T[K]; +}; +type DeepRequired1041 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1041 : T[K]; +}; +type FR1041 = DeepReadonly1041>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1041 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1041 = Extract; +type ExcludeZulu1041 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1041 { width: number; height: number; depth: number } +interface ShapeB1041 { color: string; opacity: number; blend: string } +interface ShapeC1041 { x: number; y: number; z: number; w: number } +interface ShapeD1041 { label: string; title: string; summary: string } + +type Combined1041 = ShapeA1041 & ShapeB1041 & ShapeC1041 & ShapeD1041; +type OptionalAll1041 = { [K in keyof Combined1041]?: Combined1041[K] }; +type RequiredAll1041 = { [K in keyof Combined1041]-?: Combined1041[K] }; +type ReadonlyAll1041 = { readonly [K in keyof Combined1041]: Combined1041[K] }; +type NullableAll1041 = { [K in keyof Combined1041]: Combined1041[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1041 = T extends string ? true : false; +type IsNumber1041 = T extends number ? true : false; +type TypeName1041 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1041 = { + [K in keyof BigRecord1041]: TypeName1041; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1041 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1041 = "user" | "post" | "comment" | "tag" | "category"; +type Action1041 = `${Verb1041}_${Resource1041}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1041 = T extends Promise ? UnwrapPromise1041 : T; +type UnwrapArray1041 = T extends (infer U)[] ? UnwrapArray1041 : T; +type Head1041 = T extends [infer H, ...infer _] ? H : never; +type Tail1041 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1041 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1041>] + : never; + +type SmallUnion1041 = "a" | "b" | "c" | "d"; +type AllPerms1041 = Permutation1041; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1041, + Flat1041, + FR1041, + BigUnion1041, + ExtractAlpha1041, + ExcludeZulu1041, + OptionalAll1041, + RequiredAll1041, + ReadonlyAll1041, + NullableAll1041, + TypeNames1041, + Action1041, + AllPerms1041, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts new file mode 100644 index 00000000..25db4b0c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-42 (seed 1042) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1042 { + a1042: { x: number; y: string; z: boolean }; + b1042: { p: string[]; q: Record }; + c1042: { nested: { deep: { deeper: { deepest: string } } } }; + d1042: number; + e1042: string; + f1042: boolean; + g1042: null; + h1042: undefined; + i1042: bigint; + j1042: symbol; +} + +type PartialBig1042 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1042 = T extends Array ? Flatten1042 : T; +type Nested1042 = number[][][][][][][][][][]; +type Flat1042 = Flatten1042; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1042 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1042 : T[K]; +}; +type DeepRequired1042 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1042 : T[K]; +}; +type FR1042 = DeepReadonly1042>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1042 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1042 = Extract; +type ExcludeZulu1042 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1042 { width: number; height: number; depth: number } +interface ShapeB1042 { color: string; opacity: number; blend: string } +interface ShapeC1042 { x: number; y: number; z: number; w: number } +interface ShapeD1042 { label: string; title: string; summary: string } + +type Combined1042 = ShapeA1042 & ShapeB1042 & ShapeC1042 & ShapeD1042; +type OptionalAll1042 = { [K in keyof Combined1042]?: Combined1042[K] }; +type RequiredAll1042 = { [K in keyof Combined1042]-?: Combined1042[K] }; +type ReadonlyAll1042 = { readonly [K in keyof Combined1042]: Combined1042[K] }; +type NullableAll1042 = { [K in keyof Combined1042]: Combined1042[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1042 = T extends string ? true : false; +type IsNumber1042 = T extends number ? true : false; +type TypeName1042 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1042 = { + [K in keyof BigRecord1042]: TypeName1042; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1042 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1042 = "user" | "post" | "comment" | "tag" | "category"; +type Action1042 = `${Verb1042}_${Resource1042}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1042 = T extends Promise ? UnwrapPromise1042 : T; +type UnwrapArray1042 = T extends (infer U)[] ? UnwrapArray1042 : T; +type Head1042 = T extends [infer H, ...infer _] ? H : never; +type Tail1042 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1042 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1042>] + : never; + +type SmallUnion1042 = "a" | "b" | "c" | "d"; +type AllPerms1042 = Permutation1042; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1042, + Flat1042, + FR1042, + BigUnion1042, + ExtractAlpha1042, + ExcludeZulu1042, + OptionalAll1042, + RequiredAll1042, + ReadonlyAll1042, + NullableAll1042, + TypeNames1042, + Action1042, + AllPerms1042, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts new file mode 100644 index 00000000..75852a5a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-43 (seed 1043) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1043 { + a1043: { x: number; y: string; z: boolean }; + b1043: { p: string[]; q: Record }; + c1043: { nested: { deep: { deeper: { deepest: string } } } }; + d1043: number; + e1043: string; + f1043: boolean; + g1043: null; + h1043: undefined; + i1043: bigint; + j1043: symbol; +} + +type PartialBig1043 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1043 = T extends Array ? Flatten1043 : T; +type Nested1043 = number[][][][][][][][][][]; +type Flat1043 = Flatten1043; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1043 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1043 : T[K]; +}; +type DeepRequired1043 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1043 : T[K]; +}; +type FR1043 = DeepReadonly1043>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1043 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1043 = Extract; +type ExcludeZulu1043 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1043 { width: number; height: number; depth: number } +interface ShapeB1043 { color: string; opacity: number; blend: string } +interface ShapeC1043 { x: number; y: number; z: number; w: number } +interface ShapeD1043 { label: string; title: string; summary: string } + +type Combined1043 = ShapeA1043 & ShapeB1043 & ShapeC1043 & ShapeD1043; +type OptionalAll1043 = { [K in keyof Combined1043]?: Combined1043[K] }; +type RequiredAll1043 = { [K in keyof Combined1043]-?: Combined1043[K] }; +type ReadonlyAll1043 = { readonly [K in keyof Combined1043]: Combined1043[K] }; +type NullableAll1043 = { [K in keyof Combined1043]: Combined1043[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1043 = T extends string ? true : false; +type IsNumber1043 = T extends number ? true : false; +type TypeName1043 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1043 = { + [K in keyof BigRecord1043]: TypeName1043; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1043 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1043 = "user" | "post" | "comment" | "tag" | "category"; +type Action1043 = `${Verb1043}_${Resource1043}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1043 = T extends Promise ? UnwrapPromise1043 : T; +type UnwrapArray1043 = T extends (infer U)[] ? UnwrapArray1043 : T; +type Head1043 = T extends [infer H, ...infer _] ? H : never; +type Tail1043 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1043 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1043>] + : never; + +type SmallUnion1043 = "a" | "b" | "c" | "d"; +type AllPerms1043 = Permutation1043; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1043, + Flat1043, + FR1043, + BigUnion1043, + ExtractAlpha1043, + ExcludeZulu1043, + OptionalAll1043, + RequiredAll1043, + ReadonlyAll1043, + NullableAll1043, + TypeNames1043, + Action1043, + AllPerms1043, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts new file mode 100644 index 00000000..c4a1b69b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-44 (seed 1044) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1044 { + a1044: { x: number; y: string; z: boolean }; + b1044: { p: string[]; q: Record }; + c1044: { nested: { deep: { deeper: { deepest: string } } } }; + d1044: number; + e1044: string; + f1044: boolean; + g1044: null; + h1044: undefined; + i1044: bigint; + j1044: symbol; +} + +type PartialBig1044 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1044 = T extends Array ? Flatten1044 : T; +type Nested1044 = number[][][][][][][][][][]; +type Flat1044 = Flatten1044; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1044 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1044 : T[K]; +}; +type DeepRequired1044 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1044 : T[K]; +}; +type FR1044 = DeepReadonly1044>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1044 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1044 = Extract; +type ExcludeZulu1044 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1044 { width: number; height: number; depth: number } +interface ShapeB1044 { color: string; opacity: number; blend: string } +interface ShapeC1044 { x: number; y: number; z: number; w: number } +interface ShapeD1044 { label: string; title: string; summary: string } + +type Combined1044 = ShapeA1044 & ShapeB1044 & ShapeC1044 & ShapeD1044; +type OptionalAll1044 = { [K in keyof Combined1044]?: Combined1044[K] }; +type RequiredAll1044 = { [K in keyof Combined1044]-?: Combined1044[K] }; +type ReadonlyAll1044 = { readonly [K in keyof Combined1044]: Combined1044[K] }; +type NullableAll1044 = { [K in keyof Combined1044]: Combined1044[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1044 = T extends string ? true : false; +type IsNumber1044 = T extends number ? true : false; +type TypeName1044 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1044 = { + [K in keyof BigRecord1044]: TypeName1044; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1044 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1044 = "user" | "post" | "comment" | "tag" | "category"; +type Action1044 = `${Verb1044}_${Resource1044}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1044 = T extends Promise ? UnwrapPromise1044 : T; +type UnwrapArray1044 = T extends (infer U)[] ? UnwrapArray1044 : T; +type Head1044 = T extends [infer H, ...infer _] ? H : never; +type Tail1044 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1044 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1044>] + : never; + +type SmallUnion1044 = "a" | "b" | "c" | "d"; +type AllPerms1044 = Permutation1044; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1044, + Flat1044, + FR1044, + BigUnion1044, + ExtractAlpha1044, + ExcludeZulu1044, + OptionalAll1044, + RequiredAll1044, + ReadonlyAll1044, + NullableAll1044, + TypeNames1044, + Action1044, + AllPerms1044, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts new file mode 100644 index 00000000..f4e89fb3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-45 (seed 1045) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1045 { + a1045: { x: number; y: string; z: boolean }; + b1045: { p: string[]; q: Record }; + c1045: { nested: { deep: { deeper: { deepest: string } } } }; + d1045: number; + e1045: string; + f1045: boolean; + g1045: null; + h1045: undefined; + i1045: bigint; + j1045: symbol; +} + +type PartialBig1045 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1045 = T extends Array ? Flatten1045 : T; +type Nested1045 = number[][][][][][][][][][]; +type Flat1045 = Flatten1045; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1045 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1045 : T[K]; +}; +type DeepRequired1045 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1045 : T[K]; +}; +type FR1045 = DeepReadonly1045>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1045 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1045 = Extract; +type ExcludeZulu1045 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1045 { width: number; height: number; depth: number } +interface ShapeB1045 { color: string; opacity: number; blend: string } +interface ShapeC1045 { x: number; y: number; z: number; w: number } +interface ShapeD1045 { label: string; title: string; summary: string } + +type Combined1045 = ShapeA1045 & ShapeB1045 & ShapeC1045 & ShapeD1045; +type OptionalAll1045 = { [K in keyof Combined1045]?: Combined1045[K] }; +type RequiredAll1045 = { [K in keyof Combined1045]-?: Combined1045[K] }; +type ReadonlyAll1045 = { readonly [K in keyof Combined1045]: Combined1045[K] }; +type NullableAll1045 = { [K in keyof Combined1045]: Combined1045[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1045 = T extends string ? true : false; +type IsNumber1045 = T extends number ? true : false; +type TypeName1045 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1045 = { + [K in keyof BigRecord1045]: TypeName1045; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1045 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1045 = "user" | "post" | "comment" | "tag" | "category"; +type Action1045 = `${Verb1045}_${Resource1045}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1045 = T extends Promise ? UnwrapPromise1045 : T; +type UnwrapArray1045 = T extends (infer U)[] ? UnwrapArray1045 : T; +type Head1045 = T extends [infer H, ...infer _] ? H : never; +type Tail1045 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1045 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1045>] + : never; + +type SmallUnion1045 = "a" | "b" | "c" | "d"; +type AllPerms1045 = Permutation1045; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1045, + Flat1045, + FR1045, + BigUnion1045, + ExtractAlpha1045, + ExcludeZulu1045, + OptionalAll1045, + RequiredAll1045, + ReadonlyAll1045, + NullableAll1045, + TypeNames1045, + Action1045, + AllPerms1045, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts new file mode 100644 index 00000000..9b6b2f62 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-46 (seed 1046) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1046 { + a1046: { x: number; y: string; z: boolean }; + b1046: { p: string[]; q: Record }; + c1046: { nested: { deep: { deeper: { deepest: string } } } }; + d1046: number; + e1046: string; + f1046: boolean; + g1046: null; + h1046: undefined; + i1046: bigint; + j1046: symbol; +} + +type PartialBig1046 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1046 = T extends Array ? Flatten1046 : T; +type Nested1046 = number[][][][][][][][][][]; +type Flat1046 = Flatten1046; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1046 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1046 : T[K]; +}; +type DeepRequired1046 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1046 : T[K]; +}; +type FR1046 = DeepReadonly1046>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1046 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1046 = Extract; +type ExcludeZulu1046 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1046 { width: number; height: number; depth: number } +interface ShapeB1046 { color: string; opacity: number; blend: string } +interface ShapeC1046 { x: number; y: number; z: number; w: number } +interface ShapeD1046 { label: string; title: string; summary: string } + +type Combined1046 = ShapeA1046 & ShapeB1046 & ShapeC1046 & ShapeD1046; +type OptionalAll1046 = { [K in keyof Combined1046]?: Combined1046[K] }; +type RequiredAll1046 = { [K in keyof Combined1046]-?: Combined1046[K] }; +type ReadonlyAll1046 = { readonly [K in keyof Combined1046]: Combined1046[K] }; +type NullableAll1046 = { [K in keyof Combined1046]: Combined1046[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1046 = T extends string ? true : false; +type IsNumber1046 = T extends number ? true : false; +type TypeName1046 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1046 = { + [K in keyof BigRecord1046]: TypeName1046; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1046 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1046 = "user" | "post" | "comment" | "tag" | "category"; +type Action1046 = `${Verb1046}_${Resource1046}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1046 = T extends Promise ? UnwrapPromise1046 : T; +type UnwrapArray1046 = T extends (infer U)[] ? UnwrapArray1046 : T; +type Head1046 = T extends [infer H, ...infer _] ? H : never; +type Tail1046 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1046 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1046>] + : never; + +type SmallUnion1046 = "a" | "b" | "c" | "d"; +type AllPerms1046 = Permutation1046; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1046, + Flat1046, + FR1046, + BigUnion1046, + ExtractAlpha1046, + ExcludeZulu1046, + OptionalAll1046, + RequiredAll1046, + ReadonlyAll1046, + NullableAll1046, + TypeNames1046, + Action1046, + AllPerms1046, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts new file mode 100644 index 00000000..3c215fd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-47 (seed 1047) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1047 { + a1047: { x: number; y: string; z: boolean }; + b1047: { p: string[]; q: Record }; + c1047: { nested: { deep: { deeper: { deepest: string } } } }; + d1047: number; + e1047: string; + f1047: boolean; + g1047: null; + h1047: undefined; + i1047: bigint; + j1047: symbol; +} + +type PartialBig1047 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1047 = T extends Array ? Flatten1047 : T; +type Nested1047 = number[][][][][][][][][][]; +type Flat1047 = Flatten1047; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1047 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1047 : T[K]; +}; +type DeepRequired1047 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1047 : T[K]; +}; +type FR1047 = DeepReadonly1047>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1047 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1047 = Extract; +type ExcludeZulu1047 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1047 { width: number; height: number; depth: number } +interface ShapeB1047 { color: string; opacity: number; blend: string } +interface ShapeC1047 { x: number; y: number; z: number; w: number } +interface ShapeD1047 { label: string; title: string; summary: string } + +type Combined1047 = ShapeA1047 & ShapeB1047 & ShapeC1047 & ShapeD1047; +type OptionalAll1047 = { [K in keyof Combined1047]?: Combined1047[K] }; +type RequiredAll1047 = { [K in keyof Combined1047]-?: Combined1047[K] }; +type ReadonlyAll1047 = { readonly [K in keyof Combined1047]: Combined1047[K] }; +type NullableAll1047 = { [K in keyof Combined1047]: Combined1047[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1047 = T extends string ? true : false; +type IsNumber1047 = T extends number ? true : false; +type TypeName1047 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1047 = { + [K in keyof BigRecord1047]: TypeName1047; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1047 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1047 = "user" | "post" | "comment" | "tag" | "category"; +type Action1047 = `${Verb1047}_${Resource1047}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1047 = T extends Promise ? UnwrapPromise1047 : T; +type UnwrapArray1047 = T extends (infer U)[] ? UnwrapArray1047 : T; +type Head1047 = T extends [infer H, ...infer _] ? H : never; +type Tail1047 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1047 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1047>] + : never; + +type SmallUnion1047 = "a" | "b" | "c" | "d"; +type AllPerms1047 = Permutation1047; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1047, + Flat1047, + FR1047, + BigUnion1047, + ExtractAlpha1047, + ExcludeZulu1047, + OptionalAll1047, + RequiredAll1047, + ReadonlyAll1047, + NullableAll1047, + TypeNames1047, + Action1047, + AllPerms1047, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts new file mode 100644 index 00000000..aba7988e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-48 (seed 1048) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1048 { + a1048: { x: number; y: string; z: boolean }; + b1048: { p: string[]; q: Record }; + c1048: { nested: { deep: { deeper: { deepest: string } } } }; + d1048: number; + e1048: string; + f1048: boolean; + g1048: null; + h1048: undefined; + i1048: bigint; + j1048: symbol; +} + +type PartialBig1048 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1048 = T extends Array ? Flatten1048 : T; +type Nested1048 = number[][][][][][][][][][]; +type Flat1048 = Flatten1048; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1048 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1048 : T[K]; +}; +type DeepRequired1048 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1048 : T[K]; +}; +type FR1048 = DeepReadonly1048>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1048 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1048 = Extract; +type ExcludeZulu1048 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1048 { width: number; height: number; depth: number } +interface ShapeB1048 { color: string; opacity: number; blend: string } +interface ShapeC1048 { x: number; y: number; z: number; w: number } +interface ShapeD1048 { label: string; title: string; summary: string } + +type Combined1048 = ShapeA1048 & ShapeB1048 & ShapeC1048 & ShapeD1048; +type OptionalAll1048 = { [K in keyof Combined1048]?: Combined1048[K] }; +type RequiredAll1048 = { [K in keyof Combined1048]-?: Combined1048[K] }; +type ReadonlyAll1048 = { readonly [K in keyof Combined1048]: Combined1048[K] }; +type NullableAll1048 = { [K in keyof Combined1048]: Combined1048[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1048 = T extends string ? true : false; +type IsNumber1048 = T extends number ? true : false; +type TypeName1048 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1048 = { + [K in keyof BigRecord1048]: TypeName1048; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1048 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1048 = "user" | "post" | "comment" | "tag" | "category"; +type Action1048 = `${Verb1048}_${Resource1048}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1048 = T extends Promise ? UnwrapPromise1048 : T; +type UnwrapArray1048 = T extends (infer U)[] ? UnwrapArray1048 : T; +type Head1048 = T extends [infer H, ...infer _] ? H : never; +type Tail1048 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1048 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1048>] + : never; + +type SmallUnion1048 = "a" | "b" | "c" | "d"; +type AllPerms1048 = Permutation1048; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1048, + Flat1048, + FR1048, + BigUnion1048, + ExtractAlpha1048, + ExcludeZulu1048, + OptionalAll1048, + RequiredAll1048, + ReadonlyAll1048, + NullableAll1048, + TypeNames1048, + Action1048, + AllPerms1048, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts new file mode 100644 index 00000000..7b4804ed --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-49 (seed 1049) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1049 { + a1049: { x: number; y: string; z: boolean }; + b1049: { p: string[]; q: Record }; + c1049: { nested: { deep: { deeper: { deepest: string } } } }; + d1049: number; + e1049: string; + f1049: boolean; + g1049: null; + h1049: undefined; + i1049: bigint; + j1049: symbol; +} + +type PartialBig1049 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1049 = T extends Array ? Flatten1049 : T; +type Nested1049 = number[][][][][][][][][][]; +type Flat1049 = Flatten1049; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1049 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1049 : T[K]; +}; +type DeepRequired1049 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1049 : T[K]; +}; +type FR1049 = DeepReadonly1049>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1049 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1049 = Extract; +type ExcludeZulu1049 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1049 { width: number; height: number; depth: number } +interface ShapeB1049 { color: string; opacity: number; blend: string } +interface ShapeC1049 { x: number; y: number; z: number; w: number } +interface ShapeD1049 { label: string; title: string; summary: string } + +type Combined1049 = ShapeA1049 & ShapeB1049 & ShapeC1049 & ShapeD1049; +type OptionalAll1049 = { [K in keyof Combined1049]?: Combined1049[K] }; +type RequiredAll1049 = { [K in keyof Combined1049]-?: Combined1049[K] }; +type ReadonlyAll1049 = { readonly [K in keyof Combined1049]: Combined1049[K] }; +type NullableAll1049 = { [K in keyof Combined1049]: Combined1049[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1049 = T extends string ? true : false; +type IsNumber1049 = T extends number ? true : false; +type TypeName1049 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1049 = { + [K in keyof BigRecord1049]: TypeName1049; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1049 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1049 = "user" | "post" | "comment" | "tag" | "category"; +type Action1049 = `${Verb1049}_${Resource1049}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1049 = T extends Promise ? UnwrapPromise1049 : T; +type UnwrapArray1049 = T extends (infer U)[] ? UnwrapArray1049 : T; +type Head1049 = T extends [infer H, ...infer _] ? H : never; +type Tail1049 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1049 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1049>] + : never; + +type SmallUnion1049 = "a" | "b" | "c" | "d"; +type AllPerms1049 = Permutation1049; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1049, + Flat1049, + FR1049, + BigUnion1049, + ExtractAlpha1049, + ExcludeZulu1049, + OptionalAll1049, + RequiredAll1049, + ReadonlyAll1049, + NullableAll1049, + TypeNames1049, + Action1049, + AllPerms1049, +}; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts new file mode 100644 index 00000000..7f90db32 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts @@ -0,0 +1,125 @@ +// pkg-10 / types-50 (seed 1050) - expensive recursive & mapped types + +// ── 1. DeepPartial over a large interface ──────────────────────────────────── +type DeepPartial = { + [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +}; + +interface BigRecord1050 { + a1050: { x: number; y: string; z: boolean }; + b1050: { p: string[]; q: Record }; + c1050: { nested: { deep: { deeper: { deepest: string } } } }; + d1050: number; + e1050: string; + f1050: boolean; + g1050: null; + h1050: undefined; + i1050: bigint; + j1050: symbol; +} + +type PartialBig1050 = DeepPartial; + +// ── 2. Recursive Flatten ───────────────────────────────────────────────────── +type Flatten1050 = T extends Array ? Flatten1050 : T; +type Nested1050 = number[][][][][][][][][][]; +type Flat1050 = Flatten1050; + +// ── 3. Deep readonly + required ────────────────────────────────────────────── +type DeepReadonly1050 = { + readonly [K in keyof T]: T[K] extends object ? DeepReadonly1050 : T[K]; +}; +type DeepRequired1050 = { + [K in keyof T]-?: T[K] extends object ? DeepRequired1050 : T[K]; +}; +type FR1050 = DeepReadonly1050>; + +// ── 4. Large union type (50 members) ───────────────────────────────────────── +type BigUnion1050 = + | "alpha" | "bravo" | "charlie" | "delta" | "echo" + | "foxtrot" | "golf" | "hotel" | "india" | "juliet" + | "kilo" | "lima" | "mike" | "november" | "oscar" + | "papa" | "quebec" | "romeo" | "sierra" | "tango" + | "uniform" | "victor" | "whiskey" | "xray" | "yankee" + | "zulu" | "one" | "two" | "three" | "four" + | "five" | "six" | "seven" | "eight" | "nine" + | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" + | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" + | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" + | "twentyfive"; + +type ExtractAlpha1050 = Extract; +type ExcludeZulu1050 = Exclude; + +// ── 5. Mapped type over intersection of interfaces ─────────────────────────── +interface ShapeA1050 { width: number; height: number; depth: number } +interface ShapeB1050 { color: string; opacity: number; blend: string } +interface ShapeC1050 { x: number; y: number; z: number; w: number } +interface ShapeD1050 { label: string; title: string; summary: string } + +type Combined1050 = ShapeA1050 & ShapeB1050 & ShapeC1050 & ShapeD1050; +type OptionalAll1050 = { [K in keyof Combined1050]?: Combined1050[K] }; +type RequiredAll1050 = { [K in keyof Combined1050]-?: Combined1050[K] }; +type ReadonlyAll1050 = { readonly [K in keyof Combined1050]: Combined1050[K] }; +type NullableAll1050 = { [K in keyof Combined1050]: Combined1050[K] | null }; + +// ── 6. Conditional type chains ─────────────────────────────────────────────── +type IsString1050 = T extends string ? true : false; +type IsNumber1050 = T extends number ? true : false; +type TypeName1050 = T extends string + ? "string" + : T extends number + ? "number" + : T extends boolean + ? "boolean" + : T extends null + ? "null" + : T extends undefined + ? "undefined" + : T extends symbol + ? "symbol" + : T extends bigint + ? "bigint" + : "object"; + +type TypeNames1050 = { + [K in keyof BigRecord1050]: TypeName1050; +}; + +// ── 7. Template literal type combinations ──────────────────────────────────── +type Verb1050 = "get" | "set" | "delete" | "update" | "create" | "list"; +type Resource1050 = "user" | "post" | "comment" | "tag" | "category"; +type Action1050 = `${Verb1050}_${Resource1050}`; + +// ── 8. Infer in conditional types ──────────────────────────────────────────── +type UnwrapPromise1050 = T extends Promise ? UnwrapPromise1050 : T; +type UnwrapArray1050 = T extends (infer U)[] ? UnwrapArray1050 : T; +type Head1050 = T extends [infer H, ...infer _] ? H : never; +type Tail1050 = T extends [infer _, ...infer R] ? R : never; + +// ── 9. Permutation of union ─────────────────────────────────────────────────── +type Permutation1050 = [T] extends [never] + ? [] + : K extends K + ? [K, ...Permutation1050>] + : never; + +type SmallUnion1050 = "a" | "b" | "c" | "d"; +type AllPerms1050 = Permutation1050; + +// ── 10. Re-export to force inclusion ───────────────────────────────────────── +export type { + PartialBig1050, + Flat1050, + FR1050, + BigUnion1050, + ExtractAlpha1050, + ExcludeZulu1050, + OptionalAll1050, + RequiredAll1050, + ReadonlyAll1050, + NullableAll1050, + TypeNames1050, + Action1050, + AllPerms1050, +}; diff --git a/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts b/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts new file mode 100644 index 00000000..0af41413 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts @@ -0,0 +1,52 @@ +import { drizzleZeroConfig } from "../../src"; +import * as schema from "./schema"; + +export default drizzleZeroConfig(schema, { + tables: { + users: { + id: true, + name: true, + email: true, + role: true, + status: true, + metadata: true, + createdAt: true, + }, + courses: { + id: true, + title: true, + description: true, + instructorId: true, + published: true, + settings: true, + createdAt: true, + }, + enrollments: { + id: true, + userId: true, + courseId: true, + enrolledAt: true, + completedAt: true, + progress: true, + }, + assignments: { + id: true, + courseId: true, + title: true, + body: true, + dueAt: true, + points: true, + rubric: true, + }, + submissions: { + id: true, + assignmentId: true, + userId: true, + content: true, + grade: true, + feedback: true, + submittedAt: true, + gradedAt: true, + }, + }, +}); diff --git a/tests/benchmarks/synthetic-monorepo/schema/schema.ts b/tests/benchmarks/synthetic-monorepo/schema/schema.ts new file mode 100644 index 00000000..d493e72e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/schema/schema.ts @@ -0,0 +1,89 @@ +import { pgTable, pgEnum, text, integer, boolean, timestamp, jsonb } from "drizzle-orm/pg-core"; +import { relations } from "drizzle-orm"; + +export const roleEnum = pgEnum("role", ["admin", "teacher", "student", "viewer"]); +export const statusEnum = pgEnum("status", ["active", "inactive", "pending", "archived"]); + +export const users = pgTable("users", { + id: text("id").primaryKey(), + name: text("name").notNull(), + email: text("email").notNull().unique(), + role: roleEnum("role").notNull().default("student"), + status: statusEnum("status").notNull().default("active"), + metadata: jsonb("metadata").$type<{ + preferences: { theme: "light" | "dark"; language: string }; + tags: string[]; + }>(), + createdAt: timestamp("created_at").notNull().defaultNow(), +}); + +export const courses = pgTable("courses", { + id: text("id").primaryKey(), + title: text("title").notNull(), + description: text("description"), + instructorId: text("instructor_id").notNull(), + published: boolean("published").notNull().default(false), + settings: jsonb("settings").$type<{ + maxEnrollment: number; + allowLateSubmissions: boolean; + gradingPolicy: "points" | "percentage" | "pass_fail"; + }>(), + createdAt: timestamp("created_at").notNull().defaultNow(), +}); + +export const enrollments = pgTable("enrollments", { + id: text("id").primaryKey(), + userId: text("user_id").notNull(), + courseId: text("course_id").notNull(), + enrolledAt: timestamp("enrolled_at").notNull().defaultNow(), + completedAt: timestamp("completed_at"), + progress: integer("progress").notNull().default(0), +}); + +export const assignments = pgTable("assignments", { + id: text("id").primaryKey(), + courseId: text("course_id").notNull(), + title: text("title").notNull(), + body: text("body"), + dueAt: timestamp("due_at"), + points: integer("points").notNull().default(100), + rubric: jsonb("rubric").$type<{ + criteria: Array<{ name: string; weight: number; description: string }>; + }>(), +}); + +export const submissions = pgTable("submissions", { + id: text("id").primaryKey(), + assignmentId: text("assignment_id").notNull(), + userId: text("user_id").notNull(), + content: text("content"), + grade: integer("grade"), + feedback: text("feedback"), + submittedAt: timestamp("submitted_at").notNull().defaultNow(), + gradedAt: timestamp("graded_at"), +}); + +export const usersRelations = relations(users, ({ many }) => ({ + enrollments: many(enrollments), + submissions: many(submissions), +})); + +export const coursesRelations = relations(courses, ({ many }) => ({ + enrollments: many(enrollments), + assignments: many(assignments), +})); + +export const enrollmentsRelations = relations(enrollments, ({ one }) => ({ + user: one(users, { fields: [enrollments.userId], references: [users.id] }), + course: one(courses, { fields: [enrollments.courseId], references: [courses.id] }), +})); + +export const assignmentsRelations = relations(assignments, ({ one, many }) => ({ + course: one(courses, { fields: [assignments.courseId], references: [courses.id] }), + submissions: many(submissions), +})); + +export const submissionsRelations = relations(submissions, ({ one }) => ({ + assignment: one(assignments, { fields: [submissions.assignmentId], references: [assignments.id] }), + user: one(users, { fields: [submissions.userId], references: [users.id] }), +})); diff --git a/tests/benchmarks/synthetic-monorepo/schema/tsconfig.json b/tests/benchmarks/synthetic-monorepo/schema/tsconfig.json new file mode 100644 index 00000000..53faffa7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/schema/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true, + "outDir": "out" + }, + "include": ["./**/*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/tsconfig.json b/tests/benchmarks/synthetic-monorepo/tsconfig.json new file mode 100644 index 00000000..966c27c5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "composite": true, + "declaration": true + }, + "references": [ + { "path": "./pkg-01" }, + { "path": "./pkg-02" }, + { "path": "./pkg-03" }, + { "path": "./pkg-04" }, + { "path": "./pkg-05" }, + { "path": "./pkg-06" }, + { "path": "./pkg-07" }, + { "path": "./pkg-08" }, + { "path": "./pkg-09" }, + { "path": "./pkg-10" }, + { "path": "./schema" } + ] +} From 0196312e4ec42d3e29f90936b17683df985bcd91 Mon Sep 17 00:00:00 2001 From: Alp Date: Thu, 26 Feb 2026 15:33:12 -0500 Subject: [PATCH 2/7] refactor: make lazy file loading the default Remove the --experimental-lazy flag. Lazy loading (only loading the config/schema file instead of all files from all tsconfigs) is now the default and only behavior. This dramatically improves CLI startup time in monorepos: - Synthetic benchmark: 277ms -> 3.3ms (83x faster) - Real monorepo: 24.5s -> 6.2s (4x faster) - Output is byte-for-byte identical --- src/cli/index.ts | 25 +----------------- tests/benchmark.test.ts | 58 +++++++---------------------------------- 2 files changed, 11 insertions(+), 72 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 0ac92f90..e8efc7aa 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -7,11 +7,7 @@ import {getConfigFromFile, getDefaultConfigFilePath} from './config'; import {getDefaultConfig} from './drizzle-kit'; import {getGeneratedSchema} from './shared'; import {checkSignature, signContent} from './signature'; -import {discoverAllTsConfigs} from './tsconfig'; -import { - addSourceFilesFromTsConfigSafe, - ensureSourceFileInProject, -} from './ts-project'; +import {ensureSourceFileInProject} from './ts-project'; const defaultConfigFile = './drizzle-zero.config.ts'; const defaultOutputFile = './zero-schema.gen.ts'; @@ -67,7 +63,6 @@ export interface GeneratorOptions { enableLegacyMutators?: boolean; enableLegacyQueries?: boolean; suppressDefaultsWarning?: boolean; - experimentalLazy?: boolean; } async function main(opts: GeneratorOptions = {}) { @@ -86,7 +81,6 @@ async function main(opts: GeneratorOptions = {}) { enableLegacyMutators, enableLegacyQueries, suppressDefaultsWarning, - experimentalLazy, } = {...opts}; const resolvedTsConfigPath = tsConfigPath ?? defaultTsConfigFile; @@ -107,17 +101,6 @@ async function main(opts: GeneratorOptions = {}) { skipAddingFilesFromTsConfig: true, }); - if (!experimentalLazy) { - const allTsConfigPaths = await discoverAllTsConfigs(resolvedTsConfigPath); - for (const tsConfigPath of allTsConfigPaths) { - addSourceFilesFromTsConfigSafe({ - tsProject, - tsConfigPath, - debug: Boolean(debug), - }); - } - } - if (configFilePath) { ensureSourceFileInProject({ tsProject, @@ -231,11 +214,6 @@ function cli() { 'Hide warnings for columns with default values', false, ) - .option( - '--experimental-lazy', - 'Use lazy file loading for faster startup (only loads files reachable from config)', - false, - ) .option( '--force', 'Overwrite the output file even if it has been manually modified', @@ -260,7 +238,6 @@ function cli() { enableLegacyMutators: command.enableLegacyMutators, enableLegacyQueries: command.enableLegacyQueries, suppressDefaultsWarning: command.suppressDefaultsWarning, - experimentalLazy: command.experimentalLazy, }); if (command.output) { diff --git a/tests/benchmark.test.ts b/tests/benchmark.test.ts index 36a71daa..adc6828e 100644 --- a/tests/benchmark.test.ts +++ b/tests/benchmark.test.ts @@ -1,11 +1,7 @@ import * as path from 'node:path'; import {Project} from 'ts-morph'; import {test, expect} from 'vitest'; -import {discoverAllTsConfigs} from '../src/cli/tsconfig'; -import { - addSourceFilesFromTsConfigSafe, - ensureSourceFileInProject, -} from '../src/cli/ts-project'; +import {ensureSourceFileInProject} from '../src/cli/ts-project'; const fixtureRoot = path.resolve( __dirname, @@ -17,61 +13,27 @@ const schemaConfigFile = path.resolve( ); test( - 'lazy loading loads fewer files and is faster than eager loading', + 'project only loads the explicitly added file, not all tsconfig files', {timeout: 120_000}, async () => { - // -- EAGER approach: discover all tsconfigs, add all source files -- - const eagerStart = performance.now(); - - const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); - - const eagerProject = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - - for (const tsConfigPath of allTsConfigPaths) { - addSourceFilesFromTsConfigSafe({ - tsProject: eagerProject, - tsConfigPath, - debug: false, - }); - } - - ensureSourceFileInProject({ - tsProject: eagerProject, - filePath: schemaConfigFile, - debug: false, - }); - - const eagerFileCount = eagerProject.getSourceFiles().length; - const eagerTime = performance.now() - eagerStart; - - // -- LAZY approach: only load the config file and resolve its dependencies -- - const lazyStart = performance.now(); - - const lazyProject = new Project({ + const project = new Project({ tsConfigFilePath: fixtureRoot, skipAddingFilesFromTsConfig: true, }); ensureSourceFileInProject({ - tsProject: lazyProject, + tsProject: project, filePath: schemaConfigFile, debug: false, }); - const lazyFileCount = lazyProject.getSourceFiles().length; - const lazyTime = performance.now() - lazyStart; + const fileCount = project.getSourceFiles().length; - // -- Report -- - const ratio = eagerTime / lazyTime; - console.log(`Eager: ${eagerFileCount} files in ${eagerTime.toFixed(1)}ms`); - console.log(`Lazy: ${lazyFileCount} files in ${lazyTime.toFixed(1)}ms`); - console.log(`Ratio: eager is ${ratio.toFixed(2)}x slower than lazy`); + console.log(`Files loaded: ${fileCount}`); - // -- Assertions -- - expect(lazyFileCount).toBeLessThan(eagerFileCount); - expect(lazyTime).toBeLessThan(eagerTime); + // Regression guard: only the config file (and possibly a few resolved + // dependencies) should be loaded. If someone accidentally re-introduces + // eager loading, this will catch it. + expect(fileCount).toBeLessThan(10); }, ); From 55eff4bd994ad7aae0329cc0e03cf5795345b8e2 Mon Sep 17 00:00:00 2001 From: Alp Date: Thu, 26 Feb 2026 15:36:26 -0500 Subject: [PATCH 3/7] test: add actual benchmark comparing eager vs targeted file loading The benchmark test now measures both approaches with timing: - Eager: loads all files from all tsconfigs (500+ files) - Targeted: loads only the requested config file (1 file) - Comparison test asserts targeted is faster and loads fewer files --- tests/benchmark.test.ts | 86 ++++++++++++++++++++++++++++++++++------- 1 file changed, 72 insertions(+), 14 deletions(-) diff --git a/tests/benchmark.test.ts b/tests/benchmark.test.ts index adc6828e..15064498 100644 --- a/tests/benchmark.test.ts +++ b/tests/benchmark.test.ts @@ -1,7 +1,8 @@ import * as path from 'node:path'; import {Project} from 'ts-morph'; -import {test, expect} from 'vitest'; -import {ensureSourceFileInProject} from '../src/cli/ts-project'; +import {describe, test, expect} from 'vitest'; +import {addSourceFilesFromTsConfigSafe, ensureSourceFileInProject} from '../src/cli/ts-project'; +import {discoverAllTsConfigs} from '../src/cli/tsconfig'; const fixtureRoot = path.resolve( __dirname, @@ -12,28 +13,85 @@ const schemaConfigFile = path.resolve( 'benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts', ); -test( - 'project only loads the explicitly added file, not all tsconfig files', - {timeout: 120_000}, - async () => { +describe('file loading performance', {timeout: 120_000}, () => { + test('eager loading pulls in all files from all tsconfigs', async () => { + const start = performance.now(); + + const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); const project = new Project({ tsConfigFilePath: fixtureRoot, skipAddingFilesFromTsConfig: true, }); + for (const tsConfigPath of allTsConfigPaths) { + addSourceFilesFromTsConfigSafe({tsProject: project, tsConfigPath}); + } + + const eagerTime = performance.now() - start; + const eagerFileCount = project.getSourceFiles().length; + + console.log(`Eager: ${eagerFileCount} files in ${eagerTime.toFixed(1)}ms`); + + // Eager should load all fixture files (500+) + expect(eagerFileCount).toBeGreaterThan(400); + }); + test('targeted loading only loads the requested file', async () => { + const start = performance.now(); + + const project = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); ensureSourceFileInProject({ tsProject: project, filePath: schemaConfigFile, debug: false, }); - const fileCount = project.getSourceFiles().length; + const lazyTime = performance.now() - start; + const lazyFileCount = project.getSourceFiles().length; - console.log(`Files loaded: ${fileCount}`); + console.log(`Targeted: ${lazyFileCount} files in ${lazyTime.toFixed(1)}ms`); - // Regression guard: only the config file (and possibly a few resolved - // dependencies) should be loaded. If someone accidentally re-introduces - // eager loading, this will catch it. - expect(fileCount).toBeLessThan(10); - }, -); + // Only the config file should be loaded + expect(lazyFileCount).toBeLessThan(10); + }); + + test('targeted loading is faster than eager loading', async () => { + // Eager + const eagerStart = performance.now(); + const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); + const eagerProject = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); + for (const tsConfigPath of allTsConfigPaths) { + addSourceFilesFromTsConfigSafe({tsProject: eagerProject, tsConfigPath}); + } + const eagerTime = performance.now() - eagerStart; + const eagerFileCount = eagerProject.getSourceFiles().length; + + // Targeted (current default) + const lazyStart = performance.now(); + const lazyProject = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); + ensureSourceFileInProject({ + tsProject: lazyProject, + filePath: schemaConfigFile, + debug: false, + }); + const lazyTime = performance.now() - lazyStart; + const lazyFileCount = lazyProject.getSourceFiles().length; + + const speedup = eagerTime / lazyTime; + + console.log(`Eager: ${eagerFileCount} files in ${eagerTime.toFixed(1)}ms`); + console.log(`Targeted: ${lazyFileCount} files in ${lazyTime.toFixed(1)}ms`); + console.log(`Speedup: ${speedup.toFixed(1)}x faster`); + + expect(lazyFileCount).toBeLessThan(eagerFileCount); + expect(lazyTime).toBeLessThan(eagerTime); + }); +}); From bb8cd02646f8829c2cf2754fc1bacef4c0536634 Mon Sep 17 00:00:00 2001 From: Alp Date: Thu, 26 Feb 2026 15:39:14 -0500 Subject: [PATCH 4/7] test: replace benchmark test with vitest bench script Use vitest bench for proper statistical benchmarking instead of a test. Run with: npx vitest bench Results on synthetic monorepo (500+ files): targeted: 2.12ms (471 ops/s) eager: 99.3ms (10 ops/s) 46.83x faster --- tests/benchmark.bench.ts | 42 +++++++++++++++++ tests/benchmark.test.ts | 97 ---------------------------------------- 2 files changed, 42 insertions(+), 97 deletions(-) create mode 100644 tests/benchmark.bench.ts delete mode 100644 tests/benchmark.test.ts diff --git a/tests/benchmark.bench.ts b/tests/benchmark.bench.ts new file mode 100644 index 00000000..48b24358 --- /dev/null +++ b/tests/benchmark.bench.ts @@ -0,0 +1,42 @@ +import * as path from 'node:path'; +import {Project} from 'ts-morph'; +import {bench, describe} from 'vitest'; +import { + addSourceFilesFromTsConfigSafe, + ensureSourceFileInProject, +} from '../src/cli/ts-project'; +import {discoverAllTsConfigs} from '../src/cli/tsconfig'; + +const fixtureRoot = path.resolve( + __dirname, + 'benchmarks/synthetic-monorepo/tsconfig.json', +); +const schemaConfigFile = path.resolve( + __dirname, + 'benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts', +); + +describe('file loading', () => { + bench('eager: load all files from all tsconfigs', async () => { + const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); + const project = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); + for (const tsConfigPath of allTsConfigPaths) { + addSourceFilesFromTsConfigSafe({tsProject: project, tsConfigPath}); + } + }); + + bench('targeted: load only the requested file', async () => { + const project = new Project({ + tsConfigFilePath: fixtureRoot, + skipAddingFilesFromTsConfig: true, + }); + ensureSourceFileInProject({ + tsProject: project, + filePath: schemaConfigFile, + debug: false, + }); + }); +}); diff --git a/tests/benchmark.test.ts b/tests/benchmark.test.ts deleted file mode 100644 index 15064498..00000000 --- a/tests/benchmark.test.ts +++ /dev/null @@ -1,97 +0,0 @@ -import * as path from 'node:path'; -import {Project} from 'ts-morph'; -import {describe, test, expect} from 'vitest'; -import {addSourceFilesFromTsConfigSafe, ensureSourceFileInProject} from '../src/cli/ts-project'; -import {discoverAllTsConfigs} from '../src/cli/tsconfig'; - -const fixtureRoot = path.resolve( - __dirname, - 'benchmarks/synthetic-monorepo/tsconfig.json', -); -const schemaConfigFile = path.resolve( - __dirname, - 'benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts', -); - -describe('file loading performance', {timeout: 120_000}, () => { - test('eager loading pulls in all files from all tsconfigs', async () => { - const start = performance.now(); - - const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); - const project = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - for (const tsConfigPath of allTsConfigPaths) { - addSourceFilesFromTsConfigSafe({tsProject: project, tsConfigPath}); - } - - const eagerTime = performance.now() - start; - const eagerFileCount = project.getSourceFiles().length; - - console.log(`Eager: ${eagerFileCount} files in ${eagerTime.toFixed(1)}ms`); - - // Eager should load all fixture files (500+) - expect(eagerFileCount).toBeGreaterThan(400); - }); - - test('targeted loading only loads the requested file', async () => { - const start = performance.now(); - - const project = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - ensureSourceFileInProject({ - tsProject: project, - filePath: schemaConfigFile, - debug: false, - }); - - const lazyTime = performance.now() - start; - const lazyFileCount = project.getSourceFiles().length; - - console.log(`Targeted: ${lazyFileCount} files in ${lazyTime.toFixed(1)}ms`); - - // Only the config file should be loaded - expect(lazyFileCount).toBeLessThan(10); - }); - - test('targeted loading is faster than eager loading', async () => { - // Eager - const eagerStart = performance.now(); - const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); - const eagerProject = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - for (const tsConfigPath of allTsConfigPaths) { - addSourceFilesFromTsConfigSafe({tsProject: eagerProject, tsConfigPath}); - } - const eagerTime = performance.now() - eagerStart; - const eagerFileCount = eagerProject.getSourceFiles().length; - - // Targeted (current default) - const lazyStart = performance.now(); - const lazyProject = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - ensureSourceFileInProject({ - tsProject: lazyProject, - filePath: schemaConfigFile, - debug: false, - }); - const lazyTime = performance.now() - lazyStart; - const lazyFileCount = lazyProject.getSourceFiles().length; - - const speedup = eagerTime / lazyTime; - - console.log(`Eager: ${eagerFileCount} files in ${eagerTime.toFixed(1)}ms`); - console.log(`Targeted: ${lazyFileCount} files in ${lazyTime.toFixed(1)}ms`); - console.log(`Speedup: ${speedup.toFixed(1)}x faster`); - - expect(lazyFileCount).toBeLessThan(eagerFileCount); - expect(lazyTime).toBeLessThan(eagerTime); - }); -}); From d588afdfe8f9e991476590c90dbc4c28eb0b4a8a Mon Sep 17 00:00:00 2001 From: Alp Date: Thu, 26 Feb 2026 15:40:40 -0500 Subject: [PATCH 5/7] bench: end-to-end generate benchmark using vitest bench Benchmarks the actual CLI generate command against the synthetic monorepo fixture. Run with: npx vitest bench --- tests/benchmark.bench.ts | 51 +++++-------------- .../schema/drizzle-zero.config.ts | 2 +- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/tests/benchmark.bench.ts b/tests/benchmark.bench.ts index 48b24358..d8223c16 100644 --- a/tests/benchmark.bench.ts +++ b/tests/benchmark.bench.ts @@ -1,42 +1,19 @@ +import {execSync} from 'node:child_process'; import * as path from 'node:path'; -import {Project} from 'ts-morph'; import {bench, describe} from 'vitest'; -import { - addSourceFilesFromTsConfigSafe, - ensureSourceFileInProject, -} from '../src/cli/ts-project'; -import {discoverAllTsConfigs} from '../src/cli/tsconfig'; -const fixtureRoot = path.resolve( - __dirname, - 'benchmarks/synthetic-monorepo/tsconfig.json', -); -const schemaConfigFile = path.resolve( - __dirname, - 'benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts', -); +const cliPath = path.resolve(__dirname, '../dist/cli/index.js'); +const fixtureDir = path.resolve(__dirname, 'benchmarks/synthetic-monorepo'); -describe('file loading', () => { - bench('eager: load all files from all tsconfigs', async () => { - const allTsConfigPaths = await discoverAllTsConfigs(fixtureRoot); - const project = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - for (const tsConfigPath of allTsConfigPaths) { - addSourceFilesFromTsConfigSafe({tsProject: project, tsConfigPath}); - } - }); - - bench('targeted: load only the requested file', async () => { - const project = new Project({ - tsConfigFilePath: fixtureRoot, - skipAddingFilesFromTsConfig: true, - }); - ensureSourceFileInProject({ - tsProject: project, - filePath: schemaConfigFile, - debug: false, - }); - }); +describe('generate', () => { + bench( + 'end-to-end generate on synthetic monorepo', + () => { + execSync( + `node ${cliPath} generate --config schema/drizzle-zero.config.ts --output /tmp/drizzle-zero-bench-output.ts --suppress-defaults-warning --force`, + {cwd: fixtureDir, stdio: 'ignore'}, + ); + }, + {warmupIterations: 1, iterations: 5, time: 0}, + ); }); diff --git a/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts b/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts index 0af41413..6ecea982 100644 --- a/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts +++ b/tests/benchmarks/synthetic-monorepo/schema/drizzle-zero.config.ts @@ -1,4 +1,4 @@ -import { drizzleZeroConfig } from "../../src"; +import { drizzleZeroConfig } from "drizzle-zero"; import * as schema from "./schema"; export default drizzleZeroConfig(schema, { From ca0d52fc34207914dfa9c9f06faa2ed89b93e25d Mon Sep 17 00:00:00 2001 From: Alp Date: Thu, 26 Feb 2026 17:39:29 -0500 Subject: [PATCH 6/7] bench: heavier synthetic fixture and DRIZZLE_ZERO_EAGER_LOADING env flag Scale up benchmark fixture to 2000 files across 40 packages with cross-package type imports. Add DRIZZLE_ZERO_EAGER_LOADING=1 env flag to force eager loading for A/B comparison. Synthetic benchmark shows ~1.2x improvement. Real monorepos with heavy type dependencies (Effect-TS, Drizzle ORM) show 4x+ improvement because eager loading pulls in transitive type declarations from node_modules. --- src/cli/index.ts | 17 +- tests/benchmark.bench.ts | 27 ++- .../synthetic-monorepo/pkg-01/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-01/types-01.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-02.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-03.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-04.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-05.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-06.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-07.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-08.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-09.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-10.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-11.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-12.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-13.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-14.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-15.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-16.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-17.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-18.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-19.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-20.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-21.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-22.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-23.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-24.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-25.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-26.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-27.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-28.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-29.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-30.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-31.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-32.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-33.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-34.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-35.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-36.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-37.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-38.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-39.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-40.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-41.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-42.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-43.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-44.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-45.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-46.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-47.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-48.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-49.ts | 148 ++++------------ .../synthetic-monorepo/pkg-01/types-50.ts | 148 ++++------------ .../synthetic-monorepo/pkg-02/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-02/types-01.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-02.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-03.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-04.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-05.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-06.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-07.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-08.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-09.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-10.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-11.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-12.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-13.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-14.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-15.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-16.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-17.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-18.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-19.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-20.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-21.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-22.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-23.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-24.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-25.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-26.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-27.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-28.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-29.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-30.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-31.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-32.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-33.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-34.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-35.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-36.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-37.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-38.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-39.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-40.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-41.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-42.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-43.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-44.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-45.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-46.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-47.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-48.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-49.ts | 151 ++++------------- .../synthetic-monorepo/pkg-02/types-50.ts | 151 ++++------------- .../synthetic-monorepo/pkg-03/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-03/types-01.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-02.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-03.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-04.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-05.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-06.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-07.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-08.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-09.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-10.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-11.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-12.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-13.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-14.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-15.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-16.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-17.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-18.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-19.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-20.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-21.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-22.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-23.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-24.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-25.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-26.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-27.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-28.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-29.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-30.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-31.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-32.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-33.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-34.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-35.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-36.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-37.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-38.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-39.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-40.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-41.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-42.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-43.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-44.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-45.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-46.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-47.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-48.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-49.ts | 156 +++++------------ .../synthetic-monorepo/pkg-03/types-50.ts | 156 +++++------------ .../synthetic-monorepo/pkg-04/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-04/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-04/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-05/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-05/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-06/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-06/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-07/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-07/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-08/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-08/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-09/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-09/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/tsconfig.json | 11 +- .../synthetic-monorepo/pkg-10/types-01.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-02.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-03.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-04.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-05.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-06.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-07.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-08.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-09.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-10.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-11.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-12.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-13.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-14.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-15.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-16.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-17.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-18.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-19.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-20.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-21.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-22.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-23.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-24.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-25.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-26.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-27.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-28.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-29.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-30.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-31.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-32.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-33.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-34.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-35.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-36.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-37.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-38.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-39.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-40.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-41.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-42.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-43.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-44.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-45.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-46.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-47.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-48.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-49.ts | 159 +++++------------- .../synthetic-monorepo/pkg-10/types-50.ts | 159 +++++------------- .../synthetic-monorepo/pkg-11/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-11/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-11/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-12/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-12/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-13/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-13/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-14/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-14/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-15/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-15/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-16/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-16/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-17/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-17/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-18/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-18/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-19/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-19/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-20/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-20/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-21/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-21/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-22/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-22/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-23/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-23/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-24/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-24/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-25/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-25/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-26/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-26/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-27/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-27/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-28/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-28/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-29/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-29/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-30/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-30/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-31/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-31/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-32/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-32/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-33/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-33/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-34/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-34/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-35/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-35/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-36/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-36/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-37/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-37/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-38/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-38/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-39/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-39/types-50.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/tsconfig.json | 13 ++ .../synthetic-monorepo/pkg-40/types-01.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-02.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-03.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-04.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-05.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-06.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-07.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-08.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-09.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-10.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-11.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-12.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-13.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-14.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-15.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-16.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-17.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-18.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-19.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-20.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-21.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-22.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-23.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-24.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-25.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-26.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-27.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-28.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-29.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-30.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-31.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-32.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-33.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-34.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-35.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-36.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-37.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-38.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-39.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-40.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-41.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-42.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-43.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-44.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-45.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-46.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-47.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-48.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-49.ts | 50 ++++++ .../synthetic-monorepo/pkg-40/types-50.ts | 50 ++++++ .../synthetic-monorepo/tsconfig.json | 41 ++++- 2043 files changed, 95512 insertions(+), 58473 deletions(-) create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-11/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-12/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-13/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-14/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-15/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-16/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-17/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-18/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-19/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-20/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-21/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-22/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-23/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-24/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-25/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-26/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-27/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-28/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-29/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-30/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-31/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-32/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-33/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-34/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-35/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-36/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-37/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-38/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-39/types-50.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/tsconfig.json create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-01.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-02.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-03.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-04.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-05.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-06.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-07.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-08.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-09.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-10.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-11.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-12.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-13.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-14.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-15.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-16.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-17.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-18.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-19.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-20.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-21.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-22.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-23.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-24.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-25.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-26.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-27.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-28.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-29.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-30.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-31.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-32.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-33.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-34.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-35.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-36.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-37.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-38.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-39.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-40.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-41.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-42.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-43.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-44.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-45.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-46.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-47.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-48.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-49.ts create mode 100644 tests/benchmarks/synthetic-monorepo/pkg-40/types-50.ts diff --git a/src/cli/index.ts b/src/cli/index.ts index e8efc7aa..73e7e0d1 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -7,7 +7,11 @@ import {getConfigFromFile, getDefaultConfigFilePath} from './config'; import {getDefaultConfig} from './drizzle-kit'; import {getGeneratedSchema} from './shared'; import {checkSignature, signContent} from './signature'; -import {ensureSourceFileInProject} from './ts-project'; +import {discoverAllTsConfigs} from './tsconfig'; +import { + addSourceFilesFromTsConfigSafe, + ensureSourceFileInProject, +} from './ts-project'; const defaultConfigFile = './drizzle-zero.config.ts'; const defaultOutputFile = './zero-schema.gen.ts'; @@ -101,6 +105,17 @@ async function main(opts: GeneratorOptions = {}) { skipAddingFilesFromTsConfig: true, }); + if (process.env.DRIZZLE_ZERO_EAGER_LOADING) { + const allTsConfigPaths = await discoverAllTsConfigs(resolvedTsConfigPath); + for (const tsConfigPath of allTsConfigPaths) { + addSourceFilesFromTsConfigSafe({ + tsProject, + tsConfigPath, + debug: Boolean(debug), + }); + } + } + if (configFilePath) { ensureSourceFileInProject({ tsProject, diff --git a/tests/benchmark.bench.ts b/tests/benchmark.bench.ts index d8223c16..cec9b352 100644 --- a/tests/benchmark.bench.ts +++ b/tests/benchmark.bench.ts @@ -4,15 +4,32 @@ import {bench, describe} from 'vitest'; const cliPath = path.resolve(__dirname, '../dist/cli/index.js'); const fixtureDir = path.resolve(__dirname, 'benchmarks/synthetic-monorepo'); +const cmd = `node ${cliPath} generate --config schema/drizzle-zero.config.ts --output /tmp/drizzle-zero-bench-output.ts --suppress-defaults-warning --force`; + +// This synthetic benchmark shows a modest ~1.2x speedup because the fixture files +// are small and self-contained. In real monorepos with heavy type dependencies +// (Effect-TS, Drizzle ORM, etc.), the improvement is 4x+ because the eager path +// loads all files AND their transitive type dependencies from node_modules. +// +// Set DRIZZLE_ZERO_EAGER_LOADING=1 to force the old eager loading behavior. describe('generate', () => { bench( - 'end-to-end generate on synthetic monorepo', + 'eager (DRIZZLE_ZERO_EAGER_LOADING=1)', + () => { + execSync(cmd, { + cwd: fixtureDir, + stdio: 'ignore', + env: {...process.env, DRIZZLE_ZERO_EAGER_LOADING: '1'}, + }); + }, + {warmupIterations: 1, iterations: 5, time: 0}, + ); + + bench( + 'lazy (default)', () => { - execSync( - `node ${cliPath} generate --config schema/drizzle-zero.config.ts --output /tmp/drizzle-zero-bench-output.ts --suppress-defaults-warning --force`, - {cwd: fixtureDir, stdio: 'ignore'}, - ); + execSync(cmd, {cwd: fixtureDir, stdio: 'ignore'}); }, {warmupIterations: 1, iterations: 5, time: 0}, ); diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts index 9a120cf5..ba1a28d5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-01.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-01 (seed 101) - expensive recursive & mapped types +// pkg-01/types-01 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord101 { - a101: { x: number; y: string; z: boolean }; - b101: { p: string[]; q: Record }; - c101: { nested: { deep: { deeper: { deepest: string } } } }; - d101: number; - e101: string; - f101: boolean; - g101: null; - h101: undefined; - i101: bigint; - j101: symbol; -} - -type PartialBig101 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten101 = T extends Array ? Flatten101 : T; -type Nested101 = number[][][][][][][][][][]; -type Flat101 = Flatten101; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly101 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly101 : T[K]; -}; -type DeepRequired101 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired101 : T[K]; +type DeepMerge_0101 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0101 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR101 = DeepReadonly101>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion101 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha101 = Extract; -type ExcludeZulu101 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA101 { width: number; height: number; depth: number } -interface ShapeB101 { color: string; opacity: number; blend: string } -interface ShapeC101 { x: number; y: number; z: number; w: number } -interface ShapeD101 { label: string; title: string; summary: string } - -type Combined101 = ShapeA101 & ShapeB101 & ShapeC101 & ShapeD101; -type OptionalAll101 = { [K in keyof Combined101]?: Combined101[K] }; -type RequiredAll101 = { [K in keyof Combined101]-?: Combined101[K] }; -type ReadonlyAll101 = { readonly [K in keyof Combined101]: Combined101[K] }; -type NullableAll101 = { [K in keyof Combined101]: Combined101[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString101 = T extends string ? true : false; -type IsNumber101 = T extends number ? true : false; -type TypeName101 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_01 | null; children: Entity_01_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0101: number; y0101: string; z0101: boolean }; +} -type TypeNames101 = { - [K in keyof BigRecord101]: TypeName101; +type Path_0101 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0101}` }[keyof T & string] : never; +type EP_0101 = Path_0101; + +type Val_0101 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0101 } + : T[K] extends object ? { t: 'o'; props: Val_0101 } + : { t: 'u' }; }; +type EV_0101 = Val_0101; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb101 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource101 = "user" | "post" | "comment" | "tag" | "category"; -type Action101 = `${Verb101}_${Resource101}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise101 = T extends Promise ? UnwrapPromise101 : T; -type UnwrapArray101 = T extends (infer U)[] ? UnwrapArray101 : T; -type Head101 = T extends [infer H, ...infer _] ? H : never; -type Tail101 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation101 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation101>] - : never; +interface Registry_01_01 { + entities: Map; + validators: EV_0101; + paths: Set; + merged: DeepMerge_0101; +} -type SmallUnion101 = "a" | "b" | "c" | "d"; -type AllPerms101 = Permutation101; +type CK_0101 = `p01.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig101, - Flat101, - FR101, - BigUnion101, - ExtractAlpha101, - ExcludeZulu101, - OptionalAll101, - RequiredAll101, - ReadonlyAll101, - NullableAll101, - TypeNames101, - Action101, - AllPerms101, -}; +export type { Entity_01_01, Registry_01_01, CK_0101, EP_0101, EV_0101, DeepMerge_0101 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts index 505c4ebd..601a11f3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-02.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-02 (seed 102) - expensive recursive & mapped types +// pkg-01/types-02 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord102 { - a102: { x: number; y: string; z: boolean }; - b102: { p: string[]; q: Record }; - c102: { nested: { deep: { deeper: { deepest: string } } } }; - d102: number; - e102: string; - f102: boolean; - g102: null; - h102: undefined; - i102: bigint; - j102: symbol; -} - -type PartialBig102 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten102 = T extends Array ? Flatten102 : T; -type Nested102 = number[][][][][][][][][][]; -type Flat102 = Flatten102; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly102 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly102 : T[K]; -}; -type DeepRequired102 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired102 : T[K]; +type DeepMerge_0102 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0102 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR102 = DeepReadonly102>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion102 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha102 = Extract; -type ExcludeZulu102 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA102 { width: number; height: number; depth: number } -interface ShapeB102 { color: string; opacity: number; blend: string } -interface ShapeC102 { x: number; y: number; z: number; w: number } -interface ShapeD102 { label: string; title: string; summary: string } - -type Combined102 = ShapeA102 & ShapeB102 & ShapeC102 & ShapeD102; -type OptionalAll102 = { [K in keyof Combined102]?: Combined102[K] }; -type RequiredAll102 = { [K in keyof Combined102]-?: Combined102[K] }; -type ReadonlyAll102 = { readonly [K in keyof Combined102]: Combined102[K] }; -type NullableAll102 = { [K in keyof Combined102]: Combined102[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString102 = T extends string ? true : false; -type IsNumber102 = T extends number ? true : false; -type TypeName102 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_02 | null; children: Entity_01_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0102: number; y0102: string; z0102: boolean }; +} -type TypeNames102 = { - [K in keyof BigRecord102]: TypeName102; +type Path_0102 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0102}` }[keyof T & string] : never; +type EP_0102 = Path_0102; + +type Val_0102 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0102 } + : T[K] extends object ? { t: 'o'; props: Val_0102 } + : { t: 'u' }; }; +type EV_0102 = Val_0102; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb102 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource102 = "user" | "post" | "comment" | "tag" | "category"; -type Action102 = `${Verb102}_${Resource102}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise102 = T extends Promise ? UnwrapPromise102 : T; -type UnwrapArray102 = T extends (infer U)[] ? UnwrapArray102 : T; -type Head102 = T extends [infer H, ...infer _] ? H : never; -type Tail102 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation102 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation102>] - : never; +interface Registry_01_02 { + entities: Map; + validators: EV_0102; + paths: Set; + merged: DeepMerge_0102; +} -type SmallUnion102 = "a" | "b" | "c" | "d"; -type AllPerms102 = Permutation102; +type CK_0102 = `p01.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig102, - Flat102, - FR102, - BigUnion102, - ExtractAlpha102, - ExcludeZulu102, - OptionalAll102, - RequiredAll102, - ReadonlyAll102, - NullableAll102, - TypeNames102, - Action102, - AllPerms102, -}; +export type { Entity_01_02, Registry_01_02, CK_0102, EP_0102, EV_0102, DeepMerge_0102 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts index 47a4df9e..3e7da5ef 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-03.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-03 (seed 103) - expensive recursive & mapped types +// pkg-01/types-03 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord103 { - a103: { x: number; y: string; z: boolean }; - b103: { p: string[]; q: Record }; - c103: { nested: { deep: { deeper: { deepest: string } } } }; - d103: number; - e103: string; - f103: boolean; - g103: null; - h103: undefined; - i103: bigint; - j103: symbol; -} - -type PartialBig103 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten103 = T extends Array ? Flatten103 : T; -type Nested103 = number[][][][][][][][][][]; -type Flat103 = Flatten103; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly103 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly103 : T[K]; -}; -type DeepRequired103 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired103 : T[K]; +type DeepMerge_0103 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0103 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR103 = DeepReadonly103>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion103 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha103 = Extract; -type ExcludeZulu103 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA103 { width: number; height: number; depth: number } -interface ShapeB103 { color: string; opacity: number; blend: string } -interface ShapeC103 { x: number; y: number; z: number; w: number } -interface ShapeD103 { label: string; title: string; summary: string } - -type Combined103 = ShapeA103 & ShapeB103 & ShapeC103 & ShapeD103; -type OptionalAll103 = { [K in keyof Combined103]?: Combined103[K] }; -type RequiredAll103 = { [K in keyof Combined103]-?: Combined103[K] }; -type ReadonlyAll103 = { readonly [K in keyof Combined103]: Combined103[K] }; -type NullableAll103 = { [K in keyof Combined103]: Combined103[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString103 = T extends string ? true : false; -type IsNumber103 = T extends number ? true : false; -type TypeName103 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_03 | null; children: Entity_01_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0103: number; y0103: string; z0103: boolean }; +} -type TypeNames103 = { - [K in keyof BigRecord103]: TypeName103; +type Path_0103 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0103}` }[keyof T & string] : never; +type EP_0103 = Path_0103; + +type Val_0103 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0103 } + : T[K] extends object ? { t: 'o'; props: Val_0103 } + : { t: 'u' }; }; +type EV_0103 = Val_0103; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb103 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource103 = "user" | "post" | "comment" | "tag" | "category"; -type Action103 = `${Verb103}_${Resource103}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise103 = T extends Promise ? UnwrapPromise103 : T; -type UnwrapArray103 = T extends (infer U)[] ? UnwrapArray103 : T; -type Head103 = T extends [infer H, ...infer _] ? H : never; -type Tail103 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation103 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation103>] - : never; +interface Registry_01_03 { + entities: Map; + validators: EV_0103; + paths: Set; + merged: DeepMerge_0103; +} -type SmallUnion103 = "a" | "b" | "c" | "d"; -type AllPerms103 = Permutation103; +type CK_0103 = `p01.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig103, - Flat103, - FR103, - BigUnion103, - ExtractAlpha103, - ExcludeZulu103, - OptionalAll103, - RequiredAll103, - ReadonlyAll103, - NullableAll103, - TypeNames103, - Action103, - AllPerms103, -}; +export type { Entity_01_03, Registry_01_03, CK_0103, EP_0103, EV_0103, DeepMerge_0103 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts index 8eb31979..044e94ac 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-04.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-04 (seed 104) - expensive recursive & mapped types +// pkg-01/types-04 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord104 { - a104: { x: number; y: string; z: boolean }; - b104: { p: string[]; q: Record }; - c104: { nested: { deep: { deeper: { deepest: string } } } }; - d104: number; - e104: string; - f104: boolean; - g104: null; - h104: undefined; - i104: bigint; - j104: symbol; -} - -type PartialBig104 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten104 = T extends Array ? Flatten104 : T; -type Nested104 = number[][][][][][][][][][]; -type Flat104 = Flatten104; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly104 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly104 : T[K]; -}; -type DeepRequired104 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired104 : T[K]; +type DeepMerge_0104 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0104 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR104 = DeepReadonly104>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion104 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha104 = Extract; -type ExcludeZulu104 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA104 { width: number; height: number; depth: number } -interface ShapeB104 { color: string; opacity: number; blend: string } -interface ShapeC104 { x: number; y: number; z: number; w: number } -interface ShapeD104 { label: string; title: string; summary: string } - -type Combined104 = ShapeA104 & ShapeB104 & ShapeC104 & ShapeD104; -type OptionalAll104 = { [K in keyof Combined104]?: Combined104[K] }; -type RequiredAll104 = { [K in keyof Combined104]-?: Combined104[K] }; -type ReadonlyAll104 = { readonly [K in keyof Combined104]: Combined104[K] }; -type NullableAll104 = { [K in keyof Combined104]: Combined104[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString104 = T extends string ? true : false; -type IsNumber104 = T extends number ? true : false; -type TypeName104 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_04 | null; children: Entity_01_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0104: number; y0104: string; z0104: boolean }; +} -type TypeNames104 = { - [K in keyof BigRecord104]: TypeName104; +type Path_0104 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0104}` }[keyof T & string] : never; +type EP_0104 = Path_0104; + +type Val_0104 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0104 } + : T[K] extends object ? { t: 'o'; props: Val_0104 } + : { t: 'u' }; }; +type EV_0104 = Val_0104; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb104 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource104 = "user" | "post" | "comment" | "tag" | "category"; -type Action104 = `${Verb104}_${Resource104}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise104 = T extends Promise ? UnwrapPromise104 : T; -type UnwrapArray104 = T extends (infer U)[] ? UnwrapArray104 : T; -type Head104 = T extends [infer H, ...infer _] ? H : never; -type Tail104 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation104 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation104>] - : never; +interface Registry_01_04 { + entities: Map; + validators: EV_0104; + paths: Set; + merged: DeepMerge_0104; +} -type SmallUnion104 = "a" | "b" | "c" | "d"; -type AllPerms104 = Permutation104; +type CK_0104 = `p01.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig104, - Flat104, - FR104, - BigUnion104, - ExtractAlpha104, - ExcludeZulu104, - OptionalAll104, - RequiredAll104, - ReadonlyAll104, - NullableAll104, - TypeNames104, - Action104, - AllPerms104, -}; +export type { Entity_01_04, Registry_01_04, CK_0104, EP_0104, EV_0104, DeepMerge_0104 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts index f5938fb7..035f199c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-05.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-05 (seed 105) - expensive recursive & mapped types +// pkg-01/types-05 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord105 { - a105: { x: number; y: string; z: boolean }; - b105: { p: string[]; q: Record }; - c105: { nested: { deep: { deeper: { deepest: string } } } }; - d105: number; - e105: string; - f105: boolean; - g105: null; - h105: undefined; - i105: bigint; - j105: symbol; -} - -type PartialBig105 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten105 = T extends Array ? Flatten105 : T; -type Nested105 = number[][][][][][][][][][]; -type Flat105 = Flatten105; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly105 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly105 : T[K]; -}; -type DeepRequired105 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired105 : T[K]; +type DeepMerge_0105 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0105 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR105 = DeepReadonly105>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion105 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha105 = Extract; -type ExcludeZulu105 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA105 { width: number; height: number; depth: number } -interface ShapeB105 { color: string; opacity: number; blend: string } -interface ShapeC105 { x: number; y: number; z: number; w: number } -interface ShapeD105 { label: string; title: string; summary: string } - -type Combined105 = ShapeA105 & ShapeB105 & ShapeC105 & ShapeD105; -type OptionalAll105 = { [K in keyof Combined105]?: Combined105[K] }; -type RequiredAll105 = { [K in keyof Combined105]-?: Combined105[K] }; -type ReadonlyAll105 = { readonly [K in keyof Combined105]: Combined105[K] }; -type NullableAll105 = { [K in keyof Combined105]: Combined105[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString105 = T extends string ? true : false; -type IsNumber105 = T extends number ? true : false; -type TypeName105 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_05 | null; children: Entity_01_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0105: number; y0105: string; z0105: boolean }; +} -type TypeNames105 = { - [K in keyof BigRecord105]: TypeName105; +type Path_0105 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0105}` }[keyof T & string] : never; +type EP_0105 = Path_0105; + +type Val_0105 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0105 } + : T[K] extends object ? { t: 'o'; props: Val_0105 } + : { t: 'u' }; }; +type EV_0105 = Val_0105; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb105 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource105 = "user" | "post" | "comment" | "tag" | "category"; -type Action105 = `${Verb105}_${Resource105}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise105 = T extends Promise ? UnwrapPromise105 : T; -type UnwrapArray105 = T extends (infer U)[] ? UnwrapArray105 : T; -type Head105 = T extends [infer H, ...infer _] ? H : never; -type Tail105 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation105 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation105>] - : never; +interface Registry_01_05 { + entities: Map; + validators: EV_0105; + paths: Set; + merged: DeepMerge_0105; +} -type SmallUnion105 = "a" | "b" | "c" | "d"; -type AllPerms105 = Permutation105; +type CK_0105 = `p01.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig105, - Flat105, - FR105, - BigUnion105, - ExtractAlpha105, - ExcludeZulu105, - OptionalAll105, - RequiredAll105, - ReadonlyAll105, - NullableAll105, - TypeNames105, - Action105, - AllPerms105, -}; +export type { Entity_01_05, Registry_01_05, CK_0105, EP_0105, EV_0105, DeepMerge_0105 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts index 8035811a..8ea38791 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-06.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-06 (seed 106) - expensive recursive & mapped types +// pkg-01/types-06 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord106 { - a106: { x: number; y: string; z: boolean }; - b106: { p: string[]; q: Record }; - c106: { nested: { deep: { deeper: { deepest: string } } } }; - d106: number; - e106: string; - f106: boolean; - g106: null; - h106: undefined; - i106: bigint; - j106: symbol; -} - -type PartialBig106 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten106 = T extends Array ? Flatten106 : T; -type Nested106 = number[][][][][][][][][][]; -type Flat106 = Flatten106; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly106 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly106 : T[K]; -}; -type DeepRequired106 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired106 : T[K]; +type DeepMerge_0106 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0106 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR106 = DeepReadonly106>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion106 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha106 = Extract; -type ExcludeZulu106 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA106 { width: number; height: number; depth: number } -interface ShapeB106 { color: string; opacity: number; blend: string } -interface ShapeC106 { x: number; y: number; z: number; w: number } -interface ShapeD106 { label: string; title: string; summary: string } - -type Combined106 = ShapeA106 & ShapeB106 & ShapeC106 & ShapeD106; -type OptionalAll106 = { [K in keyof Combined106]?: Combined106[K] }; -type RequiredAll106 = { [K in keyof Combined106]-?: Combined106[K] }; -type ReadonlyAll106 = { readonly [K in keyof Combined106]: Combined106[K] }; -type NullableAll106 = { [K in keyof Combined106]: Combined106[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString106 = T extends string ? true : false; -type IsNumber106 = T extends number ? true : false; -type TypeName106 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_06 | null; children: Entity_01_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0106: number; y0106: string; z0106: boolean }; +} -type TypeNames106 = { - [K in keyof BigRecord106]: TypeName106; +type Path_0106 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0106}` }[keyof T & string] : never; +type EP_0106 = Path_0106; + +type Val_0106 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0106 } + : T[K] extends object ? { t: 'o'; props: Val_0106 } + : { t: 'u' }; }; +type EV_0106 = Val_0106; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb106 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource106 = "user" | "post" | "comment" | "tag" | "category"; -type Action106 = `${Verb106}_${Resource106}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise106 = T extends Promise ? UnwrapPromise106 : T; -type UnwrapArray106 = T extends (infer U)[] ? UnwrapArray106 : T; -type Head106 = T extends [infer H, ...infer _] ? H : never; -type Tail106 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation106 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation106>] - : never; +interface Registry_01_06 { + entities: Map; + validators: EV_0106; + paths: Set; + merged: DeepMerge_0106; +} -type SmallUnion106 = "a" | "b" | "c" | "d"; -type AllPerms106 = Permutation106; +type CK_0106 = `p01.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig106, - Flat106, - FR106, - BigUnion106, - ExtractAlpha106, - ExcludeZulu106, - OptionalAll106, - RequiredAll106, - ReadonlyAll106, - NullableAll106, - TypeNames106, - Action106, - AllPerms106, -}; +export type { Entity_01_06, Registry_01_06, CK_0106, EP_0106, EV_0106, DeepMerge_0106 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts index b8deced3..6796d6b3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-07.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-07 (seed 107) - expensive recursive & mapped types +// pkg-01/types-07 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord107 { - a107: { x: number; y: string; z: boolean }; - b107: { p: string[]; q: Record }; - c107: { nested: { deep: { deeper: { deepest: string } } } }; - d107: number; - e107: string; - f107: boolean; - g107: null; - h107: undefined; - i107: bigint; - j107: symbol; -} - -type PartialBig107 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten107 = T extends Array ? Flatten107 : T; -type Nested107 = number[][][][][][][][][][]; -type Flat107 = Flatten107; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly107 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly107 : T[K]; -}; -type DeepRequired107 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired107 : T[K]; +type DeepMerge_0107 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0107 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR107 = DeepReadonly107>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion107 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha107 = Extract; -type ExcludeZulu107 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA107 { width: number; height: number; depth: number } -interface ShapeB107 { color: string; opacity: number; blend: string } -interface ShapeC107 { x: number; y: number; z: number; w: number } -interface ShapeD107 { label: string; title: string; summary: string } - -type Combined107 = ShapeA107 & ShapeB107 & ShapeC107 & ShapeD107; -type OptionalAll107 = { [K in keyof Combined107]?: Combined107[K] }; -type RequiredAll107 = { [K in keyof Combined107]-?: Combined107[K] }; -type ReadonlyAll107 = { readonly [K in keyof Combined107]: Combined107[K] }; -type NullableAll107 = { [K in keyof Combined107]: Combined107[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString107 = T extends string ? true : false; -type IsNumber107 = T extends number ? true : false; -type TypeName107 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_07 | null; children: Entity_01_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0107: number; y0107: string; z0107: boolean }; +} -type TypeNames107 = { - [K in keyof BigRecord107]: TypeName107; +type Path_0107 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0107}` }[keyof T & string] : never; +type EP_0107 = Path_0107; + +type Val_0107 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0107 } + : T[K] extends object ? { t: 'o'; props: Val_0107 } + : { t: 'u' }; }; +type EV_0107 = Val_0107; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb107 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource107 = "user" | "post" | "comment" | "tag" | "category"; -type Action107 = `${Verb107}_${Resource107}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise107 = T extends Promise ? UnwrapPromise107 : T; -type UnwrapArray107 = T extends (infer U)[] ? UnwrapArray107 : T; -type Head107 = T extends [infer H, ...infer _] ? H : never; -type Tail107 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation107 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation107>] - : never; +interface Registry_01_07 { + entities: Map; + validators: EV_0107; + paths: Set; + merged: DeepMerge_0107; +} -type SmallUnion107 = "a" | "b" | "c" | "d"; -type AllPerms107 = Permutation107; +type CK_0107 = `p01.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig107, - Flat107, - FR107, - BigUnion107, - ExtractAlpha107, - ExcludeZulu107, - OptionalAll107, - RequiredAll107, - ReadonlyAll107, - NullableAll107, - TypeNames107, - Action107, - AllPerms107, -}; +export type { Entity_01_07, Registry_01_07, CK_0107, EP_0107, EV_0107, DeepMerge_0107 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts index 9b1af810..711a2d4c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-08.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-08 (seed 108) - expensive recursive & mapped types +// pkg-01/types-08 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord108 { - a108: { x: number; y: string; z: boolean }; - b108: { p: string[]; q: Record }; - c108: { nested: { deep: { deeper: { deepest: string } } } }; - d108: number; - e108: string; - f108: boolean; - g108: null; - h108: undefined; - i108: bigint; - j108: symbol; -} - -type PartialBig108 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten108 = T extends Array ? Flatten108 : T; -type Nested108 = number[][][][][][][][][][]; -type Flat108 = Flatten108; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly108 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly108 : T[K]; -}; -type DeepRequired108 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired108 : T[K]; +type DeepMerge_0108 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0108 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR108 = DeepReadonly108>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion108 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha108 = Extract; -type ExcludeZulu108 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA108 { width: number; height: number; depth: number } -interface ShapeB108 { color: string; opacity: number; blend: string } -interface ShapeC108 { x: number; y: number; z: number; w: number } -interface ShapeD108 { label: string; title: string; summary: string } - -type Combined108 = ShapeA108 & ShapeB108 & ShapeC108 & ShapeD108; -type OptionalAll108 = { [K in keyof Combined108]?: Combined108[K] }; -type RequiredAll108 = { [K in keyof Combined108]-?: Combined108[K] }; -type ReadonlyAll108 = { readonly [K in keyof Combined108]: Combined108[K] }; -type NullableAll108 = { [K in keyof Combined108]: Combined108[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString108 = T extends string ? true : false; -type IsNumber108 = T extends number ? true : false; -type TypeName108 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_08 | null; children: Entity_01_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0108: number; y0108: string; z0108: boolean }; +} -type TypeNames108 = { - [K in keyof BigRecord108]: TypeName108; +type Path_0108 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0108}` }[keyof T & string] : never; +type EP_0108 = Path_0108; + +type Val_0108 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0108 } + : T[K] extends object ? { t: 'o'; props: Val_0108 } + : { t: 'u' }; }; +type EV_0108 = Val_0108; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb108 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource108 = "user" | "post" | "comment" | "tag" | "category"; -type Action108 = `${Verb108}_${Resource108}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise108 = T extends Promise ? UnwrapPromise108 : T; -type UnwrapArray108 = T extends (infer U)[] ? UnwrapArray108 : T; -type Head108 = T extends [infer H, ...infer _] ? H : never; -type Tail108 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation108 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation108>] - : never; +interface Registry_01_08 { + entities: Map; + validators: EV_0108; + paths: Set; + merged: DeepMerge_0108; +} -type SmallUnion108 = "a" | "b" | "c" | "d"; -type AllPerms108 = Permutation108; +type CK_0108 = `p01.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig108, - Flat108, - FR108, - BigUnion108, - ExtractAlpha108, - ExcludeZulu108, - OptionalAll108, - RequiredAll108, - ReadonlyAll108, - NullableAll108, - TypeNames108, - Action108, - AllPerms108, -}; +export type { Entity_01_08, Registry_01_08, CK_0108, EP_0108, EV_0108, DeepMerge_0108 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts index 7b3450be..9f39ce46 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-09.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-09 (seed 109) - expensive recursive & mapped types +// pkg-01/types-09 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord109 { - a109: { x: number; y: string; z: boolean }; - b109: { p: string[]; q: Record }; - c109: { nested: { deep: { deeper: { deepest: string } } } }; - d109: number; - e109: string; - f109: boolean; - g109: null; - h109: undefined; - i109: bigint; - j109: symbol; -} - -type PartialBig109 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten109 = T extends Array ? Flatten109 : T; -type Nested109 = number[][][][][][][][][][]; -type Flat109 = Flatten109; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly109 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly109 : T[K]; -}; -type DeepRequired109 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired109 : T[K]; +type DeepMerge_0109 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0109 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR109 = DeepReadonly109>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion109 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha109 = Extract; -type ExcludeZulu109 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA109 { width: number; height: number; depth: number } -interface ShapeB109 { color: string; opacity: number; blend: string } -interface ShapeC109 { x: number; y: number; z: number; w: number } -interface ShapeD109 { label: string; title: string; summary: string } - -type Combined109 = ShapeA109 & ShapeB109 & ShapeC109 & ShapeD109; -type OptionalAll109 = { [K in keyof Combined109]?: Combined109[K] }; -type RequiredAll109 = { [K in keyof Combined109]-?: Combined109[K] }; -type ReadonlyAll109 = { readonly [K in keyof Combined109]: Combined109[K] }; -type NullableAll109 = { [K in keyof Combined109]: Combined109[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString109 = T extends string ? true : false; -type IsNumber109 = T extends number ? true : false; -type TypeName109 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_09 | null; children: Entity_01_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0109: number; y0109: string; z0109: boolean }; +} -type TypeNames109 = { - [K in keyof BigRecord109]: TypeName109; +type Path_0109 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0109}` }[keyof T & string] : never; +type EP_0109 = Path_0109; + +type Val_0109 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0109 } + : T[K] extends object ? { t: 'o'; props: Val_0109 } + : { t: 'u' }; }; +type EV_0109 = Val_0109; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb109 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource109 = "user" | "post" | "comment" | "tag" | "category"; -type Action109 = `${Verb109}_${Resource109}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise109 = T extends Promise ? UnwrapPromise109 : T; -type UnwrapArray109 = T extends (infer U)[] ? UnwrapArray109 : T; -type Head109 = T extends [infer H, ...infer _] ? H : never; -type Tail109 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation109 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation109>] - : never; +interface Registry_01_09 { + entities: Map; + validators: EV_0109; + paths: Set; + merged: DeepMerge_0109; +} -type SmallUnion109 = "a" | "b" | "c" | "d"; -type AllPerms109 = Permutation109; +type CK_0109 = `p01.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig109, - Flat109, - FR109, - BigUnion109, - ExtractAlpha109, - ExcludeZulu109, - OptionalAll109, - RequiredAll109, - ReadonlyAll109, - NullableAll109, - TypeNames109, - Action109, - AllPerms109, -}; +export type { Entity_01_09, Registry_01_09, CK_0109, EP_0109, EV_0109, DeepMerge_0109 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts index 2627547d..59c89011 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-10.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-10 (seed 110) - expensive recursive & mapped types +// pkg-01/types-10 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord110 { - a110: { x: number; y: string; z: boolean }; - b110: { p: string[]; q: Record }; - c110: { nested: { deep: { deeper: { deepest: string } } } }; - d110: number; - e110: string; - f110: boolean; - g110: null; - h110: undefined; - i110: bigint; - j110: symbol; -} - -type PartialBig110 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten110 = T extends Array ? Flatten110 : T; -type Nested110 = number[][][][][][][][][][]; -type Flat110 = Flatten110; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly110 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly110 : T[K]; -}; -type DeepRequired110 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired110 : T[K]; +type DeepMerge_0110 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0110 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR110 = DeepReadonly110>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion110 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha110 = Extract; -type ExcludeZulu110 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA110 { width: number; height: number; depth: number } -interface ShapeB110 { color: string; opacity: number; blend: string } -interface ShapeC110 { x: number; y: number; z: number; w: number } -interface ShapeD110 { label: string; title: string; summary: string } - -type Combined110 = ShapeA110 & ShapeB110 & ShapeC110 & ShapeD110; -type OptionalAll110 = { [K in keyof Combined110]?: Combined110[K] }; -type RequiredAll110 = { [K in keyof Combined110]-?: Combined110[K] }; -type ReadonlyAll110 = { readonly [K in keyof Combined110]: Combined110[K] }; -type NullableAll110 = { [K in keyof Combined110]: Combined110[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString110 = T extends string ? true : false; -type IsNumber110 = T extends number ? true : false; -type TypeName110 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_10 | null; children: Entity_01_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0110: number; y0110: string; z0110: boolean }; +} -type TypeNames110 = { - [K in keyof BigRecord110]: TypeName110; +type Path_0110 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0110}` }[keyof T & string] : never; +type EP_0110 = Path_0110; + +type Val_0110 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0110 } + : T[K] extends object ? { t: 'o'; props: Val_0110 } + : { t: 'u' }; }; +type EV_0110 = Val_0110; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb110 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource110 = "user" | "post" | "comment" | "tag" | "category"; -type Action110 = `${Verb110}_${Resource110}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise110 = T extends Promise ? UnwrapPromise110 : T; -type UnwrapArray110 = T extends (infer U)[] ? UnwrapArray110 : T; -type Head110 = T extends [infer H, ...infer _] ? H : never; -type Tail110 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation110 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation110>] - : never; +interface Registry_01_10 { + entities: Map; + validators: EV_0110; + paths: Set; + merged: DeepMerge_0110; +} -type SmallUnion110 = "a" | "b" | "c" | "d"; -type AllPerms110 = Permutation110; +type CK_0110 = `p01.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig110, - Flat110, - FR110, - BigUnion110, - ExtractAlpha110, - ExcludeZulu110, - OptionalAll110, - RequiredAll110, - ReadonlyAll110, - NullableAll110, - TypeNames110, - Action110, - AllPerms110, -}; +export type { Entity_01_10, Registry_01_10, CK_0110, EP_0110, EV_0110, DeepMerge_0110 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts index c6d8072d..b9a2b80e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-11.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-11 (seed 111) - expensive recursive & mapped types +// pkg-01/types-11 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord111 { - a111: { x: number; y: string; z: boolean }; - b111: { p: string[]; q: Record }; - c111: { nested: { deep: { deeper: { deepest: string } } } }; - d111: number; - e111: string; - f111: boolean; - g111: null; - h111: undefined; - i111: bigint; - j111: symbol; -} - -type PartialBig111 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten111 = T extends Array ? Flatten111 : T; -type Nested111 = number[][][][][][][][][][]; -type Flat111 = Flatten111; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly111 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly111 : T[K]; -}; -type DeepRequired111 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired111 : T[K]; +type DeepMerge_0111 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0111 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR111 = DeepReadonly111>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion111 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha111 = Extract; -type ExcludeZulu111 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA111 { width: number; height: number; depth: number } -interface ShapeB111 { color: string; opacity: number; blend: string } -interface ShapeC111 { x: number; y: number; z: number; w: number } -interface ShapeD111 { label: string; title: string; summary: string } - -type Combined111 = ShapeA111 & ShapeB111 & ShapeC111 & ShapeD111; -type OptionalAll111 = { [K in keyof Combined111]?: Combined111[K] }; -type RequiredAll111 = { [K in keyof Combined111]-?: Combined111[K] }; -type ReadonlyAll111 = { readonly [K in keyof Combined111]: Combined111[K] }; -type NullableAll111 = { [K in keyof Combined111]: Combined111[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString111 = T extends string ? true : false; -type IsNumber111 = T extends number ? true : false; -type TypeName111 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_11 | null; children: Entity_01_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0111: number; y0111: string; z0111: boolean }; +} -type TypeNames111 = { - [K in keyof BigRecord111]: TypeName111; +type Path_0111 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0111}` }[keyof T & string] : never; +type EP_0111 = Path_0111; + +type Val_0111 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0111 } + : T[K] extends object ? { t: 'o'; props: Val_0111 } + : { t: 'u' }; }; +type EV_0111 = Val_0111; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb111 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource111 = "user" | "post" | "comment" | "tag" | "category"; -type Action111 = `${Verb111}_${Resource111}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise111 = T extends Promise ? UnwrapPromise111 : T; -type UnwrapArray111 = T extends (infer U)[] ? UnwrapArray111 : T; -type Head111 = T extends [infer H, ...infer _] ? H : never; -type Tail111 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation111 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation111>] - : never; +interface Registry_01_11 { + entities: Map; + validators: EV_0111; + paths: Set; + merged: DeepMerge_0111; +} -type SmallUnion111 = "a" | "b" | "c" | "d"; -type AllPerms111 = Permutation111; +type CK_0111 = `p01.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig111, - Flat111, - FR111, - BigUnion111, - ExtractAlpha111, - ExcludeZulu111, - OptionalAll111, - RequiredAll111, - ReadonlyAll111, - NullableAll111, - TypeNames111, - Action111, - AllPerms111, -}; +export type { Entity_01_11, Registry_01_11, CK_0111, EP_0111, EV_0111, DeepMerge_0111 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts index 21803e9d..5d8aa302 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-12.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-12 (seed 112) - expensive recursive & mapped types +// pkg-01/types-12 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord112 { - a112: { x: number; y: string; z: boolean }; - b112: { p: string[]; q: Record }; - c112: { nested: { deep: { deeper: { deepest: string } } } }; - d112: number; - e112: string; - f112: boolean; - g112: null; - h112: undefined; - i112: bigint; - j112: symbol; -} - -type PartialBig112 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten112 = T extends Array ? Flatten112 : T; -type Nested112 = number[][][][][][][][][][]; -type Flat112 = Flatten112; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly112 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly112 : T[K]; -}; -type DeepRequired112 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired112 : T[K]; +type DeepMerge_0112 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0112 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR112 = DeepReadonly112>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion112 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha112 = Extract; -type ExcludeZulu112 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA112 { width: number; height: number; depth: number } -interface ShapeB112 { color: string; opacity: number; blend: string } -interface ShapeC112 { x: number; y: number; z: number; w: number } -interface ShapeD112 { label: string; title: string; summary: string } - -type Combined112 = ShapeA112 & ShapeB112 & ShapeC112 & ShapeD112; -type OptionalAll112 = { [K in keyof Combined112]?: Combined112[K] }; -type RequiredAll112 = { [K in keyof Combined112]-?: Combined112[K] }; -type ReadonlyAll112 = { readonly [K in keyof Combined112]: Combined112[K] }; -type NullableAll112 = { [K in keyof Combined112]: Combined112[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString112 = T extends string ? true : false; -type IsNumber112 = T extends number ? true : false; -type TypeName112 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_12 | null; children: Entity_01_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0112: number; y0112: string; z0112: boolean }; +} -type TypeNames112 = { - [K in keyof BigRecord112]: TypeName112; +type Path_0112 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0112}` }[keyof T & string] : never; +type EP_0112 = Path_0112; + +type Val_0112 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0112 } + : T[K] extends object ? { t: 'o'; props: Val_0112 } + : { t: 'u' }; }; +type EV_0112 = Val_0112; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb112 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource112 = "user" | "post" | "comment" | "tag" | "category"; -type Action112 = `${Verb112}_${Resource112}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise112 = T extends Promise ? UnwrapPromise112 : T; -type UnwrapArray112 = T extends (infer U)[] ? UnwrapArray112 : T; -type Head112 = T extends [infer H, ...infer _] ? H : never; -type Tail112 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation112 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation112>] - : never; +interface Registry_01_12 { + entities: Map; + validators: EV_0112; + paths: Set; + merged: DeepMerge_0112; +} -type SmallUnion112 = "a" | "b" | "c" | "d"; -type AllPerms112 = Permutation112; +type CK_0112 = `p01.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig112, - Flat112, - FR112, - BigUnion112, - ExtractAlpha112, - ExcludeZulu112, - OptionalAll112, - RequiredAll112, - ReadonlyAll112, - NullableAll112, - TypeNames112, - Action112, - AllPerms112, -}; +export type { Entity_01_12, Registry_01_12, CK_0112, EP_0112, EV_0112, DeepMerge_0112 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts index 0407f75b..775758f5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-13.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-13 (seed 113) - expensive recursive & mapped types +// pkg-01/types-13 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord113 { - a113: { x: number; y: string; z: boolean }; - b113: { p: string[]; q: Record }; - c113: { nested: { deep: { deeper: { deepest: string } } } }; - d113: number; - e113: string; - f113: boolean; - g113: null; - h113: undefined; - i113: bigint; - j113: symbol; -} - -type PartialBig113 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten113 = T extends Array ? Flatten113 : T; -type Nested113 = number[][][][][][][][][][]; -type Flat113 = Flatten113; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly113 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly113 : T[K]; -}; -type DeepRequired113 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired113 : T[K]; +type DeepMerge_0113 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0113 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR113 = DeepReadonly113>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion113 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha113 = Extract; -type ExcludeZulu113 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA113 { width: number; height: number; depth: number } -interface ShapeB113 { color: string; opacity: number; blend: string } -interface ShapeC113 { x: number; y: number; z: number; w: number } -interface ShapeD113 { label: string; title: string; summary: string } - -type Combined113 = ShapeA113 & ShapeB113 & ShapeC113 & ShapeD113; -type OptionalAll113 = { [K in keyof Combined113]?: Combined113[K] }; -type RequiredAll113 = { [K in keyof Combined113]-?: Combined113[K] }; -type ReadonlyAll113 = { readonly [K in keyof Combined113]: Combined113[K] }; -type NullableAll113 = { [K in keyof Combined113]: Combined113[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString113 = T extends string ? true : false; -type IsNumber113 = T extends number ? true : false; -type TypeName113 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_13 | null; children: Entity_01_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0113: number; y0113: string; z0113: boolean }; +} -type TypeNames113 = { - [K in keyof BigRecord113]: TypeName113; +type Path_0113 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0113}` }[keyof T & string] : never; +type EP_0113 = Path_0113; + +type Val_0113 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0113 } + : T[K] extends object ? { t: 'o'; props: Val_0113 } + : { t: 'u' }; }; +type EV_0113 = Val_0113; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb113 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource113 = "user" | "post" | "comment" | "tag" | "category"; -type Action113 = `${Verb113}_${Resource113}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise113 = T extends Promise ? UnwrapPromise113 : T; -type UnwrapArray113 = T extends (infer U)[] ? UnwrapArray113 : T; -type Head113 = T extends [infer H, ...infer _] ? H : never; -type Tail113 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation113 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation113>] - : never; +interface Registry_01_13 { + entities: Map; + validators: EV_0113; + paths: Set; + merged: DeepMerge_0113; +} -type SmallUnion113 = "a" | "b" | "c" | "d"; -type AllPerms113 = Permutation113; +type CK_0113 = `p01.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig113, - Flat113, - FR113, - BigUnion113, - ExtractAlpha113, - ExcludeZulu113, - OptionalAll113, - RequiredAll113, - ReadonlyAll113, - NullableAll113, - TypeNames113, - Action113, - AllPerms113, -}; +export type { Entity_01_13, Registry_01_13, CK_0113, EP_0113, EV_0113, DeepMerge_0113 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts index eae6b01e..0ca0aed6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-14.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-14 (seed 114) - expensive recursive & mapped types +// pkg-01/types-14 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord114 { - a114: { x: number; y: string; z: boolean }; - b114: { p: string[]; q: Record }; - c114: { nested: { deep: { deeper: { deepest: string } } } }; - d114: number; - e114: string; - f114: boolean; - g114: null; - h114: undefined; - i114: bigint; - j114: symbol; -} - -type PartialBig114 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten114 = T extends Array ? Flatten114 : T; -type Nested114 = number[][][][][][][][][][]; -type Flat114 = Flatten114; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly114 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly114 : T[K]; -}; -type DeepRequired114 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired114 : T[K]; +type DeepMerge_0114 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0114 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR114 = DeepReadonly114>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion114 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha114 = Extract; -type ExcludeZulu114 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA114 { width: number; height: number; depth: number } -interface ShapeB114 { color: string; opacity: number; blend: string } -interface ShapeC114 { x: number; y: number; z: number; w: number } -interface ShapeD114 { label: string; title: string; summary: string } - -type Combined114 = ShapeA114 & ShapeB114 & ShapeC114 & ShapeD114; -type OptionalAll114 = { [K in keyof Combined114]?: Combined114[K] }; -type RequiredAll114 = { [K in keyof Combined114]-?: Combined114[K] }; -type ReadonlyAll114 = { readonly [K in keyof Combined114]: Combined114[K] }; -type NullableAll114 = { [K in keyof Combined114]: Combined114[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString114 = T extends string ? true : false; -type IsNumber114 = T extends number ? true : false; -type TypeName114 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_14 | null; children: Entity_01_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0114: number; y0114: string; z0114: boolean }; +} -type TypeNames114 = { - [K in keyof BigRecord114]: TypeName114; +type Path_0114 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0114}` }[keyof T & string] : never; +type EP_0114 = Path_0114; + +type Val_0114 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0114 } + : T[K] extends object ? { t: 'o'; props: Val_0114 } + : { t: 'u' }; }; +type EV_0114 = Val_0114; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb114 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource114 = "user" | "post" | "comment" | "tag" | "category"; -type Action114 = `${Verb114}_${Resource114}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise114 = T extends Promise ? UnwrapPromise114 : T; -type UnwrapArray114 = T extends (infer U)[] ? UnwrapArray114 : T; -type Head114 = T extends [infer H, ...infer _] ? H : never; -type Tail114 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation114 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation114>] - : never; +interface Registry_01_14 { + entities: Map; + validators: EV_0114; + paths: Set; + merged: DeepMerge_0114; +} -type SmallUnion114 = "a" | "b" | "c" | "d"; -type AllPerms114 = Permutation114; +type CK_0114 = `p01.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig114, - Flat114, - FR114, - BigUnion114, - ExtractAlpha114, - ExcludeZulu114, - OptionalAll114, - RequiredAll114, - ReadonlyAll114, - NullableAll114, - TypeNames114, - Action114, - AllPerms114, -}; +export type { Entity_01_14, Registry_01_14, CK_0114, EP_0114, EV_0114, DeepMerge_0114 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts index ec59e747..a885ee0b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-15.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-15 (seed 115) - expensive recursive & mapped types +// pkg-01/types-15 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord115 { - a115: { x: number; y: string; z: boolean }; - b115: { p: string[]; q: Record }; - c115: { nested: { deep: { deeper: { deepest: string } } } }; - d115: number; - e115: string; - f115: boolean; - g115: null; - h115: undefined; - i115: bigint; - j115: symbol; -} - -type PartialBig115 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten115 = T extends Array ? Flatten115 : T; -type Nested115 = number[][][][][][][][][][]; -type Flat115 = Flatten115; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly115 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly115 : T[K]; -}; -type DeepRequired115 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired115 : T[K]; +type DeepMerge_0115 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0115 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR115 = DeepReadonly115>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion115 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha115 = Extract; -type ExcludeZulu115 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA115 { width: number; height: number; depth: number } -interface ShapeB115 { color: string; opacity: number; blend: string } -interface ShapeC115 { x: number; y: number; z: number; w: number } -interface ShapeD115 { label: string; title: string; summary: string } - -type Combined115 = ShapeA115 & ShapeB115 & ShapeC115 & ShapeD115; -type OptionalAll115 = { [K in keyof Combined115]?: Combined115[K] }; -type RequiredAll115 = { [K in keyof Combined115]-?: Combined115[K] }; -type ReadonlyAll115 = { readonly [K in keyof Combined115]: Combined115[K] }; -type NullableAll115 = { [K in keyof Combined115]: Combined115[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString115 = T extends string ? true : false; -type IsNumber115 = T extends number ? true : false; -type TypeName115 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_15 | null; children: Entity_01_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0115: number; y0115: string; z0115: boolean }; +} -type TypeNames115 = { - [K in keyof BigRecord115]: TypeName115; +type Path_0115 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0115}` }[keyof T & string] : never; +type EP_0115 = Path_0115; + +type Val_0115 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0115 } + : T[K] extends object ? { t: 'o'; props: Val_0115 } + : { t: 'u' }; }; +type EV_0115 = Val_0115; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb115 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource115 = "user" | "post" | "comment" | "tag" | "category"; -type Action115 = `${Verb115}_${Resource115}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise115 = T extends Promise ? UnwrapPromise115 : T; -type UnwrapArray115 = T extends (infer U)[] ? UnwrapArray115 : T; -type Head115 = T extends [infer H, ...infer _] ? H : never; -type Tail115 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation115 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation115>] - : never; +interface Registry_01_15 { + entities: Map; + validators: EV_0115; + paths: Set; + merged: DeepMerge_0115; +} -type SmallUnion115 = "a" | "b" | "c" | "d"; -type AllPerms115 = Permutation115; +type CK_0115 = `p01.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig115, - Flat115, - FR115, - BigUnion115, - ExtractAlpha115, - ExcludeZulu115, - OptionalAll115, - RequiredAll115, - ReadonlyAll115, - NullableAll115, - TypeNames115, - Action115, - AllPerms115, -}; +export type { Entity_01_15, Registry_01_15, CK_0115, EP_0115, EV_0115, DeepMerge_0115 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts index 8652719f..f00fdd1d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-16.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-16 (seed 116) - expensive recursive & mapped types +// pkg-01/types-16 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord116 { - a116: { x: number; y: string; z: boolean }; - b116: { p: string[]; q: Record }; - c116: { nested: { deep: { deeper: { deepest: string } } } }; - d116: number; - e116: string; - f116: boolean; - g116: null; - h116: undefined; - i116: bigint; - j116: symbol; -} - -type PartialBig116 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten116 = T extends Array ? Flatten116 : T; -type Nested116 = number[][][][][][][][][][]; -type Flat116 = Flatten116; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly116 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly116 : T[K]; -}; -type DeepRequired116 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired116 : T[K]; +type DeepMerge_0116 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0116 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR116 = DeepReadonly116>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion116 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha116 = Extract; -type ExcludeZulu116 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA116 { width: number; height: number; depth: number } -interface ShapeB116 { color: string; opacity: number; blend: string } -interface ShapeC116 { x: number; y: number; z: number; w: number } -interface ShapeD116 { label: string; title: string; summary: string } - -type Combined116 = ShapeA116 & ShapeB116 & ShapeC116 & ShapeD116; -type OptionalAll116 = { [K in keyof Combined116]?: Combined116[K] }; -type RequiredAll116 = { [K in keyof Combined116]-?: Combined116[K] }; -type ReadonlyAll116 = { readonly [K in keyof Combined116]: Combined116[K] }; -type NullableAll116 = { [K in keyof Combined116]: Combined116[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString116 = T extends string ? true : false; -type IsNumber116 = T extends number ? true : false; -type TypeName116 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_16 | null; children: Entity_01_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0116: number; y0116: string; z0116: boolean }; +} -type TypeNames116 = { - [K in keyof BigRecord116]: TypeName116; +type Path_0116 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0116}` }[keyof T & string] : never; +type EP_0116 = Path_0116; + +type Val_0116 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0116 } + : T[K] extends object ? { t: 'o'; props: Val_0116 } + : { t: 'u' }; }; +type EV_0116 = Val_0116; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb116 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource116 = "user" | "post" | "comment" | "tag" | "category"; -type Action116 = `${Verb116}_${Resource116}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise116 = T extends Promise ? UnwrapPromise116 : T; -type UnwrapArray116 = T extends (infer U)[] ? UnwrapArray116 : T; -type Head116 = T extends [infer H, ...infer _] ? H : never; -type Tail116 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation116 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation116>] - : never; +interface Registry_01_16 { + entities: Map; + validators: EV_0116; + paths: Set; + merged: DeepMerge_0116; +} -type SmallUnion116 = "a" | "b" | "c" | "d"; -type AllPerms116 = Permutation116; +type CK_0116 = `p01.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig116, - Flat116, - FR116, - BigUnion116, - ExtractAlpha116, - ExcludeZulu116, - OptionalAll116, - RequiredAll116, - ReadonlyAll116, - NullableAll116, - TypeNames116, - Action116, - AllPerms116, -}; +export type { Entity_01_16, Registry_01_16, CK_0116, EP_0116, EV_0116, DeepMerge_0116 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts index d948a2c6..7ad9600c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-17.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-17 (seed 117) - expensive recursive & mapped types +// pkg-01/types-17 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord117 { - a117: { x: number; y: string; z: boolean }; - b117: { p: string[]; q: Record }; - c117: { nested: { deep: { deeper: { deepest: string } } } }; - d117: number; - e117: string; - f117: boolean; - g117: null; - h117: undefined; - i117: bigint; - j117: symbol; -} - -type PartialBig117 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten117 = T extends Array ? Flatten117 : T; -type Nested117 = number[][][][][][][][][][]; -type Flat117 = Flatten117; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly117 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly117 : T[K]; -}; -type DeepRequired117 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired117 : T[K]; +type DeepMerge_0117 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0117 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR117 = DeepReadonly117>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion117 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha117 = Extract; -type ExcludeZulu117 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA117 { width: number; height: number; depth: number } -interface ShapeB117 { color: string; opacity: number; blend: string } -interface ShapeC117 { x: number; y: number; z: number; w: number } -interface ShapeD117 { label: string; title: string; summary: string } - -type Combined117 = ShapeA117 & ShapeB117 & ShapeC117 & ShapeD117; -type OptionalAll117 = { [K in keyof Combined117]?: Combined117[K] }; -type RequiredAll117 = { [K in keyof Combined117]-?: Combined117[K] }; -type ReadonlyAll117 = { readonly [K in keyof Combined117]: Combined117[K] }; -type NullableAll117 = { [K in keyof Combined117]: Combined117[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString117 = T extends string ? true : false; -type IsNumber117 = T extends number ? true : false; -type TypeName117 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_17 | null; children: Entity_01_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0117: number; y0117: string; z0117: boolean }; +} -type TypeNames117 = { - [K in keyof BigRecord117]: TypeName117; +type Path_0117 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0117}` }[keyof T & string] : never; +type EP_0117 = Path_0117; + +type Val_0117 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0117 } + : T[K] extends object ? { t: 'o'; props: Val_0117 } + : { t: 'u' }; }; +type EV_0117 = Val_0117; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb117 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource117 = "user" | "post" | "comment" | "tag" | "category"; -type Action117 = `${Verb117}_${Resource117}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise117 = T extends Promise ? UnwrapPromise117 : T; -type UnwrapArray117 = T extends (infer U)[] ? UnwrapArray117 : T; -type Head117 = T extends [infer H, ...infer _] ? H : never; -type Tail117 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation117 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation117>] - : never; +interface Registry_01_17 { + entities: Map; + validators: EV_0117; + paths: Set; + merged: DeepMerge_0117; +} -type SmallUnion117 = "a" | "b" | "c" | "d"; -type AllPerms117 = Permutation117; +type CK_0117 = `p01.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig117, - Flat117, - FR117, - BigUnion117, - ExtractAlpha117, - ExcludeZulu117, - OptionalAll117, - RequiredAll117, - ReadonlyAll117, - NullableAll117, - TypeNames117, - Action117, - AllPerms117, -}; +export type { Entity_01_17, Registry_01_17, CK_0117, EP_0117, EV_0117, DeepMerge_0117 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts index ce6e5d3f..5240c556 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-18.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-18 (seed 118) - expensive recursive & mapped types +// pkg-01/types-18 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord118 { - a118: { x: number; y: string; z: boolean }; - b118: { p: string[]; q: Record }; - c118: { nested: { deep: { deeper: { deepest: string } } } }; - d118: number; - e118: string; - f118: boolean; - g118: null; - h118: undefined; - i118: bigint; - j118: symbol; -} - -type PartialBig118 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten118 = T extends Array ? Flatten118 : T; -type Nested118 = number[][][][][][][][][][]; -type Flat118 = Flatten118; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly118 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly118 : T[K]; -}; -type DeepRequired118 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired118 : T[K]; +type DeepMerge_0118 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0118 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR118 = DeepReadonly118>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion118 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha118 = Extract; -type ExcludeZulu118 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA118 { width: number; height: number; depth: number } -interface ShapeB118 { color: string; opacity: number; blend: string } -interface ShapeC118 { x: number; y: number; z: number; w: number } -interface ShapeD118 { label: string; title: string; summary: string } - -type Combined118 = ShapeA118 & ShapeB118 & ShapeC118 & ShapeD118; -type OptionalAll118 = { [K in keyof Combined118]?: Combined118[K] }; -type RequiredAll118 = { [K in keyof Combined118]-?: Combined118[K] }; -type ReadonlyAll118 = { readonly [K in keyof Combined118]: Combined118[K] }; -type NullableAll118 = { [K in keyof Combined118]: Combined118[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString118 = T extends string ? true : false; -type IsNumber118 = T extends number ? true : false; -type TypeName118 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_18 | null; children: Entity_01_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0118: number; y0118: string; z0118: boolean }; +} -type TypeNames118 = { - [K in keyof BigRecord118]: TypeName118; +type Path_0118 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0118}` }[keyof T & string] : never; +type EP_0118 = Path_0118; + +type Val_0118 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0118 } + : T[K] extends object ? { t: 'o'; props: Val_0118 } + : { t: 'u' }; }; +type EV_0118 = Val_0118; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb118 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource118 = "user" | "post" | "comment" | "tag" | "category"; -type Action118 = `${Verb118}_${Resource118}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise118 = T extends Promise ? UnwrapPromise118 : T; -type UnwrapArray118 = T extends (infer U)[] ? UnwrapArray118 : T; -type Head118 = T extends [infer H, ...infer _] ? H : never; -type Tail118 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation118 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation118>] - : never; +interface Registry_01_18 { + entities: Map; + validators: EV_0118; + paths: Set; + merged: DeepMerge_0118; +} -type SmallUnion118 = "a" | "b" | "c" | "d"; -type AllPerms118 = Permutation118; +type CK_0118 = `p01.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig118, - Flat118, - FR118, - BigUnion118, - ExtractAlpha118, - ExcludeZulu118, - OptionalAll118, - RequiredAll118, - ReadonlyAll118, - NullableAll118, - TypeNames118, - Action118, - AllPerms118, -}; +export type { Entity_01_18, Registry_01_18, CK_0118, EP_0118, EV_0118, DeepMerge_0118 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts index e8f9063b..e740d6c4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-19.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-19 (seed 119) - expensive recursive & mapped types +// pkg-01/types-19 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord119 { - a119: { x: number; y: string; z: boolean }; - b119: { p: string[]; q: Record }; - c119: { nested: { deep: { deeper: { deepest: string } } } }; - d119: number; - e119: string; - f119: boolean; - g119: null; - h119: undefined; - i119: bigint; - j119: symbol; -} - -type PartialBig119 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten119 = T extends Array ? Flatten119 : T; -type Nested119 = number[][][][][][][][][][]; -type Flat119 = Flatten119; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly119 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly119 : T[K]; -}; -type DeepRequired119 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired119 : T[K]; +type DeepMerge_0119 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0119 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR119 = DeepReadonly119>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion119 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha119 = Extract; -type ExcludeZulu119 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA119 { width: number; height: number; depth: number } -interface ShapeB119 { color: string; opacity: number; blend: string } -interface ShapeC119 { x: number; y: number; z: number; w: number } -interface ShapeD119 { label: string; title: string; summary: string } - -type Combined119 = ShapeA119 & ShapeB119 & ShapeC119 & ShapeD119; -type OptionalAll119 = { [K in keyof Combined119]?: Combined119[K] }; -type RequiredAll119 = { [K in keyof Combined119]-?: Combined119[K] }; -type ReadonlyAll119 = { readonly [K in keyof Combined119]: Combined119[K] }; -type NullableAll119 = { [K in keyof Combined119]: Combined119[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString119 = T extends string ? true : false; -type IsNumber119 = T extends number ? true : false; -type TypeName119 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_19 | null; children: Entity_01_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0119: number; y0119: string; z0119: boolean }; +} -type TypeNames119 = { - [K in keyof BigRecord119]: TypeName119; +type Path_0119 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0119}` }[keyof T & string] : never; +type EP_0119 = Path_0119; + +type Val_0119 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0119 } + : T[K] extends object ? { t: 'o'; props: Val_0119 } + : { t: 'u' }; }; +type EV_0119 = Val_0119; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb119 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource119 = "user" | "post" | "comment" | "tag" | "category"; -type Action119 = `${Verb119}_${Resource119}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise119 = T extends Promise ? UnwrapPromise119 : T; -type UnwrapArray119 = T extends (infer U)[] ? UnwrapArray119 : T; -type Head119 = T extends [infer H, ...infer _] ? H : never; -type Tail119 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation119 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation119>] - : never; +interface Registry_01_19 { + entities: Map; + validators: EV_0119; + paths: Set; + merged: DeepMerge_0119; +} -type SmallUnion119 = "a" | "b" | "c" | "d"; -type AllPerms119 = Permutation119; +type CK_0119 = `p01.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig119, - Flat119, - FR119, - BigUnion119, - ExtractAlpha119, - ExcludeZulu119, - OptionalAll119, - RequiredAll119, - ReadonlyAll119, - NullableAll119, - TypeNames119, - Action119, - AllPerms119, -}; +export type { Entity_01_19, Registry_01_19, CK_0119, EP_0119, EV_0119, DeepMerge_0119 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts index 9f4dcd96..3fe95cfa 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-20.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-20 (seed 120) - expensive recursive & mapped types +// pkg-01/types-20 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord120 { - a120: { x: number; y: string; z: boolean }; - b120: { p: string[]; q: Record }; - c120: { nested: { deep: { deeper: { deepest: string } } } }; - d120: number; - e120: string; - f120: boolean; - g120: null; - h120: undefined; - i120: bigint; - j120: symbol; -} - -type PartialBig120 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten120 = T extends Array ? Flatten120 : T; -type Nested120 = number[][][][][][][][][][]; -type Flat120 = Flatten120; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly120 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly120 : T[K]; -}; -type DeepRequired120 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired120 : T[K]; +type DeepMerge_0120 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0120 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR120 = DeepReadonly120>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion120 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha120 = Extract; -type ExcludeZulu120 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA120 { width: number; height: number; depth: number } -interface ShapeB120 { color: string; opacity: number; blend: string } -interface ShapeC120 { x: number; y: number; z: number; w: number } -interface ShapeD120 { label: string; title: string; summary: string } - -type Combined120 = ShapeA120 & ShapeB120 & ShapeC120 & ShapeD120; -type OptionalAll120 = { [K in keyof Combined120]?: Combined120[K] }; -type RequiredAll120 = { [K in keyof Combined120]-?: Combined120[K] }; -type ReadonlyAll120 = { readonly [K in keyof Combined120]: Combined120[K] }; -type NullableAll120 = { [K in keyof Combined120]: Combined120[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString120 = T extends string ? true : false; -type IsNumber120 = T extends number ? true : false; -type TypeName120 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_20 | null; children: Entity_01_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0120: number; y0120: string; z0120: boolean }; +} -type TypeNames120 = { - [K in keyof BigRecord120]: TypeName120; +type Path_0120 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0120}` }[keyof T & string] : never; +type EP_0120 = Path_0120; + +type Val_0120 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0120 } + : T[K] extends object ? { t: 'o'; props: Val_0120 } + : { t: 'u' }; }; +type EV_0120 = Val_0120; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb120 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource120 = "user" | "post" | "comment" | "tag" | "category"; -type Action120 = `${Verb120}_${Resource120}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise120 = T extends Promise ? UnwrapPromise120 : T; -type UnwrapArray120 = T extends (infer U)[] ? UnwrapArray120 : T; -type Head120 = T extends [infer H, ...infer _] ? H : never; -type Tail120 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation120 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation120>] - : never; +interface Registry_01_20 { + entities: Map; + validators: EV_0120; + paths: Set; + merged: DeepMerge_0120; +} -type SmallUnion120 = "a" | "b" | "c" | "d"; -type AllPerms120 = Permutation120; +type CK_0120 = `p01.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig120, - Flat120, - FR120, - BigUnion120, - ExtractAlpha120, - ExcludeZulu120, - OptionalAll120, - RequiredAll120, - ReadonlyAll120, - NullableAll120, - TypeNames120, - Action120, - AllPerms120, -}; +export type { Entity_01_20, Registry_01_20, CK_0120, EP_0120, EV_0120, DeepMerge_0120 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts index 7576a978..31571eeb 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-21.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-21 (seed 121) - expensive recursive & mapped types +// pkg-01/types-21 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord121 { - a121: { x: number; y: string; z: boolean }; - b121: { p: string[]; q: Record }; - c121: { nested: { deep: { deeper: { deepest: string } } } }; - d121: number; - e121: string; - f121: boolean; - g121: null; - h121: undefined; - i121: bigint; - j121: symbol; -} - -type PartialBig121 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten121 = T extends Array ? Flatten121 : T; -type Nested121 = number[][][][][][][][][][]; -type Flat121 = Flatten121; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly121 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly121 : T[K]; -}; -type DeepRequired121 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired121 : T[K]; +type DeepMerge_0121 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0121 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR121 = DeepReadonly121>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion121 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha121 = Extract; -type ExcludeZulu121 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA121 { width: number; height: number; depth: number } -interface ShapeB121 { color: string; opacity: number; blend: string } -interface ShapeC121 { x: number; y: number; z: number; w: number } -interface ShapeD121 { label: string; title: string; summary: string } - -type Combined121 = ShapeA121 & ShapeB121 & ShapeC121 & ShapeD121; -type OptionalAll121 = { [K in keyof Combined121]?: Combined121[K] }; -type RequiredAll121 = { [K in keyof Combined121]-?: Combined121[K] }; -type ReadonlyAll121 = { readonly [K in keyof Combined121]: Combined121[K] }; -type NullableAll121 = { [K in keyof Combined121]: Combined121[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString121 = T extends string ? true : false; -type IsNumber121 = T extends number ? true : false; -type TypeName121 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_21 | null; children: Entity_01_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0121: number; y0121: string; z0121: boolean }; +} -type TypeNames121 = { - [K in keyof BigRecord121]: TypeName121; +type Path_0121 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0121}` }[keyof T & string] : never; +type EP_0121 = Path_0121; + +type Val_0121 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0121 } + : T[K] extends object ? { t: 'o'; props: Val_0121 } + : { t: 'u' }; }; +type EV_0121 = Val_0121; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb121 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource121 = "user" | "post" | "comment" | "tag" | "category"; -type Action121 = `${Verb121}_${Resource121}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise121 = T extends Promise ? UnwrapPromise121 : T; -type UnwrapArray121 = T extends (infer U)[] ? UnwrapArray121 : T; -type Head121 = T extends [infer H, ...infer _] ? H : never; -type Tail121 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation121 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation121>] - : never; +interface Registry_01_21 { + entities: Map; + validators: EV_0121; + paths: Set; + merged: DeepMerge_0121; +} -type SmallUnion121 = "a" | "b" | "c" | "d"; -type AllPerms121 = Permutation121; +type CK_0121 = `p01.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig121, - Flat121, - FR121, - BigUnion121, - ExtractAlpha121, - ExcludeZulu121, - OptionalAll121, - RequiredAll121, - ReadonlyAll121, - NullableAll121, - TypeNames121, - Action121, - AllPerms121, -}; +export type { Entity_01_21, Registry_01_21, CK_0121, EP_0121, EV_0121, DeepMerge_0121 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts index 0ec6dd82..ec4b30c5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-22.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-22 (seed 122) - expensive recursive & mapped types +// pkg-01/types-22 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord122 { - a122: { x: number; y: string; z: boolean }; - b122: { p: string[]; q: Record }; - c122: { nested: { deep: { deeper: { deepest: string } } } }; - d122: number; - e122: string; - f122: boolean; - g122: null; - h122: undefined; - i122: bigint; - j122: symbol; -} - -type PartialBig122 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten122 = T extends Array ? Flatten122 : T; -type Nested122 = number[][][][][][][][][][]; -type Flat122 = Flatten122; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly122 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly122 : T[K]; -}; -type DeepRequired122 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired122 : T[K]; +type DeepMerge_0122 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0122 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR122 = DeepReadonly122>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion122 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha122 = Extract; -type ExcludeZulu122 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA122 { width: number; height: number; depth: number } -interface ShapeB122 { color: string; opacity: number; blend: string } -interface ShapeC122 { x: number; y: number; z: number; w: number } -interface ShapeD122 { label: string; title: string; summary: string } - -type Combined122 = ShapeA122 & ShapeB122 & ShapeC122 & ShapeD122; -type OptionalAll122 = { [K in keyof Combined122]?: Combined122[K] }; -type RequiredAll122 = { [K in keyof Combined122]-?: Combined122[K] }; -type ReadonlyAll122 = { readonly [K in keyof Combined122]: Combined122[K] }; -type NullableAll122 = { [K in keyof Combined122]: Combined122[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString122 = T extends string ? true : false; -type IsNumber122 = T extends number ? true : false; -type TypeName122 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_22 | null; children: Entity_01_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0122: number; y0122: string; z0122: boolean }; +} -type TypeNames122 = { - [K in keyof BigRecord122]: TypeName122; +type Path_0122 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0122}` }[keyof T & string] : never; +type EP_0122 = Path_0122; + +type Val_0122 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0122 } + : T[K] extends object ? { t: 'o'; props: Val_0122 } + : { t: 'u' }; }; +type EV_0122 = Val_0122; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb122 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource122 = "user" | "post" | "comment" | "tag" | "category"; -type Action122 = `${Verb122}_${Resource122}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise122 = T extends Promise ? UnwrapPromise122 : T; -type UnwrapArray122 = T extends (infer U)[] ? UnwrapArray122 : T; -type Head122 = T extends [infer H, ...infer _] ? H : never; -type Tail122 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation122 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation122>] - : never; +interface Registry_01_22 { + entities: Map; + validators: EV_0122; + paths: Set; + merged: DeepMerge_0122; +} -type SmallUnion122 = "a" | "b" | "c" | "d"; -type AllPerms122 = Permutation122; +type CK_0122 = `p01.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig122, - Flat122, - FR122, - BigUnion122, - ExtractAlpha122, - ExcludeZulu122, - OptionalAll122, - RequiredAll122, - ReadonlyAll122, - NullableAll122, - TypeNames122, - Action122, - AllPerms122, -}; +export type { Entity_01_22, Registry_01_22, CK_0122, EP_0122, EV_0122, DeepMerge_0122 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts index 6d2f04cc..d7f5b950 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-23.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-23 (seed 123) - expensive recursive & mapped types +// pkg-01/types-23 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord123 { - a123: { x: number; y: string; z: boolean }; - b123: { p: string[]; q: Record }; - c123: { nested: { deep: { deeper: { deepest: string } } } }; - d123: number; - e123: string; - f123: boolean; - g123: null; - h123: undefined; - i123: bigint; - j123: symbol; -} - -type PartialBig123 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten123 = T extends Array ? Flatten123 : T; -type Nested123 = number[][][][][][][][][][]; -type Flat123 = Flatten123; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly123 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly123 : T[K]; -}; -type DeepRequired123 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired123 : T[K]; +type DeepMerge_0123 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0123 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR123 = DeepReadonly123>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion123 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha123 = Extract; -type ExcludeZulu123 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA123 { width: number; height: number; depth: number } -interface ShapeB123 { color: string; opacity: number; blend: string } -interface ShapeC123 { x: number; y: number; z: number; w: number } -interface ShapeD123 { label: string; title: string; summary: string } - -type Combined123 = ShapeA123 & ShapeB123 & ShapeC123 & ShapeD123; -type OptionalAll123 = { [K in keyof Combined123]?: Combined123[K] }; -type RequiredAll123 = { [K in keyof Combined123]-?: Combined123[K] }; -type ReadonlyAll123 = { readonly [K in keyof Combined123]: Combined123[K] }; -type NullableAll123 = { [K in keyof Combined123]: Combined123[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString123 = T extends string ? true : false; -type IsNumber123 = T extends number ? true : false; -type TypeName123 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_23 | null; children: Entity_01_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0123: number; y0123: string; z0123: boolean }; +} -type TypeNames123 = { - [K in keyof BigRecord123]: TypeName123; +type Path_0123 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0123}` }[keyof T & string] : never; +type EP_0123 = Path_0123; + +type Val_0123 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0123 } + : T[K] extends object ? { t: 'o'; props: Val_0123 } + : { t: 'u' }; }; +type EV_0123 = Val_0123; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb123 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource123 = "user" | "post" | "comment" | "tag" | "category"; -type Action123 = `${Verb123}_${Resource123}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise123 = T extends Promise ? UnwrapPromise123 : T; -type UnwrapArray123 = T extends (infer U)[] ? UnwrapArray123 : T; -type Head123 = T extends [infer H, ...infer _] ? H : never; -type Tail123 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation123 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation123>] - : never; +interface Registry_01_23 { + entities: Map; + validators: EV_0123; + paths: Set; + merged: DeepMerge_0123; +} -type SmallUnion123 = "a" | "b" | "c" | "d"; -type AllPerms123 = Permutation123; +type CK_0123 = `p01.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig123, - Flat123, - FR123, - BigUnion123, - ExtractAlpha123, - ExcludeZulu123, - OptionalAll123, - RequiredAll123, - ReadonlyAll123, - NullableAll123, - TypeNames123, - Action123, - AllPerms123, -}; +export type { Entity_01_23, Registry_01_23, CK_0123, EP_0123, EV_0123, DeepMerge_0123 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts index 0a3da76f..ee9ae3e1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-24.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-24 (seed 124) - expensive recursive & mapped types +// pkg-01/types-24 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord124 { - a124: { x: number; y: string; z: boolean }; - b124: { p: string[]; q: Record }; - c124: { nested: { deep: { deeper: { deepest: string } } } }; - d124: number; - e124: string; - f124: boolean; - g124: null; - h124: undefined; - i124: bigint; - j124: symbol; -} - -type PartialBig124 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten124 = T extends Array ? Flatten124 : T; -type Nested124 = number[][][][][][][][][][]; -type Flat124 = Flatten124; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly124 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly124 : T[K]; -}; -type DeepRequired124 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired124 : T[K]; +type DeepMerge_0124 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0124 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR124 = DeepReadonly124>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion124 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha124 = Extract; -type ExcludeZulu124 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA124 { width: number; height: number; depth: number } -interface ShapeB124 { color: string; opacity: number; blend: string } -interface ShapeC124 { x: number; y: number; z: number; w: number } -interface ShapeD124 { label: string; title: string; summary: string } - -type Combined124 = ShapeA124 & ShapeB124 & ShapeC124 & ShapeD124; -type OptionalAll124 = { [K in keyof Combined124]?: Combined124[K] }; -type RequiredAll124 = { [K in keyof Combined124]-?: Combined124[K] }; -type ReadonlyAll124 = { readonly [K in keyof Combined124]: Combined124[K] }; -type NullableAll124 = { [K in keyof Combined124]: Combined124[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString124 = T extends string ? true : false; -type IsNumber124 = T extends number ? true : false; -type TypeName124 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_24 | null; children: Entity_01_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0124: number; y0124: string; z0124: boolean }; +} -type TypeNames124 = { - [K in keyof BigRecord124]: TypeName124; +type Path_0124 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0124}` }[keyof T & string] : never; +type EP_0124 = Path_0124; + +type Val_0124 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0124 } + : T[K] extends object ? { t: 'o'; props: Val_0124 } + : { t: 'u' }; }; +type EV_0124 = Val_0124; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb124 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource124 = "user" | "post" | "comment" | "tag" | "category"; -type Action124 = `${Verb124}_${Resource124}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise124 = T extends Promise ? UnwrapPromise124 : T; -type UnwrapArray124 = T extends (infer U)[] ? UnwrapArray124 : T; -type Head124 = T extends [infer H, ...infer _] ? H : never; -type Tail124 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation124 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation124>] - : never; +interface Registry_01_24 { + entities: Map; + validators: EV_0124; + paths: Set; + merged: DeepMerge_0124; +} -type SmallUnion124 = "a" | "b" | "c" | "d"; -type AllPerms124 = Permutation124; +type CK_0124 = `p01.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig124, - Flat124, - FR124, - BigUnion124, - ExtractAlpha124, - ExcludeZulu124, - OptionalAll124, - RequiredAll124, - ReadonlyAll124, - NullableAll124, - TypeNames124, - Action124, - AllPerms124, -}; +export type { Entity_01_24, Registry_01_24, CK_0124, EP_0124, EV_0124, DeepMerge_0124 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts index 5e493681..67fbebcb 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-25.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-25 (seed 125) - expensive recursive & mapped types +// pkg-01/types-25 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord125 { - a125: { x: number; y: string; z: boolean }; - b125: { p: string[]; q: Record }; - c125: { nested: { deep: { deeper: { deepest: string } } } }; - d125: number; - e125: string; - f125: boolean; - g125: null; - h125: undefined; - i125: bigint; - j125: symbol; -} - -type PartialBig125 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten125 = T extends Array ? Flatten125 : T; -type Nested125 = number[][][][][][][][][][]; -type Flat125 = Flatten125; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly125 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly125 : T[K]; -}; -type DeepRequired125 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired125 : T[K]; +type DeepMerge_0125 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0125 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR125 = DeepReadonly125>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion125 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha125 = Extract; -type ExcludeZulu125 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA125 { width: number; height: number; depth: number } -interface ShapeB125 { color: string; opacity: number; blend: string } -interface ShapeC125 { x: number; y: number; z: number; w: number } -interface ShapeD125 { label: string; title: string; summary: string } - -type Combined125 = ShapeA125 & ShapeB125 & ShapeC125 & ShapeD125; -type OptionalAll125 = { [K in keyof Combined125]?: Combined125[K] }; -type RequiredAll125 = { [K in keyof Combined125]-?: Combined125[K] }; -type ReadonlyAll125 = { readonly [K in keyof Combined125]: Combined125[K] }; -type NullableAll125 = { [K in keyof Combined125]: Combined125[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString125 = T extends string ? true : false; -type IsNumber125 = T extends number ? true : false; -type TypeName125 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_25 | null; children: Entity_01_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0125: number; y0125: string; z0125: boolean }; +} -type TypeNames125 = { - [K in keyof BigRecord125]: TypeName125; +type Path_0125 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0125}` }[keyof T & string] : never; +type EP_0125 = Path_0125; + +type Val_0125 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0125 } + : T[K] extends object ? { t: 'o'; props: Val_0125 } + : { t: 'u' }; }; +type EV_0125 = Val_0125; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb125 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource125 = "user" | "post" | "comment" | "tag" | "category"; -type Action125 = `${Verb125}_${Resource125}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise125 = T extends Promise ? UnwrapPromise125 : T; -type UnwrapArray125 = T extends (infer U)[] ? UnwrapArray125 : T; -type Head125 = T extends [infer H, ...infer _] ? H : never; -type Tail125 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation125 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation125>] - : never; +interface Registry_01_25 { + entities: Map; + validators: EV_0125; + paths: Set; + merged: DeepMerge_0125; +} -type SmallUnion125 = "a" | "b" | "c" | "d"; -type AllPerms125 = Permutation125; +type CK_0125 = `p01.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig125, - Flat125, - FR125, - BigUnion125, - ExtractAlpha125, - ExcludeZulu125, - OptionalAll125, - RequiredAll125, - ReadonlyAll125, - NullableAll125, - TypeNames125, - Action125, - AllPerms125, -}; +export type { Entity_01_25, Registry_01_25, CK_0125, EP_0125, EV_0125, DeepMerge_0125 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts index 4481e817..9f51350b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-26.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-26 (seed 126) - expensive recursive & mapped types +// pkg-01/types-26 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord126 { - a126: { x: number; y: string; z: boolean }; - b126: { p: string[]; q: Record }; - c126: { nested: { deep: { deeper: { deepest: string } } } }; - d126: number; - e126: string; - f126: boolean; - g126: null; - h126: undefined; - i126: bigint; - j126: symbol; -} - -type PartialBig126 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten126 = T extends Array ? Flatten126 : T; -type Nested126 = number[][][][][][][][][][]; -type Flat126 = Flatten126; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly126 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly126 : T[K]; -}; -type DeepRequired126 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired126 : T[K]; +type DeepMerge_0126 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0126 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR126 = DeepReadonly126>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion126 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha126 = Extract; -type ExcludeZulu126 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA126 { width: number; height: number; depth: number } -interface ShapeB126 { color: string; opacity: number; blend: string } -interface ShapeC126 { x: number; y: number; z: number; w: number } -interface ShapeD126 { label: string; title: string; summary: string } - -type Combined126 = ShapeA126 & ShapeB126 & ShapeC126 & ShapeD126; -type OptionalAll126 = { [K in keyof Combined126]?: Combined126[K] }; -type RequiredAll126 = { [K in keyof Combined126]-?: Combined126[K] }; -type ReadonlyAll126 = { readonly [K in keyof Combined126]: Combined126[K] }; -type NullableAll126 = { [K in keyof Combined126]: Combined126[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString126 = T extends string ? true : false; -type IsNumber126 = T extends number ? true : false; -type TypeName126 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_26 | null; children: Entity_01_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0126: number; y0126: string; z0126: boolean }; +} -type TypeNames126 = { - [K in keyof BigRecord126]: TypeName126; +type Path_0126 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0126}` }[keyof T & string] : never; +type EP_0126 = Path_0126; + +type Val_0126 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0126 } + : T[K] extends object ? { t: 'o'; props: Val_0126 } + : { t: 'u' }; }; +type EV_0126 = Val_0126; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb126 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource126 = "user" | "post" | "comment" | "tag" | "category"; -type Action126 = `${Verb126}_${Resource126}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise126 = T extends Promise ? UnwrapPromise126 : T; -type UnwrapArray126 = T extends (infer U)[] ? UnwrapArray126 : T; -type Head126 = T extends [infer H, ...infer _] ? H : never; -type Tail126 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation126 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation126>] - : never; +interface Registry_01_26 { + entities: Map; + validators: EV_0126; + paths: Set; + merged: DeepMerge_0126; +} -type SmallUnion126 = "a" | "b" | "c" | "d"; -type AllPerms126 = Permutation126; +type CK_0126 = `p01.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig126, - Flat126, - FR126, - BigUnion126, - ExtractAlpha126, - ExcludeZulu126, - OptionalAll126, - RequiredAll126, - ReadonlyAll126, - NullableAll126, - TypeNames126, - Action126, - AllPerms126, -}; +export type { Entity_01_26, Registry_01_26, CK_0126, EP_0126, EV_0126, DeepMerge_0126 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts index 706de363..fb444e08 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-27.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-27 (seed 127) - expensive recursive & mapped types +// pkg-01/types-27 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord127 { - a127: { x: number; y: string; z: boolean }; - b127: { p: string[]; q: Record }; - c127: { nested: { deep: { deeper: { deepest: string } } } }; - d127: number; - e127: string; - f127: boolean; - g127: null; - h127: undefined; - i127: bigint; - j127: symbol; -} - -type PartialBig127 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten127 = T extends Array ? Flatten127 : T; -type Nested127 = number[][][][][][][][][][]; -type Flat127 = Flatten127; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly127 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly127 : T[K]; -}; -type DeepRequired127 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired127 : T[K]; +type DeepMerge_0127 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0127 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR127 = DeepReadonly127>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion127 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha127 = Extract; -type ExcludeZulu127 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA127 { width: number; height: number; depth: number } -interface ShapeB127 { color: string; opacity: number; blend: string } -interface ShapeC127 { x: number; y: number; z: number; w: number } -interface ShapeD127 { label: string; title: string; summary: string } - -type Combined127 = ShapeA127 & ShapeB127 & ShapeC127 & ShapeD127; -type OptionalAll127 = { [K in keyof Combined127]?: Combined127[K] }; -type RequiredAll127 = { [K in keyof Combined127]-?: Combined127[K] }; -type ReadonlyAll127 = { readonly [K in keyof Combined127]: Combined127[K] }; -type NullableAll127 = { [K in keyof Combined127]: Combined127[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString127 = T extends string ? true : false; -type IsNumber127 = T extends number ? true : false; -type TypeName127 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_27 | null; children: Entity_01_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0127: number; y0127: string; z0127: boolean }; +} -type TypeNames127 = { - [K in keyof BigRecord127]: TypeName127; +type Path_0127 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0127}` }[keyof T & string] : never; +type EP_0127 = Path_0127; + +type Val_0127 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0127 } + : T[K] extends object ? { t: 'o'; props: Val_0127 } + : { t: 'u' }; }; +type EV_0127 = Val_0127; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb127 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource127 = "user" | "post" | "comment" | "tag" | "category"; -type Action127 = `${Verb127}_${Resource127}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise127 = T extends Promise ? UnwrapPromise127 : T; -type UnwrapArray127 = T extends (infer U)[] ? UnwrapArray127 : T; -type Head127 = T extends [infer H, ...infer _] ? H : never; -type Tail127 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation127 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation127>] - : never; +interface Registry_01_27 { + entities: Map; + validators: EV_0127; + paths: Set; + merged: DeepMerge_0127; +} -type SmallUnion127 = "a" | "b" | "c" | "d"; -type AllPerms127 = Permutation127; +type CK_0127 = `p01.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig127, - Flat127, - FR127, - BigUnion127, - ExtractAlpha127, - ExcludeZulu127, - OptionalAll127, - RequiredAll127, - ReadonlyAll127, - NullableAll127, - TypeNames127, - Action127, - AllPerms127, -}; +export type { Entity_01_27, Registry_01_27, CK_0127, EP_0127, EV_0127, DeepMerge_0127 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts index 49d1f5b2..2e1924ce 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-28.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-28 (seed 128) - expensive recursive & mapped types +// pkg-01/types-28 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord128 { - a128: { x: number; y: string; z: boolean }; - b128: { p: string[]; q: Record }; - c128: { nested: { deep: { deeper: { deepest: string } } } }; - d128: number; - e128: string; - f128: boolean; - g128: null; - h128: undefined; - i128: bigint; - j128: symbol; -} - -type PartialBig128 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten128 = T extends Array ? Flatten128 : T; -type Nested128 = number[][][][][][][][][][]; -type Flat128 = Flatten128; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly128 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly128 : T[K]; -}; -type DeepRequired128 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired128 : T[K]; +type DeepMerge_0128 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0128 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR128 = DeepReadonly128>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion128 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha128 = Extract; -type ExcludeZulu128 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA128 { width: number; height: number; depth: number } -interface ShapeB128 { color: string; opacity: number; blend: string } -interface ShapeC128 { x: number; y: number; z: number; w: number } -interface ShapeD128 { label: string; title: string; summary: string } - -type Combined128 = ShapeA128 & ShapeB128 & ShapeC128 & ShapeD128; -type OptionalAll128 = { [K in keyof Combined128]?: Combined128[K] }; -type RequiredAll128 = { [K in keyof Combined128]-?: Combined128[K] }; -type ReadonlyAll128 = { readonly [K in keyof Combined128]: Combined128[K] }; -type NullableAll128 = { [K in keyof Combined128]: Combined128[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString128 = T extends string ? true : false; -type IsNumber128 = T extends number ? true : false; -type TypeName128 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_28 | null; children: Entity_01_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0128: number; y0128: string; z0128: boolean }; +} -type TypeNames128 = { - [K in keyof BigRecord128]: TypeName128; +type Path_0128 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0128}` }[keyof T & string] : never; +type EP_0128 = Path_0128; + +type Val_0128 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0128 } + : T[K] extends object ? { t: 'o'; props: Val_0128 } + : { t: 'u' }; }; +type EV_0128 = Val_0128; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb128 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource128 = "user" | "post" | "comment" | "tag" | "category"; -type Action128 = `${Verb128}_${Resource128}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise128 = T extends Promise ? UnwrapPromise128 : T; -type UnwrapArray128 = T extends (infer U)[] ? UnwrapArray128 : T; -type Head128 = T extends [infer H, ...infer _] ? H : never; -type Tail128 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation128 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation128>] - : never; +interface Registry_01_28 { + entities: Map; + validators: EV_0128; + paths: Set; + merged: DeepMerge_0128; +} -type SmallUnion128 = "a" | "b" | "c" | "d"; -type AllPerms128 = Permutation128; +type CK_0128 = `p01.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig128, - Flat128, - FR128, - BigUnion128, - ExtractAlpha128, - ExcludeZulu128, - OptionalAll128, - RequiredAll128, - ReadonlyAll128, - NullableAll128, - TypeNames128, - Action128, - AllPerms128, -}; +export type { Entity_01_28, Registry_01_28, CK_0128, EP_0128, EV_0128, DeepMerge_0128 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts index 2eb31271..ff139b3f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-29.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-29 (seed 129) - expensive recursive & mapped types +// pkg-01/types-29 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord129 { - a129: { x: number; y: string; z: boolean }; - b129: { p: string[]; q: Record }; - c129: { nested: { deep: { deeper: { deepest: string } } } }; - d129: number; - e129: string; - f129: boolean; - g129: null; - h129: undefined; - i129: bigint; - j129: symbol; -} - -type PartialBig129 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten129 = T extends Array ? Flatten129 : T; -type Nested129 = number[][][][][][][][][][]; -type Flat129 = Flatten129; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly129 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly129 : T[K]; -}; -type DeepRequired129 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired129 : T[K]; +type DeepMerge_0129 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0129 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR129 = DeepReadonly129>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion129 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha129 = Extract; -type ExcludeZulu129 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA129 { width: number; height: number; depth: number } -interface ShapeB129 { color: string; opacity: number; blend: string } -interface ShapeC129 { x: number; y: number; z: number; w: number } -interface ShapeD129 { label: string; title: string; summary: string } - -type Combined129 = ShapeA129 & ShapeB129 & ShapeC129 & ShapeD129; -type OptionalAll129 = { [K in keyof Combined129]?: Combined129[K] }; -type RequiredAll129 = { [K in keyof Combined129]-?: Combined129[K] }; -type ReadonlyAll129 = { readonly [K in keyof Combined129]: Combined129[K] }; -type NullableAll129 = { [K in keyof Combined129]: Combined129[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString129 = T extends string ? true : false; -type IsNumber129 = T extends number ? true : false; -type TypeName129 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_29 | null; children: Entity_01_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0129: number; y0129: string; z0129: boolean }; +} -type TypeNames129 = { - [K in keyof BigRecord129]: TypeName129; +type Path_0129 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0129}` }[keyof T & string] : never; +type EP_0129 = Path_0129; + +type Val_0129 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0129 } + : T[K] extends object ? { t: 'o'; props: Val_0129 } + : { t: 'u' }; }; +type EV_0129 = Val_0129; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb129 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource129 = "user" | "post" | "comment" | "tag" | "category"; -type Action129 = `${Verb129}_${Resource129}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise129 = T extends Promise ? UnwrapPromise129 : T; -type UnwrapArray129 = T extends (infer U)[] ? UnwrapArray129 : T; -type Head129 = T extends [infer H, ...infer _] ? H : never; -type Tail129 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation129 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation129>] - : never; +interface Registry_01_29 { + entities: Map; + validators: EV_0129; + paths: Set; + merged: DeepMerge_0129; +} -type SmallUnion129 = "a" | "b" | "c" | "d"; -type AllPerms129 = Permutation129; +type CK_0129 = `p01.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig129, - Flat129, - FR129, - BigUnion129, - ExtractAlpha129, - ExcludeZulu129, - OptionalAll129, - RequiredAll129, - ReadonlyAll129, - NullableAll129, - TypeNames129, - Action129, - AllPerms129, -}; +export type { Entity_01_29, Registry_01_29, CK_0129, EP_0129, EV_0129, DeepMerge_0129 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts index 759b8eff..70c1bdf8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-30.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-30 (seed 130) - expensive recursive & mapped types +// pkg-01/types-30 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord130 { - a130: { x: number; y: string; z: boolean }; - b130: { p: string[]; q: Record }; - c130: { nested: { deep: { deeper: { deepest: string } } } }; - d130: number; - e130: string; - f130: boolean; - g130: null; - h130: undefined; - i130: bigint; - j130: symbol; -} - -type PartialBig130 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten130 = T extends Array ? Flatten130 : T; -type Nested130 = number[][][][][][][][][][]; -type Flat130 = Flatten130; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly130 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly130 : T[K]; -}; -type DeepRequired130 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired130 : T[K]; +type DeepMerge_0130 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0130 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR130 = DeepReadonly130>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion130 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha130 = Extract; -type ExcludeZulu130 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA130 { width: number; height: number; depth: number } -interface ShapeB130 { color: string; opacity: number; blend: string } -interface ShapeC130 { x: number; y: number; z: number; w: number } -interface ShapeD130 { label: string; title: string; summary: string } - -type Combined130 = ShapeA130 & ShapeB130 & ShapeC130 & ShapeD130; -type OptionalAll130 = { [K in keyof Combined130]?: Combined130[K] }; -type RequiredAll130 = { [K in keyof Combined130]-?: Combined130[K] }; -type ReadonlyAll130 = { readonly [K in keyof Combined130]: Combined130[K] }; -type NullableAll130 = { [K in keyof Combined130]: Combined130[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString130 = T extends string ? true : false; -type IsNumber130 = T extends number ? true : false; -type TypeName130 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_30 | null; children: Entity_01_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0130: number; y0130: string; z0130: boolean }; +} -type TypeNames130 = { - [K in keyof BigRecord130]: TypeName130; +type Path_0130 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0130}` }[keyof T & string] : never; +type EP_0130 = Path_0130; + +type Val_0130 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0130 } + : T[K] extends object ? { t: 'o'; props: Val_0130 } + : { t: 'u' }; }; +type EV_0130 = Val_0130; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb130 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource130 = "user" | "post" | "comment" | "tag" | "category"; -type Action130 = `${Verb130}_${Resource130}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise130 = T extends Promise ? UnwrapPromise130 : T; -type UnwrapArray130 = T extends (infer U)[] ? UnwrapArray130 : T; -type Head130 = T extends [infer H, ...infer _] ? H : never; -type Tail130 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation130 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation130>] - : never; +interface Registry_01_30 { + entities: Map; + validators: EV_0130; + paths: Set; + merged: DeepMerge_0130; +} -type SmallUnion130 = "a" | "b" | "c" | "d"; -type AllPerms130 = Permutation130; +type CK_0130 = `p01.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig130, - Flat130, - FR130, - BigUnion130, - ExtractAlpha130, - ExcludeZulu130, - OptionalAll130, - RequiredAll130, - ReadonlyAll130, - NullableAll130, - TypeNames130, - Action130, - AllPerms130, -}; +export type { Entity_01_30, Registry_01_30, CK_0130, EP_0130, EV_0130, DeepMerge_0130 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts index 30e2b791..e13a6432 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-31.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-31 (seed 131) - expensive recursive & mapped types +// pkg-01/types-31 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord131 { - a131: { x: number; y: string; z: boolean }; - b131: { p: string[]; q: Record }; - c131: { nested: { deep: { deeper: { deepest: string } } } }; - d131: number; - e131: string; - f131: boolean; - g131: null; - h131: undefined; - i131: bigint; - j131: symbol; -} - -type PartialBig131 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten131 = T extends Array ? Flatten131 : T; -type Nested131 = number[][][][][][][][][][]; -type Flat131 = Flatten131; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly131 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly131 : T[K]; -}; -type DeepRequired131 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired131 : T[K]; +type DeepMerge_0131 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0131 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR131 = DeepReadonly131>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion131 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha131 = Extract; -type ExcludeZulu131 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA131 { width: number; height: number; depth: number } -interface ShapeB131 { color: string; opacity: number; blend: string } -interface ShapeC131 { x: number; y: number; z: number; w: number } -interface ShapeD131 { label: string; title: string; summary: string } - -type Combined131 = ShapeA131 & ShapeB131 & ShapeC131 & ShapeD131; -type OptionalAll131 = { [K in keyof Combined131]?: Combined131[K] }; -type RequiredAll131 = { [K in keyof Combined131]-?: Combined131[K] }; -type ReadonlyAll131 = { readonly [K in keyof Combined131]: Combined131[K] }; -type NullableAll131 = { [K in keyof Combined131]: Combined131[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString131 = T extends string ? true : false; -type IsNumber131 = T extends number ? true : false; -type TypeName131 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_31 | null; children: Entity_01_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0131: number; y0131: string; z0131: boolean }; +} -type TypeNames131 = { - [K in keyof BigRecord131]: TypeName131; +type Path_0131 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0131}` }[keyof T & string] : never; +type EP_0131 = Path_0131; + +type Val_0131 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0131 } + : T[K] extends object ? { t: 'o'; props: Val_0131 } + : { t: 'u' }; }; +type EV_0131 = Val_0131; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb131 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource131 = "user" | "post" | "comment" | "tag" | "category"; -type Action131 = `${Verb131}_${Resource131}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise131 = T extends Promise ? UnwrapPromise131 : T; -type UnwrapArray131 = T extends (infer U)[] ? UnwrapArray131 : T; -type Head131 = T extends [infer H, ...infer _] ? H : never; -type Tail131 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation131 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation131>] - : never; +interface Registry_01_31 { + entities: Map; + validators: EV_0131; + paths: Set; + merged: DeepMerge_0131; +} -type SmallUnion131 = "a" | "b" | "c" | "d"; -type AllPerms131 = Permutation131; +type CK_0131 = `p01.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig131, - Flat131, - FR131, - BigUnion131, - ExtractAlpha131, - ExcludeZulu131, - OptionalAll131, - RequiredAll131, - ReadonlyAll131, - NullableAll131, - TypeNames131, - Action131, - AllPerms131, -}; +export type { Entity_01_31, Registry_01_31, CK_0131, EP_0131, EV_0131, DeepMerge_0131 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts index 90ce3965..805973c9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-32.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-32 (seed 132) - expensive recursive & mapped types +// pkg-01/types-32 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord132 { - a132: { x: number; y: string; z: boolean }; - b132: { p: string[]; q: Record }; - c132: { nested: { deep: { deeper: { deepest: string } } } }; - d132: number; - e132: string; - f132: boolean; - g132: null; - h132: undefined; - i132: bigint; - j132: symbol; -} - -type PartialBig132 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten132 = T extends Array ? Flatten132 : T; -type Nested132 = number[][][][][][][][][][]; -type Flat132 = Flatten132; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly132 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly132 : T[K]; -}; -type DeepRequired132 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired132 : T[K]; +type DeepMerge_0132 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0132 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR132 = DeepReadonly132>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion132 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha132 = Extract; -type ExcludeZulu132 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA132 { width: number; height: number; depth: number } -interface ShapeB132 { color: string; opacity: number; blend: string } -interface ShapeC132 { x: number; y: number; z: number; w: number } -interface ShapeD132 { label: string; title: string; summary: string } - -type Combined132 = ShapeA132 & ShapeB132 & ShapeC132 & ShapeD132; -type OptionalAll132 = { [K in keyof Combined132]?: Combined132[K] }; -type RequiredAll132 = { [K in keyof Combined132]-?: Combined132[K] }; -type ReadonlyAll132 = { readonly [K in keyof Combined132]: Combined132[K] }; -type NullableAll132 = { [K in keyof Combined132]: Combined132[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString132 = T extends string ? true : false; -type IsNumber132 = T extends number ? true : false; -type TypeName132 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_32 | null; children: Entity_01_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0132: number; y0132: string; z0132: boolean }; +} -type TypeNames132 = { - [K in keyof BigRecord132]: TypeName132; +type Path_0132 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0132}` }[keyof T & string] : never; +type EP_0132 = Path_0132; + +type Val_0132 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0132 } + : T[K] extends object ? { t: 'o'; props: Val_0132 } + : { t: 'u' }; }; +type EV_0132 = Val_0132; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb132 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource132 = "user" | "post" | "comment" | "tag" | "category"; -type Action132 = `${Verb132}_${Resource132}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise132 = T extends Promise ? UnwrapPromise132 : T; -type UnwrapArray132 = T extends (infer U)[] ? UnwrapArray132 : T; -type Head132 = T extends [infer H, ...infer _] ? H : never; -type Tail132 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation132 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation132>] - : never; +interface Registry_01_32 { + entities: Map; + validators: EV_0132; + paths: Set; + merged: DeepMerge_0132; +} -type SmallUnion132 = "a" | "b" | "c" | "d"; -type AllPerms132 = Permutation132; +type CK_0132 = `p01.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig132, - Flat132, - FR132, - BigUnion132, - ExtractAlpha132, - ExcludeZulu132, - OptionalAll132, - RequiredAll132, - ReadonlyAll132, - NullableAll132, - TypeNames132, - Action132, - AllPerms132, -}; +export type { Entity_01_32, Registry_01_32, CK_0132, EP_0132, EV_0132, DeepMerge_0132 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts index 670b5299..a579237a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-33.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-33 (seed 133) - expensive recursive & mapped types +// pkg-01/types-33 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord133 { - a133: { x: number; y: string; z: boolean }; - b133: { p: string[]; q: Record }; - c133: { nested: { deep: { deeper: { deepest: string } } } }; - d133: number; - e133: string; - f133: boolean; - g133: null; - h133: undefined; - i133: bigint; - j133: symbol; -} - -type PartialBig133 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten133 = T extends Array ? Flatten133 : T; -type Nested133 = number[][][][][][][][][][]; -type Flat133 = Flatten133; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly133 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly133 : T[K]; -}; -type DeepRequired133 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired133 : T[K]; +type DeepMerge_0133 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0133 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR133 = DeepReadonly133>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion133 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha133 = Extract; -type ExcludeZulu133 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA133 { width: number; height: number; depth: number } -interface ShapeB133 { color: string; opacity: number; blend: string } -interface ShapeC133 { x: number; y: number; z: number; w: number } -interface ShapeD133 { label: string; title: string; summary: string } - -type Combined133 = ShapeA133 & ShapeB133 & ShapeC133 & ShapeD133; -type OptionalAll133 = { [K in keyof Combined133]?: Combined133[K] }; -type RequiredAll133 = { [K in keyof Combined133]-?: Combined133[K] }; -type ReadonlyAll133 = { readonly [K in keyof Combined133]: Combined133[K] }; -type NullableAll133 = { [K in keyof Combined133]: Combined133[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString133 = T extends string ? true : false; -type IsNumber133 = T extends number ? true : false; -type TypeName133 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_33 | null; children: Entity_01_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0133: number; y0133: string; z0133: boolean }; +} -type TypeNames133 = { - [K in keyof BigRecord133]: TypeName133; +type Path_0133 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0133}` }[keyof T & string] : never; +type EP_0133 = Path_0133; + +type Val_0133 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0133 } + : T[K] extends object ? { t: 'o'; props: Val_0133 } + : { t: 'u' }; }; +type EV_0133 = Val_0133; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb133 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource133 = "user" | "post" | "comment" | "tag" | "category"; -type Action133 = `${Verb133}_${Resource133}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise133 = T extends Promise ? UnwrapPromise133 : T; -type UnwrapArray133 = T extends (infer U)[] ? UnwrapArray133 : T; -type Head133 = T extends [infer H, ...infer _] ? H : never; -type Tail133 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation133 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation133>] - : never; +interface Registry_01_33 { + entities: Map; + validators: EV_0133; + paths: Set; + merged: DeepMerge_0133; +} -type SmallUnion133 = "a" | "b" | "c" | "d"; -type AllPerms133 = Permutation133; +type CK_0133 = `p01.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig133, - Flat133, - FR133, - BigUnion133, - ExtractAlpha133, - ExcludeZulu133, - OptionalAll133, - RequiredAll133, - ReadonlyAll133, - NullableAll133, - TypeNames133, - Action133, - AllPerms133, -}; +export type { Entity_01_33, Registry_01_33, CK_0133, EP_0133, EV_0133, DeepMerge_0133 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts index df701a57..0a5dc71d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-34.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-34 (seed 134) - expensive recursive & mapped types +// pkg-01/types-34 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord134 { - a134: { x: number; y: string; z: boolean }; - b134: { p: string[]; q: Record }; - c134: { nested: { deep: { deeper: { deepest: string } } } }; - d134: number; - e134: string; - f134: boolean; - g134: null; - h134: undefined; - i134: bigint; - j134: symbol; -} - -type PartialBig134 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten134 = T extends Array ? Flatten134 : T; -type Nested134 = number[][][][][][][][][][]; -type Flat134 = Flatten134; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly134 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly134 : T[K]; -}; -type DeepRequired134 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired134 : T[K]; +type DeepMerge_0134 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0134 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR134 = DeepReadonly134>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion134 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha134 = Extract; -type ExcludeZulu134 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA134 { width: number; height: number; depth: number } -interface ShapeB134 { color: string; opacity: number; blend: string } -interface ShapeC134 { x: number; y: number; z: number; w: number } -interface ShapeD134 { label: string; title: string; summary: string } - -type Combined134 = ShapeA134 & ShapeB134 & ShapeC134 & ShapeD134; -type OptionalAll134 = { [K in keyof Combined134]?: Combined134[K] }; -type RequiredAll134 = { [K in keyof Combined134]-?: Combined134[K] }; -type ReadonlyAll134 = { readonly [K in keyof Combined134]: Combined134[K] }; -type NullableAll134 = { [K in keyof Combined134]: Combined134[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString134 = T extends string ? true : false; -type IsNumber134 = T extends number ? true : false; -type TypeName134 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_34 | null; children: Entity_01_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0134: number; y0134: string; z0134: boolean }; +} -type TypeNames134 = { - [K in keyof BigRecord134]: TypeName134; +type Path_0134 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0134}` }[keyof T & string] : never; +type EP_0134 = Path_0134; + +type Val_0134 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0134 } + : T[K] extends object ? { t: 'o'; props: Val_0134 } + : { t: 'u' }; }; +type EV_0134 = Val_0134; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb134 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource134 = "user" | "post" | "comment" | "tag" | "category"; -type Action134 = `${Verb134}_${Resource134}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise134 = T extends Promise ? UnwrapPromise134 : T; -type UnwrapArray134 = T extends (infer U)[] ? UnwrapArray134 : T; -type Head134 = T extends [infer H, ...infer _] ? H : never; -type Tail134 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation134 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation134>] - : never; +interface Registry_01_34 { + entities: Map; + validators: EV_0134; + paths: Set; + merged: DeepMerge_0134; +} -type SmallUnion134 = "a" | "b" | "c" | "d"; -type AllPerms134 = Permutation134; +type CK_0134 = `p01.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig134, - Flat134, - FR134, - BigUnion134, - ExtractAlpha134, - ExcludeZulu134, - OptionalAll134, - RequiredAll134, - ReadonlyAll134, - NullableAll134, - TypeNames134, - Action134, - AllPerms134, -}; +export type { Entity_01_34, Registry_01_34, CK_0134, EP_0134, EV_0134, DeepMerge_0134 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts index fc271368..0be4a16f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-35.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-35 (seed 135) - expensive recursive & mapped types +// pkg-01/types-35 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord135 { - a135: { x: number; y: string; z: boolean }; - b135: { p: string[]; q: Record }; - c135: { nested: { deep: { deeper: { deepest: string } } } }; - d135: number; - e135: string; - f135: boolean; - g135: null; - h135: undefined; - i135: bigint; - j135: symbol; -} - -type PartialBig135 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten135 = T extends Array ? Flatten135 : T; -type Nested135 = number[][][][][][][][][][]; -type Flat135 = Flatten135; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly135 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly135 : T[K]; -}; -type DeepRequired135 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired135 : T[K]; +type DeepMerge_0135 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0135 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR135 = DeepReadonly135>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion135 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha135 = Extract; -type ExcludeZulu135 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA135 { width: number; height: number; depth: number } -interface ShapeB135 { color: string; opacity: number; blend: string } -interface ShapeC135 { x: number; y: number; z: number; w: number } -interface ShapeD135 { label: string; title: string; summary: string } - -type Combined135 = ShapeA135 & ShapeB135 & ShapeC135 & ShapeD135; -type OptionalAll135 = { [K in keyof Combined135]?: Combined135[K] }; -type RequiredAll135 = { [K in keyof Combined135]-?: Combined135[K] }; -type ReadonlyAll135 = { readonly [K in keyof Combined135]: Combined135[K] }; -type NullableAll135 = { [K in keyof Combined135]: Combined135[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString135 = T extends string ? true : false; -type IsNumber135 = T extends number ? true : false; -type TypeName135 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_35 | null; children: Entity_01_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0135: number; y0135: string; z0135: boolean }; +} -type TypeNames135 = { - [K in keyof BigRecord135]: TypeName135; +type Path_0135 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0135}` }[keyof T & string] : never; +type EP_0135 = Path_0135; + +type Val_0135 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0135 } + : T[K] extends object ? { t: 'o'; props: Val_0135 } + : { t: 'u' }; }; +type EV_0135 = Val_0135; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb135 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource135 = "user" | "post" | "comment" | "tag" | "category"; -type Action135 = `${Verb135}_${Resource135}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise135 = T extends Promise ? UnwrapPromise135 : T; -type UnwrapArray135 = T extends (infer U)[] ? UnwrapArray135 : T; -type Head135 = T extends [infer H, ...infer _] ? H : never; -type Tail135 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation135 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation135>] - : never; +interface Registry_01_35 { + entities: Map; + validators: EV_0135; + paths: Set; + merged: DeepMerge_0135; +} -type SmallUnion135 = "a" | "b" | "c" | "d"; -type AllPerms135 = Permutation135; +type CK_0135 = `p01.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig135, - Flat135, - FR135, - BigUnion135, - ExtractAlpha135, - ExcludeZulu135, - OptionalAll135, - RequiredAll135, - ReadonlyAll135, - NullableAll135, - TypeNames135, - Action135, - AllPerms135, -}; +export type { Entity_01_35, Registry_01_35, CK_0135, EP_0135, EV_0135, DeepMerge_0135 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts index 13b86305..f25eba19 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-36.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-36 (seed 136) - expensive recursive & mapped types +// pkg-01/types-36 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord136 { - a136: { x: number; y: string; z: boolean }; - b136: { p: string[]; q: Record }; - c136: { nested: { deep: { deeper: { deepest: string } } } }; - d136: number; - e136: string; - f136: boolean; - g136: null; - h136: undefined; - i136: bigint; - j136: symbol; -} - -type PartialBig136 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten136 = T extends Array ? Flatten136 : T; -type Nested136 = number[][][][][][][][][][]; -type Flat136 = Flatten136; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly136 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly136 : T[K]; -}; -type DeepRequired136 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired136 : T[K]; +type DeepMerge_0136 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0136 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR136 = DeepReadonly136>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion136 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha136 = Extract; -type ExcludeZulu136 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA136 { width: number; height: number; depth: number } -interface ShapeB136 { color: string; opacity: number; blend: string } -interface ShapeC136 { x: number; y: number; z: number; w: number } -interface ShapeD136 { label: string; title: string; summary: string } - -type Combined136 = ShapeA136 & ShapeB136 & ShapeC136 & ShapeD136; -type OptionalAll136 = { [K in keyof Combined136]?: Combined136[K] }; -type RequiredAll136 = { [K in keyof Combined136]-?: Combined136[K] }; -type ReadonlyAll136 = { readonly [K in keyof Combined136]: Combined136[K] }; -type NullableAll136 = { [K in keyof Combined136]: Combined136[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString136 = T extends string ? true : false; -type IsNumber136 = T extends number ? true : false; -type TypeName136 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_36 | null; children: Entity_01_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0136: number; y0136: string; z0136: boolean }; +} -type TypeNames136 = { - [K in keyof BigRecord136]: TypeName136; +type Path_0136 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0136}` }[keyof T & string] : never; +type EP_0136 = Path_0136; + +type Val_0136 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0136 } + : T[K] extends object ? { t: 'o'; props: Val_0136 } + : { t: 'u' }; }; +type EV_0136 = Val_0136; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb136 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource136 = "user" | "post" | "comment" | "tag" | "category"; -type Action136 = `${Verb136}_${Resource136}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise136 = T extends Promise ? UnwrapPromise136 : T; -type UnwrapArray136 = T extends (infer U)[] ? UnwrapArray136 : T; -type Head136 = T extends [infer H, ...infer _] ? H : never; -type Tail136 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation136 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation136>] - : never; +interface Registry_01_36 { + entities: Map; + validators: EV_0136; + paths: Set; + merged: DeepMerge_0136; +} -type SmallUnion136 = "a" | "b" | "c" | "d"; -type AllPerms136 = Permutation136; +type CK_0136 = `p01.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig136, - Flat136, - FR136, - BigUnion136, - ExtractAlpha136, - ExcludeZulu136, - OptionalAll136, - RequiredAll136, - ReadonlyAll136, - NullableAll136, - TypeNames136, - Action136, - AllPerms136, -}; +export type { Entity_01_36, Registry_01_36, CK_0136, EP_0136, EV_0136, DeepMerge_0136 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts index fd400e34..534a78b3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-37.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-37 (seed 137) - expensive recursive & mapped types +// pkg-01/types-37 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord137 { - a137: { x: number; y: string; z: boolean }; - b137: { p: string[]; q: Record }; - c137: { nested: { deep: { deeper: { deepest: string } } } }; - d137: number; - e137: string; - f137: boolean; - g137: null; - h137: undefined; - i137: bigint; - j137: symbol; -} - -type PartialBig137 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten137 = T extends Array ? Flatten137 : T; -type Nested137 = number[][][][][][][][][][]; -type Flat137 = Flatten137; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly137 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly137 : T[K]; -}; -type DeepRequired137 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired137 : T[K]; +type DeepMerge_0137 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0137 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR137 = DeepReadonly137>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion137 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha137 = Extract; -type ExcludeZulu137 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA137 { width: number; height: number; depth: number } -interface ShapeB137 { color: string; opacity: number; blend: string } -interface ShapeC137 { x: number; y: number; z: number; w: number } -interface ShapeD137 { label: string; title: string; summary: string } - -type Combined137 = ShapeA137 & ShapeB137 & ShapeC137 & ShapeD137; -type OptionalAll137 = { [K in keyof Combined137]?: Combined137[K] }; -type RequiredAll137 = { [K in keyof Combined137]-?: Combined137[K] }; -type ReadonlyAll137 = { readonly [K in keyof Combined137]: Combined137[K] }; -type NullableAll137 = { [K in keyof Combined137]: Combined137[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString137 = T extends string ? true : false; -type IsNumber137 = T extends number ? true : false; -type TypeName137 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_37 | null; children: Entity_01_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0137: number; y0137: string; z0137: boolean }; +} -type TypeNames137 = { - [K in keyof BigRecord137]: TypeName137; +type Path_0137 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0137}` }[keyof T & string] : never; +type EP_0137 = Path_0137; + +type Val_0137 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0137 } + : T[K] extends object ? { t: 'o'; props: Val_0137 } + : { t: 'u' }; }; +type EV_0137 = Val_0137; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb137 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource137 = "user" | "post" | "comment" | "tag" | "category"; -type Action137 = `${Verb137}_${Resource137}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise137 = T extends Promise ? UnwrapPromise137 : T; -type UnwrapArray137 = T extends (infer U)[] ? UnwrapArray137 : T; -type Head137 = T extends [infer H, ...infer _] ? H : never; -type Tail137 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation137 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation137>] - : never; +interface Registry_01_37 { + entities: Map; + validators: EV_0137; + paths: Set; + merged: DeepMerge_0137; +} -type SmallUnion137 = "a" | "b" | "c" | "d"; -type AllPerms137 = Permutation137; +type CK_0137 = `p01.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig137, - Flat137, - FR137, - BigUnion137, - ExtractAlpha137, - ExcludeZulu137, - OptionalAll137, - RequiredAll137, - ReadonlyAll137, - NullableAll137, - TypeNames137, - Action137, - AllPerms137, -}; +export type { Entity_01_37, Registry_01_37, CK_0137, EP_0137, EV_0137, DeepMerge_0137 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts index 9ed5c099..d0649b47 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-38.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-38 (seed 138) - expensive recursive & mapped types +// pkg-01/types-38 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord138 { - a138: { x: number; y: string; z: boolean }; - b138: { p: string[]; q: Record }; - c138: { nested: { deep: { deeper: { deepest: string } } } }; - d138: number; - e138: string; - f138: boolean; - g138: null; - h138: undefined; - i138: bigint; - j138: symbol; -} - -type PartialBig138 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten138 = T extends Array ? Flatten138 : T; -type Nested138 = number[][][][][][][][][][]; -type Flat138 = Flatten138; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly138 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly138 : T[K]; -}; -type DeepRequired138 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired138 : T[K]; +type DeepMerge_0138 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0138 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR138 = DeepReadonly138>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion138 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha138 = Extract; -type ExcludeZulu138 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA138 { width: number; height: number; depth: number } -interface ShapeB138 { color: string; opacity: number; blend: string } -interface ShapeC138 { x: number; y: number; z: number; w: number } -interface ShapeD138 { label: string; title: string; summary: string } - -type Combined138 = ShapeA138 & ShapeB138 & ShapeC138 & ShapeD138; -type OptionalAll138 = { [K in keyof Combined138]?: Combined138[K] }; -type RequiredAll138 = { [K in keyof Combined138]-?: Combined138[K] }; -type ReadonlyAll138 = { readonly [K in keyof Combined138]: Combined138[K] }; -type NullableAll138 = { [K in keyof Combined138]: Combined138[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString138 = T extends string ? true : false; -type IsNumber138 = T extends number ? true : false; -type TypeName138 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_38 | null; children: Entity_01_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0138: number; y0138: string; z0138: boolean }; +} -type TypeNames138 = { - [K in keyof BigRecord138]: TypeName138; +type Path_0138 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0138}` }[keyof T & string] : never; +type EP_0138 = Path_0138; + +type Val_0138 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0138 } + : T[K] extends object ? { t: 'o'; props: Val_0138 } + : { t: 'u' }; }; +type EV_0138 = Val_0138; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb138 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource138 = "user" | "post" | "comment" | "tag" | "category"; -type Action138 = `${Verb138}_${Resource138}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise138 = T extends Promise ? UnwrapPromise138 : T; -type UnwrapArray138 = T extends (infer U)[] ? UnwrapArray138 : T; -type Head138 = T extends [infer H, ...infer _] ? H : never; -type Tail138 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation138 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation138>] - : never; +interface Registry_01_38 { + entities: Map; + validators: EV_0138; + paths: Set; + merged: DeepMerge_0138; +} -type SmallUnion138 = "a" | "b" | "c" | "d"; -type AllPerms138 = Permutation138; +type CK_0138 = `p01.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig138, - Flat138, - FR138, - BigUnion138, - ExtractAlpha138, - ExcludeZulu138, - OptionalAll138, - RequiredAll138, - ReadonlyAll138, - NullableAll138, - TypeNames138, - Action138, - AllPerms138, -}; +export type { Entity_01_38, Registry_01_38, CK_0138, EP_0138, EV_0138, DeepMerge_0138 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts index e1f4a093..0007644e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-39.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-39 (seed 139) - expensive recursive & mapped types +// pkg-01/types-39 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord139 { - a139: { x: number; y: string; z: boolean }; - b139: { p: string[]; q: Record }; - c139: { nested: { deep: { deeper: { deepest: string } } } }; - d139: number; - e139: string; - f139: boolean; - g139: null; - h139: undefined; - i139: bigint; - j139: symbol; -} - -type PartialBig139 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten139 = T extends Array ? Flatten139 : T; -type Nested139 = number[][][][][][][][][][]; -type Flat139 = Flatten139; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly139 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly139 : T[K]; -}; -type DeepRequired139 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired139 : T[K]; +type DeepMerge_0139 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0139 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR139 = DeepReadonly139>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion139 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha139 = Extract; -type ExcludeZulu139 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA139 { width: number; height: number; depth: number } -interface ShapeB139 { color: string; opacity: number; blend: string } -interface ShapeC139 { x: number; y: number; z: number; w: number } -interface ShapeD139 { label: string; title: string; summary: string } - -type Combined139 = ShapeA139 & ShapeB139 & ShapeC139 & ShapeD139; -type OptionalAll139 = { [K in keyof Combined139]?: Combined139[K] }; -type RequiredAll139 = { [K in keyof Combined139]-?: Combined139[K] }; -type ReadonlyAll139 = { readonly [K in keyof Combined139]: Combined139[K] }; -type NullableAll139 = { [K in keyof Combined139]: Combined139[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString139 = T extends string ? true : false; -type IsNumber139 = T extends number ? true : false; -type TypeName139 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_39 | null; children: Entity_01_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0139: number; y0139: string; z0139: boolean }; +} -type TypeNames139 = { - [K in keyof BigRecord139]: TypeName139; +type Path_0139 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0139}` }[keyof T & string] : never; +type EP_0139 = Path_0139; + +type Val_0139 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0139 } + : T[K] extends object ? { t: 'o'; props: Val_0139 } + : { t: 'u' }; }; +type EV_0139 = Val_0139; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb139 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource139 = "user" | "post" | "comment" | "tag" | "category"; -type Action139 = `${Verb139}_${Resource139}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise139 = T extends Promise ? UnwrapPromise139 : T; -type UnwrapArray139 = T extends (infer U)[] ? UnwrapArray139 : T; -type Head139 = T extends [infer H, ...infer _] ? H : never; -type Tail139 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation139 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation139>] - : never; +interface Registry_01_39 { + entities: Map; + validators: EV_0139; + paths: Set; + merged: DeepMerge_0139; +} -type SmallUnion139 = "a" | "b" | "c" | "d"; -type AllPerms139 = Permutation139; +type CK_0139 = `p01.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig139, - Flat139, - FR139, - BigUnion139, - ExtractAlpha139, - ExcludeZulu139, - OptionalAll139, - RequiredAll139, - ReadonlyAll139, - NullableAll139, - TypeNames139, - Action139, - AllPerms139, -}; +export type { Entity_01_39, Registry_01_39, CK_0139, EP_0139, EV_0139, DeepMerge_0139 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts index 558143b5..2ce31aa5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-40.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-40 (seed 140) - expensive recursive & mapped types +// pkg-01/types-40 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord140 { - a140: { x: number; y: string; z: boolean }; - b140: { p: string[]; q: Record }; - c140: { nested: { deep: { deeper: { deepest: string } } } }; - d140: number; - e140: string; - f140: boolean; - g140: null; - h140: undefined; - i140: bigint; - j140: symbol; -} - -type PartialBig140 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten140 = T extends Array ? Flatten140 : T; -type Nested140 = number[][][][][][][][][][]; -type Flat140 = Flatten140; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly140 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly140 : T[K]; -}; -type DeepRequired140 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired140 : T[K]; +type DeepMerge_0140 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0140 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR140 = DeepReadonly140>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion140 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha140 = Extract; -type ExcludeZulu140 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA140 { width: number; height: number; depth: number } -interface ShapeB140 { color: string; opacity: number; blend: string } -interface ShapeC140 { x: number; y: number; z: number; w: number } -interface ShapeD140 { label: string; title: string; summary: string } - -type Combined140 = ShapeA140 & ShapeB140 & ShapeC140 & ShapeD140; -type OptionalAll140 = { [K in keyof Combined140]?: Combined140[K] }; -type RequiredAll140 = { [K in keyof Combined140]-?: Combined140[K] }; -type ReadonlyAll140 = { readonly [K in keyof Combined140]: Combined140[K] }; -type NullableAll140 = { [K in keyof Combined140]: Combined140[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString140 = T extends string ? true : false; -type IsNumber140 = T extends number ? true : false; -type TypeName140 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_40 | null; children: Entity_01_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0140: number; y0140: string; z0140: boolean }; +} -type TypeNames140 = { - [K in keyof BigRecord140]: TypeName140; +type Path_0140 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0140}` }[keyof T & string] : never; +type EP_0140 = Path_0140; + +type Val_0140 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0140 } + : T[K] extends object ? { t: 'o'; props: Val_0140 } + : { t: 'u' }; }; +type EV_0140 = Val_0140; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb140 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource140 = "user" | "post" | "comment" | "tag" | "category"; -type Action140 = `${Verb140}_${Resource140}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise140 = T extends Promise ? UnwrapPromise140 : T; -type UnwrapArray140 = T extends (infer U)[] ? UnwrapArray140 : T; -type Head140 = T extends [infer H, ...infer _] ? H : never; -type Tail140 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation140 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation140>] - : never; +interface Registry_01_40 { + entities: Map; + validators: EV_0140; + paths: Set; + merged: DeepMerge_0140; +} -type SmallUnion140 = "a" | "b" | "c" | "d"; -type AllPerms140 = Permutation140; +type CK_0140 = `p01.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig140, - Flat140, - FR140, - BigUnion140, - ExtractAlpha140, - ExcludeZulu140, - OptionalAll140, - RequiredAll140, - ReadonlyAll140, - NullableAll140, - TypeNames140, - Action140, - AllPerms140, -}; +export type { Entity_01_40, Registry_01_40, CK_0140, EP_0140, EV_0140, DeepMerge_0140 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts index bfeba87f..666b7ba4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-41.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-41 (seed 141) - expensive recursive & mapped types +// pkg-01/types-41 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord141 { - a141: { x: number; y: string; z: boolean }; - b141: { p: string[]; q: Record }; - c141: { nested: { deep: { deeper: { deepest: string } } } }; - d141: number; - e141: string; - f141: boolean; - g141: null; - h141: undefined; - i141: bigint; - j141: symbol; -} - -type PartialBig141 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten141 = T extends Array ? Flatten141 : T; -type Nested141 = number[][][][][][][][][][]; -type Flat141 = Flatten141; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly141 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly141 : T[K]; -}; -type DeepRequired141 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired141 : T[K]; +type DeepMerge_0141 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0141 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR141 = DeepReadonly141>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion141 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha141 = Extract; -type ExcludeZulu141 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA141 { width: number; height: number; depth: number } -interface ShapeB141 { color: string; opacity: number; blend: string } -interface ShapeC141 { x: number; y: number; z: number; w: number } -interface ShapeD141 { label: string; title: string; summary: string } - -type Combined141 = ShapeA141 & ShapeB141 & ShapeC141 & ShapeD141; -type OptionalAll141 = { [K in keyof Combined141]?: Combined141[K] }; -type RequiredAll141 = { [K in keyof Combined141]-?: Combined141[K] }; -type ReadonlyAll141 = { readonly [K in keyof Combined141]: Combined141[K] }; -type NullableAll141 = { [K in keyof Combined141]: Combined141[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString141 = T extends string ? true : false; -type IsNumber141 = T extends number ? true : false; -type TypeName141 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_41 | null; children: Entity_01_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0141: number; y0141: string; z0141: boolean }; +} -type TypeNames141 = { - [K in keyof BigRecord141]: TypeName141; +type Path_0141 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0141}` }[keyof T & string] : never; +type EP_0141 = Path_0141; + +type Val_0141 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0141 } + : T[K] extends object ? { t: 'o'; props: Val_0141 } + : { t: 'u' }; }; +type EV_0141 = Val_0141; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb141 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource141 = "user" | "post" | "comment" | "tag" | "category"; -type Action141 = `${Verb141}_${Resource141}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise141 = T extends Promise ? UnwrapPromise141 : T; -type UnwrapArray141 = T extends (infer U)[] ? UnwrapArray141 : T; -type Head141 = T extends [infer H, ...infer _] ? H : never; -type Tail141 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation141 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation141>] - : never; +interface Registry_01_41 { + entities: Map; + validators: EV_0141; + paths: Set; + merged: DeepMerge_0141; +} -type SmallUnion141 = "a" | "b" | "c" | "d"; -type AllPerms141 = Permutation141; +type CK_0141 = `p01.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig141, - Flat141, - FR141, - BigUnion141, - ExtractAlpha141, - ExcludeZulu141, - OptionalAll141, - RequiredAll141, - ReadonlyAll141, - NullableAll141, - TypeNames141, - Action141, - AllPerms141, -}; +export type { Entity_01_41, Registry_01_41, CK_0141, EP_0141, EV_0141, DeepMerge_0141 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts index 7d1954dd..c48d0a77 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-42.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-42 (seed 142) - expensive recursive & mapped types +// pkg-01/types-42 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord142 { - a142: { x: number; y: string; z: boolean }; - b142: { p: string[]; q: Record }; - c142: { nested: { deep: { deeper: { deepest: string } } } }; - d142: number; - e142: string; - f142: boolean; - g142: null; - h142: undefined; - i142: bigint; - j142: symbol; -} - -type PartialBig142 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten142 = T extends Array ? Flatten142 : T; -type Nested142 = number[][][][][][][][][][]; -type Flat142 = Flatten142; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly142 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly142 : T[K]; -}; -type DeepRequired142 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired142 : T[K]; +type DeepMerge_0142 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0142 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR142 = DeepReadonly142>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion142 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha142 = Extract; -type ExcludeZulu142 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA142 { width: number; height: number; depth: number } -interface ShapeB142 { color: string; opacity: number; blend: string } -interface ShapeC142 { x: number; y: number; z: number; w: number } -interface ShapeD142 { label: string; title: string; summary: string } - -type Combined142 = ShapeA142 & ShapeB142 & ShapeC142 & ShapeD142; -type OptionalAll142 = { [K in keyof Combined142]?: Combined142[K] }; -type RequiredAll142 = { [K in keyof Combined142]-?: Combined142[K] }; -type ReadonlyAll142 = { readonly [K in keyof Combined142]: Combined142[K] }; -type NullableAll142 = { [K in keyof Combined142]: Combined142[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString142 = T extends string ? true : false; -type IsNumber142 = T extends number ? true : false; -type TypeName142 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_42 | null; children: Entity_01_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0142: number; y0142: string; z0142: boolean }; +} -type TypeNames142 = { - [K in keyof BigRecord142]: TypeName142; +type Path_0142 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0142}` }[keyof T & string] : never; +type EP_0142 = Path_0142; + +type Val_0142 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0142 } + : T[K] extends object ? { t: 'o'; props: Val_0142 } + : { t: 'u' }; }; +type EV_0142 = Val_0142; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb142 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource142 = "user" | "post" | "comment" | "tag" | "category"; -type Action142 = `${Verb142}_${Resource142}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise142 = T extends Promise ? UnwrapPromise142 : T; -type UnwrapArray142 = T extends (infer U)[] ? UnwrapArray142 : T; -type Head142 = T extends [infer H, ...infer _] ? H : never; -type Tail142 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation142 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation142>] - : never; +interface Registry_01_42 { + entities: Map; + validators: EV_0142; + paths: Set; + merged: DeepMerge_0142; +} -type SmallUnion142 = "a" | "b" | "c" | "d"; -type AllPerms142 = Permutation142; +type CK_0142 = `p01.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig142, - Flat142, - FR142, - BigUnion142, - ExtractAlpha142, - ExcludeZulu142, - OptionalAll142, - RequiredAll142, - ReadonlyAll142, - NullableAll142, - TypeNames142, - Action142, - AllPerms142, -}; +export type { Entity_01_42, Registry_01_42, CK_0142, EP_0142, EV_0142, DeepMerge_0142 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts index c1ea43f5..9de54076 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-43.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-43 (seed 143) - expensive recursive & mapped types +// pkg-01/types-43 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord143 { - a143: { x: number; y: string; z: boolean }; - b143: { p: string[]; q: Record }; - c143: { nested: { deep: { deeper: { deepest: string } } } }; - d143: number; - e143: string; - f143: boolean; - g143: null; - h143: undefined; - i143: bigint; - j143: symbol; -} - -type PartialBig143 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten143 = T extends Array ? Flatten143 : T; -type Nested143 = number[][][][][][][][][][]; -type Flat143 = Flatten143; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly143 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly143 : T[K]; -}; -type DeepRequired143 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired143 : T[K]; +type DeepMerge_0143 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0143 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR143 = DeepReadonly143>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion143 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha143 = Extract; -type ExcludeZulu143 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA143 { width: number; height: number; depth: number } -interface ShapeB143 { color: string; opacity: number; blend: string } -interface ShapeC143 { x: number; y: number; z: number; w: number } -interface ShapeD143 { label: string; title: string; summary: string } - -type Combined143 = ShapeA143 & ShapeB143 & ShapeC143 & ShapeD143; -type OptionalAll143 = { [K in keyof Combined143]?: Combined143[K] }; -type RequiredAll143 = { [K in keyof Combined143]-?: Combined143[K] }; -type ReadonlyAll143 = { readonly [K in keyof Combined143]: Combined143[K] }; -type NullableAll143 = { [K in keyof Combined143]: Combined143[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString143 = T extends string ? true : false; -type IsNumber143 = T extends number ? true : false; -type TypeName143 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_43 | null; children: Entity_01_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0143: number; y0143: string; z0143: boolean }; +} -type TypeNames143 = { - [K in keyof BigRecord143]: TypeName143; +type Path_0143 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0143}` }[keyof T & string] : never; +type EP_0143 = Path_0143; + +type Val_0143 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0143 } + : T[K] extends object ? { t: 'o'; props: Val_0143 } + : { t: 'u' }; }; +type EV_0143 = Val_0143; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb143 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource143 = "user" | "post" | "comment" | "tag" | "category"; -type Action143 = `${Verb143}_${Resource143}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise143 = T extends Promise ? UnwrapPromise143 : T; -type UnwrapArray143 = T extends (infer U)[] ? UnwrapArray143 : T; -type Head143 = T extends [infer H, ...infer _] ? H : never; -type Tail143 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation143 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation143>] - : never; +interface Registry_01_43 { + entities: Map; + validators: EV_0143; + paths: Set; + merged: DeepMerge_0143; +} -type SmallUnion143 = "a" | "b" | "c" | "d"; -type AllPerms143 = Permutation143; +type CK_0143 = `p01.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig143, - Flat143, - FR143, - BigUnion143, - ExtractAlpha143, - ExcludeZulu143, - OptionalAll143, - RequiredAll143, - ReadonlyAll143, - NullableAll143, - TypeNames143, - Action143, - AllPerms143, -}; +export type { Entity_01_43, Registry_01_43, CK_0143, EP_0143, EV_0143, DeepMerge_0143 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts index a570a45b..e4c0442f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-44.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-44 (seed 144) - expensive recursive & mapped types +// pkg-01/types-44 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord144 { - a144: { x: number; y: string; z: boolean }; - b144: { p: string[]; q: Record }; - c144: { nested: { deep: { deeper: { deepest: string } } } }; - d144: number; - e144: string; - f144: boolean; - g144: null; - h144: undefined; - i144: bigint; - j144: symbol; -} - -type PartialBig144 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten144 = T extends Array ? Flatten144 : T; -type Nested144 = number[][][][][][][][][][]; -type Flat144 = Flatten144; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly144 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly144 : T[K]; -}; -type DeepRequired144 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired144 : T[K]; +type DeepMerge_0144 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0144 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR144 = DeepReadonly144>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion144 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha144 = Extract; -type ExcludeZulu144 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA144 { width: number; height: number; depth: number } -interface ShapeB144 { color: string; opacity: number; blend: string } -interface ShapeC144 { x: number; y: number; z: number; w: number } -interface ShapeD144 { label: string; title: string; summary: string } - -type Combined144 = ShapeA144 & ShapeB144 & ShapeC144 & ShapeD144; -type OptionalAll144 = { [K in keyof Combined144]?: Combined144[K] }; -type RequiredAll144 = { [K in keyof Combined144]-?: Combined144[K] }; -type ReadonlyAll144 = { readonly [K in keyof Combined144]: Combined144[K] }; -type NullableAll144 = { [K in keyof Combined144]: Combined144[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString144 = T extends string ? true : false; -type IsNumber144 = T extends number ? true : false; -type TypeName144 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_44 | null; children: Entity_01_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0144: number; y0144: string; z0144: boolean }; +} -type TypeNames144 = { - [K in keyof BigRecord144]: TypeName144; +type Path_0144 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0144}` }[keyof T & string] : never; +type EP_0144 = Path_0144; + +type Val_0144 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0144 } + : T[K] extends object ? { t: 'o'; props: Val_0144 } + : { t: 'u' }; }; +type EV_0144 = Val_0144; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb144 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource144 = "user" | "post" | "comment" | "tag" | "category"; -type Action144 = `${Verb144}_${Resource144}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise144 = T extends Promise ? UnwrapPromise144 : T; -type UnwrapArray144 = T extends (infer U)[] ? UnwrapArray144 : T; -type Head144 = T extends [infer H, ...infer _] ? H : never; -type Tail144 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation144 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation144>] - : never; +interface Registry_01_44 { + entities: Map; + validators: EV_0144; + paths: Set; + merged: DeepMerge_0144; +} -type SmallUnion144 = "a" | "b" | "c" | "d"; -type AllPerms144 = Permutation144; +type CK_0144 = `p01.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig144, - Flat144, - FR144, - BigUnion144, - ExtractAlpha144, - ExcludeZulu144, - OptionalAll144, - RequiredAll144, - ReadonlyAll144, - NullableAll144, - TypeNames144, - Action144, - AllPerms144, -}; +export type { Entity_01_44, Registry_01_44, CK_0144, EP_0144, EV_0144, DeepMerge_0144 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts index a0540011..19a15abf 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-45.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-45 (seed 145) - expensive recursive & mapped types +// pkg-01/types-45 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord145 { - a145: { x: number; y: string; z: boolean }; - b145: { p: string[]; q: Record }; - c145: { nested: { deep: { deeper: { deepest: string } } } }; - d145: number; - e145: string; - f145: boolean; - g145: null; - h145: undefined; - i145: bigint; - j145: symbol; -} - -type PartialBig145 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten145 = T extends Array ? Flatten145 : T; -type Nested145 = number[][][][][][][][][][]; -type Flat145 = Flatten145; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly145 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly145 : T[K]; -}; -type DeepRequired145 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired145 : T[K]; +type DeepMerge_0145 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0145 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR145 = DeepReadonly145>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion145 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha145 = Extract; -type ExcludeZulu145 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA145 { width: number; height: number; depth: number } -interface ShapeB145 { color: string; opacity: number; blend: string } -interface ShapeC145 { x: number; y: number; z: number; w: number } -interface ShapeD145 { label: string; title: string; summary: string } - -type Combined145 = ShapeA145 & ShapeB145 & ShapeC145 & ShapeD145; -type OptionalAll145 = { [K in keyof Combined145]?: Combined145[K] }; -type RequiredAll145 = { [K in keyof Combined145]-?: Combined145[K] }; -type ReadonlyAll145 = { readonly [K in keyof Combined145]: Combined145[K] }; -type NullableAll145 = { [K in keyof Combined145]: Combined145[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString145 = T extends string ? true : false; -type IsNumber145 = T extends number ? true : false; -type TypeName145 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_45 | null; children: Entity_01_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0145: number; y0145: string; z0145: boolean }; +} -type TypeNames145 = { - [K in keyof BigRecord145]: TypeName145; +type Path_0145 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0145}` }[keyof T & string] : never; +type EP_0145 = Path_0145; + +type Val_0145 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0145 } + : T[K] extends object ? { t: 'o'; props: Val_0145 } + : { t: 'u' }; }; +type EV_0145 = Val_0145; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb145 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource145 = "user" | "post" | "comment" | "tag" | "category"; -type Action145 = `${Verb145}_${Resource145}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise145 = T extends Promise ? UnwrapPromise145 : T; -type UnwrapArray145 = T extends (infer U)[] ? UnwrapArray145 : T; -type Head145 = T extends [infer H, ...infer _] ? H : never; -type Tail145 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation145 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation145>] - : never; +interface Registry_01_45 { + entities: Map; + validators: EV_0145; + paths: Set; + merged: DeepMerge_0145; +} -type SmallUnion145 = "a" | "b" | "c" | "d"; -type AllPerms145 = Permutation145; +type CK_0145 = `p01.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig145, - Flat145, - FR145, - BigUnion145, - ExtractAlpha145, - ExcludeZulu145, - OptionalAll145, - RequiredAll145, - ReadonlyAll145, - NullableAll145, - TypeNames145, - Action145, - AllPerms145, -}; +export type { Entity_01_45, Registry_01_45, CK_0145, EP_0145, EV_0145, DeepMerge_0145 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts index 40a1ab5a..3f33a51b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-46.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-46 (seed 146) - expensive recursive & mapped types +// pkg-01/types-46 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord146 { - a146: { x: number; y: string; z: boolean }; - b146: { p: string[]; q: Record }; - c146: { nested: { deep: { deeper: { deepest: string } } } }; - d146: number; - e146: string; - f146: boolean; - g146: null; - h146: undefined; - i146: bigint; - j146: symbol; -} - -type PartialBig146 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten146 = T extends Array ? Flatten146 : T; -type Nested146 = number[][][][][][][][][][]; -type Flat146 = Flatten146; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly146 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly146 : T[K]; -}; -type DeepRequired146 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired146 : T[K]; +type DeepMerge_0146 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0146 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR146 = DeepReadonly146>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion146 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha146 = Extract; -type ExcludeZulu146 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA146 { width: number; height: number; depth: number } -interface ShapeB146 { color: string; opacity: number; blend: string } -interface ShapeC146 { x: number; y: number; z: number; w: number } -interface ShapeD146 { label: string; title: string; summary: string } - -type Combined146 = ShapeA146 & ShapeB146 & ShapeC146 & ShapeD146; -type OptionalAll146 = { [K in keyof Combined146]?: Combined146[K] }; -type RequiredAll146 = { [K in keyof Combined146]-?: Combined146[K] }; -type ReadonlyAll146 = { readonly [K in keyof Combined146]: Combined146[K] }; -type NullableAll146 = { [K in keyof Combined146]: Combined146[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString146 = T extends string ? true : false; -type IsNumber146 = T extends number ? true : false; -type TypeName146 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_46 | null; children: Entity_01_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0146: number; y0146: string; z0146: boolean }; +} -type TypeNames146 = { - [K in keyof BigRecord146]: TypeName146; +type Path_0146 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0146}` }[keyof T & string] : never; +type EP_0146 = Path_0146; + +type Val_0146 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0146 } + : T[K] extends object ? { t: 'o'; props: Val_0146 } + : { t: 'u' }; }; +type EV_0146 = Val_0146; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb146 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource146 = "user" | "post" | "comment" | "tag" | "category"; -type Action146 = `${Verb146}_${Resource146}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise146 = T extends Promise ? UnwrapPromise146 : T; -type UnwrapArray146 = T extends (infer U)[] ? UnwrapArray146 : T; -type Head146 = T extends [infer H, ...infer _] ? H : never; -type Tail146 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation146 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation146>] - : never; +interface Registry_01_46 { + entities: Map; + validators: EV_0146; + paths: Set; + merged: DeepMerge_0146; +} -type SmallUnion146 = "a" | "b" | "c" | "d"; -type AllPerms146 = Permutation146; +type CK_0146 = `p01.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig146, - Flat146, - FR146, - BigUnion146, - ExtractAlpha146, - ExcludeZulu146, - OptionalAll146, - RequiredAll146, - ReadonlyAll146, - NullableAll146, - TypeNames146, - Action146, - AllPerms146, -}; +export type { Entity_01_46, Registry_01_46, CK_0146, EP_0146, EV_0146, DeepMerge_0146 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts index 3e2ec82b..e2227348 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-47.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-47 (seed 147) - expensive recursive & mapped types +// pkg-01/types-47 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord147 { - a147: { x: number; y: string; z: boolean }; - b147: { p: string[]; q: Record }; - c147: { nested: { deep: { deeper: { deepest: string } } } }; - d147: number; - e147: string; - f147: boolean; - g147: null; - h147: undefined; - i147: bigint; - j147: symbol; -} - -type PartialBig147 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten147 = T extends Array ? Flatten147 : T; -type Nested147 = number[][][][][][][][][][]; -type Flat147 = Flatten147; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly147 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly147 : T[K]; -}; -type DeepRequired147 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired147 : T[K]; +type DeepMerge_0147 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0147 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR147 = DeepReadonly147>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion147 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha147 = Extract; -type ExcludeZulu147 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA147 { width: number; height: number; depth: number } -interface ShapeB147 { color: string; opacity: number; blend: string } -interface ShapeC147 { x: number; y: number; z: number; w: number } -interface ShapeD147 { label: string; title: string; summary: string } - -type Combined147 = ShapeA147 & ShapeB147 & ShapeC147 & ShapeD147; -type OptionalAll147 = { [K in keyof Combined147]?: Combined147[K] }; -type RequiredAll147 = { [K in keyof Combined147]-?: Combined147[K] }; -type ReadonlyAll147 = { readonly [K in keyof Combined147]: Combined147[K] }; -type NullableAll147 = { [K in keyof Combined147]: Combined147[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString147 = T extends string ? true : false; -type IsNumber147 = T extends number ? true : false; -type TypeName147 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_47 | null; children: Entity_01_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0147: number; y0147: string; z0147: boolean }; +} -type TypeNames147 = { - [K in keyof BigRecord147]: TypeName147; +type Path_0147 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0147}` }[keyof T & string] : never; +type EP_0147 = Path_0147; + +type Val_0147 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0147 } + : T[K] extends object ? { t: 'o'; props: Val_0147 } + : { t: 'u' }; }; +type EV_0147 = Val_0147; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb147 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource147 = "user" | "post" | "comment" | "tag" | "category"; -type Action147 = `${Verb147}_${Resource147}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise147 = T extends Promise ? UnwrapPromise147 : T; -type UnwrapArray147 = T extends (infer U)[] ? UnwrapArray147 : T; -type Head147 = T extends [infer H, ...infer _] ? H : never; -type Tail147 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation147 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation147>] - : never; +interface Registry_01_47 { + entities: Map; + validators: EV_0147; + paths: Set; + merged: DeepMerge_0147; +} -type SmallUnion147 = "a" | "b" | "c" | "d"; -type AllPerms147 = Permutation147; +type CK_0147 = `p01.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig147, - Flat147, - FR147, - BigUnion147, - ExtractAlpha147, - ExcludeZulu147, - OptionalAll147, - RequiredAll147, - ReadonlyAll147, - NullableAll147, - TypeNames147, - Action147, - AllPerms147, -}; +export type { Entity_01_47, Registry_01_47, CK_0147, EP_0147, EV_0147, DeepMerge_0147 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts index f09b17c8..5b861ea1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-48.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-48 (seed 148) - expensive recursive & mapped types +// pkg-01/types-48 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord148 { - a148: { x: number; y: string; z: boolean }; - b148: { p: string[]; q: Record }; - c148: { nested: { deep: { deeper: { deepest: string } } } }; - d148: number; - e148: string; - f148: boolean; - g148: null; - h148: undefined; - i148: bigint; - j148: symbol; -} - -type PartialBig148 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten148 = T extends Array ? Flatten148 : T; -type Nested148 = number[][][][][][][][][][]; -type Flat148 = Flatten148; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly148 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly148 : T[K]; -}; -type DeepRequired148 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired148 : T[K]; +type DeepMerge_0148 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0148 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR148 = DeepReadonly148>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion148 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha148 = Extract; -type ExcludeZulu148 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA148 { width: number; height: number; depth: number } -interface ShapeB148 { color: string; opacity: number; blend: string } -interface ShapeC148 { x: number; y: number; z: number; w: number } -interface ShapeD148 { label: string; title: string; summary: string } - -type Combined148 = ShapeA148 & ShapeB148 & ShapeC148 & ShapeD148; -type OptionalAll148 = { [K in keyof Combined148]?: Combined148[K] }; -type RequiredAll148 = { [K in keyof Combined148]-?: Combined148[K] }; -type ReadonlyAll148 = { readonly [K in keyof Combined148]: Combined148[K] }; -type NullableAll148 = { [K in keyof Combined148]: Combined148[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString148 = T extends string ? true : false; -type IsNumber148 = T extends number ? true : false; -type TypeName148 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_48 | null; children: Entity_01_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0148: number; y0148: string; z0148: boolean }; +} -type TypeNames148 = { - [K in keyof BigRecord148]: TypeName148; +type Path_0148 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0148}` }[keyof T & string] : never; +type EP_0148 = Path_0148; + +type Val_0148 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0148 } + : T[K] extends object ? { t: 'o'; props: Val_0148 } + : { t: 'u' }; }; +type EV_0148 = Val_0148; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb148 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource148 = "user" | "post" | "comment" | "tag" | "category"; -type Action148 = `${Verb148}_${Resource148}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise148 = T extends Promise ? UnwrapPromise148 : T; -type UnwrapArray148 = T extends (infer U)[] ? UnwrapArray148 : T; -type Head148 = T extends [infer H, ...infer _] ? H : never; -type Tail148 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation148 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation148>] - : never; +interface Registry_01_48 { + entities: Map; + validators: EV_0148; + paths: Set; + merged: DeepMerge_0148; +} -type SmallUnion148 = "a" | "b" | "c" | "d"; -type AllPerms148 = Permutation148; +type CK_0148 = `p01.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig148, - Flat148, - FR148, - BigUnion148, - ExtractAlpha148, - ExcludeZulu148, - OptionalAll148, - RequiredAll148, - ReadonlyAll148, - NullableAll148, - TypeNames148, - Action148, - AllPerms148, -}; +export type { Entity_01_48, Registry_01_48, CK_0148, EP_0148, EV_0148, DeepMerge_0148 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts index e4d0cf1e..555bd23d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-49.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-49 (seed 149) - expensive recursive & mapped types +// pkg-01/types-49 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord149 { - a149: { x: number; y: string; z: boolean }; - b149: { p: string[]; q: Record }; - c149: { nested: { deep: { deeper: { deepest: string } } } }; - d149: number; - e149: string; - f149: boolean; - g149: null; - h149: undefined; - i149: bigint; - j149: symbol; -} - -type PartialBig149 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten149 = T extends Array ? Flatten149 : T; -type Nested149 = number[][][][][][][][][][]; -type Flat149 = Flatten149; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly149 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly149 : T[K]; -}; -type DeepRequired149 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired149 : T[K]; +type DeepMerge_0149 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0149 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR149 = DeepReadonly149>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion149 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha149 = Extract; -type ExcludeZulu149 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA149 { width: number; height: number; depth: number } -interface ShapeB149 { color: string; opacity: number; blend: string } -interface ShapeC149 { x: number; y: number; z: number; w: number } -interface ShapeD149 { label: string; title: string; summary: string } - -type Combined149 = ShapeA149 & ShapeB149 & ShapeC149 & ShapeD149; -type OptionalAll149 = { [K in keyof Combined149]?: Combined149[K] }; -type RequiredAll149 = { [K in keyof Combined149]-?: Combined149[K] }; -type ReadonlyAll149 = { readonly [K in keyof Combined149]: Combined149[K] }; -type NullableAll149 = { [K in keyof Combined149]: Combined149[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString149 = T extends string ? true : false; -type IsNumber149 = T extends number ? true : false; -type TypeName149 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_49 | null; children: Entity_01_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0149: number; y0149: string; z0149: boolean }; +} -type TypeNames149 = { - [K in keyof BigRecord149]: TypeName149; +type Path_0149 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0149}` }[keyof T & string] : never; +type EP_0149 = Path_0149; + +type Val_0149 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0149 } + : T[K] extends object ? { t: 'o'; props: Val_0149 } + : { t: 'u' }; }; +type EV_0149 = Val_0149; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb149 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource149 = "user" | "post" | "comment" | "tag" | "category"; -type Action149 = `${Verb149}_${Resource149}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise149 = T extends Promise ? UnwrapPromise149 : T; -type UnwrapArray149 = T extends (infer U)[] ? UnwrapArray149 : T; -type Head149 = T extends [infer H, ...infer _] ? H : never; -type Tail149 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation149 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation149>] - : never; +interface Registry_01_49 { + entities: Map; + validators: EV_0149; + paths: Set; + merged: DeepMerge_0149; +} -type SmallUnion149 = "a" | "b" | "c" | "d"; -type AllPerms149 = Permutation149; +type CK_0149 = `p01.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig149, - Flat149, - FR149, - BigUnion149, - ExtractAlpha149, - ExcludeZulu149, - OptionalAll149, - RequiredAll149, - ReadonlyAll149, - NullableAll149, - TypeNames149, - Action149, - AllPerms149, -}; +export type { Entity_01_49, Registry_01_49, CK_0149, EP_0149, EV_0149, DeepMerge_0149 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts index 2169d98c..4ab0f7c7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-01/types-50.ts @@ -1,125 +1,41 @@ -// pkg-01 / types-50 (seed 150) - expensive recursive & mapped types +// pkg-01/types-50 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord150 { - a150: { x: number; y: string; z: boolean }; - b150: { p: string[]; q: Record }; - c150: { nested: { deep: { deeper: { deepest: string } } } }; - d150: number; - e150: string; - f150: boolean; - g150: null; - h150: undefined; - i150: bigint; - j150: symbol; -} - -type PartialBig150 = DeepPartial; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten150 = T extends Array ? Flatten150 : T; -type Nested150 = number[][][][][][][][][][]; -type Flat150 = Flatten150; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly150 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly150 : T[K]; -}; -type DeepRequired150 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired150 : T[K]; +type DeepMerge_0150 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0150 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR150 = DeepReadonly150>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion150 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha150 = Extract; -type ExcludeZulu150 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA150 { width: number; height: number; depth: number } -interface ShapeB150 { color: string; opacity: number; blend: string } -interface ShapeC150 { x: number; y: number; z: number; w: number } -interface ShapeD150 { label: string; title: string; summary: string } - -type Combined150 = ShapeA150 & ShapeB150 & ShapeC150 & ShapeD150; -type OptionalAll150 = { [K in keyof Combined150]?: Combined150[K] }; -type RequiredAll150 = { [K in keyof Combined150]-?: Combined150[K] }; -type ReadonlyAll150 = { readonly [K in keyof Combined150]: Combined150[K] }; -type NullableAll150 = { [K in keyof Combined150]: Combined150[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString150 = T extends string ? true : false; -type IsNumber150 = T extends number ? true : false; -type TypeName150 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_01_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_01_50 | null; children: Entity_01_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0150: number; y0150: string; z0150: boolean }; +} -type TypeNames150 = { - [K in keyof BigRecord150]: TypeName150; +type Path_0150 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0150}` }[keyof T & string] : never; +type EP_0150 = Path_0150; + +type Val_0150 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0150 } + : T[K] extends object ? { t: 'o'; props: Val_0150 } + : { t: 'u' }; }; +type EV_0150 = Val_0150; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb150 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource150 = "user" | "post" | "comment" | "tag" | "category"; -type Action150 = `${Verb150}_${Resource150}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise150 = T extends Promise ? UnwrapPromise150 : T; -type UnwrapArray150 = T extends (infer U)[] ? UnwrapArray150 : T; -type Head150 = T extends [infer H, ...infer _] ? H : never; -type Tail150 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation150 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation150>] - : never; +interface Registry_01_50 { + entities: Map; + validators: EV_0150; + paths: Set; + merged: DeepMerge_0150; +} -type SmallUnion150 = "a" | "b" | "c" | "d"; -type AllPerms150 = Permutation150; +type CK_0150 = `p01.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig150, - Flat150, - FR150, - BigUnion150, - ExtractAlpha150, - ExcludeZulu150, - OptionalAll150, - RequiredAll150, - ReadonlyAll150, - NullableAll150, - TypeNames150, - Action150, - AllPerms150, -}; +export type { Entity_01_50, Registry_01_50, CK_0150, EP_0150, EV_0150, DeepMerge_0150 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts index 1abe096f..1e5daf90 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-01.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-01 (seed 201) - expensive recursive & mapped types +// pkg-02/types-01 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord201 { - a201: { x: number; y: string; z: boolean }; - b201: { p: string[]; q: Record }; - c201: { nested: { deep: { deeper: { deepest: string } } } }; - d201: number; - e201: string; - f201: boolean; - g201: null; - h201: undefined; - i201: bigint; - j201: symbol; -} - -type PartialBig201 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten201 = T extends Array ? Flatten201 : T; -type Nested201 = number[][][][][][][][][][]; -type Flat201 = Flatten201; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly201 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly201 : T[K]; -}; -type DeepRequired201 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired201 : T[K]; +type DeepMerge_0201 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0201 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR201 = DeepReadonly201>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion201 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha201 = Extract; -type ExcludeZulu201 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA201 { width: number; height: number; depth: number } -interface ShapeB201 { color: string; opacity: number; blend: string } -interface ShapeC201 { x: number; y: number; z: number; w: number } -interface ShapeD201 { label: string; title: string; summary: string } - -type Combined201 = ShapeA201 & ShapeB201 & ShapeC201 & ShapeD201; -type OptionalAll201 = { [K in keyof Combined201]?: Combined201[K] }; -type RequiredAll201 = { [K in keyof Combined201]-?: Combined201[K] }; -type ReadonlyAll201 = { readonly [K in keyof Combined201]: Combined201[K] }; -type NullableAll201 = { [K in keyof Combined201]: Combined201[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString201 = T extends string ? true : false; -type IsNumber201 = T extends number ? true : false; -type TypeName201 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_01 | null; children: Entity_02_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0201: number; y0201: string; z0201: boolean }; +} -type TypeNames201 = { - [K in keyof BigRecord201]: TypeName201; +type Path_0201 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0201}` }[keyof T & string] : never; +type EP_0201 = Path_0201; + +type Val_0201 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0201 } + : T[K] extends object ? { t: 'o'; props: Val_0201 } + : { t: 'u' }; }; +type EV_0201 = Val_0201; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb201 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource201 = "user" | "post" | "comment" | "tag" | "category"; -type Action201 = `${Verb201}_${Resource201}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise201 = T extends Promise ? UnwrapPromise201 : T; -type UnwrapArray201 = T extends (infer U)[] ? UnwrapArray201 : T; -type Head201 = T extends [infer H, ...infer _] ? H : never; -type Tail201 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation201 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation201>] - : never; +interface Registry_02_01 { + entities: Map; + validators: EV_0201; + paths: Set; + merged: DeepMerge_0201; +} -type SmallUnion201 = "a" | "b" | "c" | "d"; -type AllPerms201 = Permutation201; +type CK_0201 = `p02.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig201, - Flat201, - FR201, - BigUnion201, - ExtractAlpha201, - ExcludeZulu201, - OptionalAll201, - RequiredAll201, - ReadonlyAll201, - NullableAll201, - TypeNames201, - Action201, - AllPerms201, -}; +export type { Entity_02_01, Registry_02_01, CK_0201, EP_0201, EV_0201, DeepMerge_0201 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts index 10cdf85a..92189b7a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-02.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-02 (seed 202) - expensive recursive & mapped types +// pkg-02/types-02 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord202 { - a202: { x: number; y: string; z: boolean }; - b202: { p: string[]; q: Record }; - c202: { nested: { deep: { deeper: { deepest: string } } } }; - d202: number; - e202: string; - f202: boolean; - g202: null; - h202: undefined; - i202: bigint; - j202: symbol; -} - -type PartialBig202 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten202 = T extends Array ? Flatten202 : T; -type Nested202 = number[][][][][][][][][][]; -type Flat202 = Flatten202; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly202 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly202 : T[K]; -}; -type DeepRequired202 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired202 : T[K]; +type DeepMerge_0202 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0202 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR202 = DeepReadonly202>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion202 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha202 = Extract; -type ExcludeZulu202 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA202 { width: number; height: number; depth: number } -interface ShapeB202 { color: string; opacity: number; blend: string } -interface ShapeC202 { x: number; y: number; z: number; w: number } -interface ShapeD202 { label: string; title: string; summary: string } - -type Combined202 = ShapeA202 & ShapeB202 & ShapeC202 & ShapeD202; -type OptionalAll202 = { [K in keyof Combined202]?: Combined202[K] }; -type RequiredAll202 = { [K in keyof Combined202]-?: Combined202[K] }; -type ReadonlyAll202 = { readonly [K in keyof Combined202]: Combined202[K] }; -type NullableAll202 = { [K in keyof Combined202]: Combined202[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString202 = T extends string ? true : false; -type IsNumber202 = T extends number ? true : false; -type TypeName202 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_02 | null; children: Entity_02_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0202: number; y0202: string; z0202: boolean }; +} -type TypeNames202 = { - [K in keyof BigRecord202]: TypeName202; +type Path_0202 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0202}` }[keyof T & string] : never; +type EP_0202 = Path_0202; + +type Val_0202 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0202 } + : T[K] extends object ? { t: 'o'; props: Val_0202 } + : { t: 'u' }; }; +type EV_0202 = Val_0202; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb202 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource202 = "user" | "post" | "comment" | "tag" | "category"; -type Action202 = `${Verb202}_${Resource202}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise202 = T extends Promise ? UnwrapPromise202 : T; -type UnwrapArray202 = T extends (infer U)[] ? UnwrapArray202 : T; -type Head202 = T extends [infer H, ...infer _] ? H : never; -type Tail202 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation202 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation202>] - : never; +interface Registry_02_02 { + entities: Map; + validators: EV_0202; + paths: Set; + merged: DeepMerge_0202; +} -type SmallUnion202 = "a" | "b" | "c" | "d"; -type AllPerms202 = Permutation202; +type CK_0202 = `p02.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig202, - Flat202, - FR202, - BigUnion202, - ExtractAlpha202, - ExcludeZulu202, - OptionalAll202, - RequiredAll202, - ReadonlyAll202, - NullableAll202, - TypeNames202, - Action202, - AllPerms202, -}; +export type { Entity_02_02, Registry_02_02, CK_0202, EP_0202, EV_0202, DeepMerge_0202 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts index b41cbdd5..9a752947 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-03.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-03 (seed 203) - expensive recursive & mapped types +// pkg-02/types-03 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord203 { - a203: { x: number; y: string; z: boolean }; - b203: { p: string[]; q: Record }; - c203: { nested: { deep: { deeper: { deepest: string } } } }; - d203: number; - e203: string; - f203: boolean; - g203: null; - h203: undefined; - i203: bigint; - j203: symbol; -} - -type PartialBig203 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten203 = T extends Array ? Flatten203 : T; -type Nested203 = number[][][][][][][][][][]; -type Flat203 = Flatten203; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly203 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly203 : T[K]; -}; -type DeepRequired203 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired203 : T[K]; +type DeepMerge_0203 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0203 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR203 = DeepReadonly203>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion203 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha203 = Extract; -type ExcludeZulu203 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA203 { width: number; height: number; depth: number } -interface ShapeB203 { color: string; opacity: number; blend: string } -interface ShapeC203 { x: number; y: number; z: number; w: number } -interface ShapeD203 { label: string; title: string; summary: string } - -type Combined203 = ShapeA203 & ShapeB203 & ShapeC203 & ShapeD203; -type OptionalAll203 = { [K in keyof Combined203]?: Combined203[K] }; -type RequiredAll203 = { [K in keyof Combined203]-?: Combined203[K] }; -type ReadonlyAll203 = { readonly [K in keyof Combined203]: Combined203[K] }; -type NullableAll203 = { [K in keyof Combined203]: Combined203[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString203 = T extends string ? true : false; -type IsNumber203 = T extends number ? true : false; -type TypeName203 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_03 | null; children: Entity_02_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0203: number; y0203: string; z0203: boolean }; +} -type TypeNames203 = { - [K in keyof BigRecord203]: TypeName203; +type Path_0203 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0203}` }[keyof T & string] : never; +type EP_0203 = Path_0203; + +type Val_0203 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0203 } + : T[K] extends object ? { t: 'o'; props: Val_0203 } + : { t: 'u' }; }; +type EV_0203 = Val_0203; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb203 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource203 = "user" | "post" | "comment" | "tag" | "category"; -type Action203 = `${Verb203}_${Resource203}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise203 = T extends Promise ? UnwrapPromise203 : T; -type UnwrapArray203 = T extends (infer U)[] ? UnwrapArray203 : T; -type Head203 = T extends [infer H, ...infer _] ? H : never; -type Tail203 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation203 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation203>] - : never; +interface Registry_02_03 { + entities: Map; + validators: EV_0203; + paths: Set; + merged: DeepMerge_0203; +} -type SmallUnion203 = "a" | "b" | "c" | "d"; -type AllPerms203 = Permutation203; +type CK_0203 = `p02.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig203, - Flat203, - FR203, - BigUnion203, - ExtractAlpha203, - ExcludeZulu203, - OptionalAll203, - RequiredAll203, - ReadonlyAll203, - NullableAll203, - TypeNames203, - Action203, - AllPerms203, -}; +export type { Entity_02_03, Registry_02_03, CK_0203, EP_0203, EV_0203, DeepMerge_0203 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts index ea34b40d..2a45c9b4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-04.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-04 (seed 204) - expensive recursive & mapped types +// pkg-02/types-04 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord204 { - a204: { x: number; y: string; z: boolean }; - b204: { p: string[]; q: Record }; - c204: { nested: { deep: { deeper: { deepest: string } } } }; - d204: number; - e204: string; - f204: boolean; - g204: null; - h204: undefined; - i204: bigint; - j204: symbol; -} - -type PartialBig204 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten204 = T extends Array ? Flatten204 : T; -type Nested204 = number[][][][][][][][][][]; -type Flat204 = Flatten204; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly204 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly204 : T[K]; -}; -type DeepRequired204 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired204 : T[K]; +type DeepMerge_0204 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0204 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR204 = DeepReadonly204>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion204 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha204 = Extract; -type ExcludeZulu204 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA204 { width: number; height: number; depth: number } -interface ShapeB204 { color: string; opacity: number; blend: string } -interface ShapeC204 { x: number; y: number; z: number; w: number } -interface ShapeD204 { label: string; title: string; summary: string } - -type Combined204 = ShapeA204 & ShapeB204 & ShapeC204 & ShapeD204; -type OptionalAll204 = { [K in keyof Combined204]?: Combined204[K] }; -type RequiredAll204 = { [K in keyof Combined204]-?: Combined204[K] }; -type ReadonlyAll204 = { readonly [K in keyof Combined204]: Combined204[K] }; -type NullableAll204 = { [K in keyof Combined204]: Combined204[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString204 = T extends string ? true : false; -type IsNumber204 = T extends number ? true : false; -type TypeName204 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_04 | null; children: Entity_02_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0204: number; y0204: string; z0204: boolean }; +} -type TypeNames204 = { - [K in keyof BigRecord204]: TypeName204; +type Path_0204 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0204}` }[keyof T & string] : never; +type EP_0204 = Path_0204; + +type Val_0204 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0204 } + : T[K] extends object ? { t: 'o'; props: Val_0204 } + : { t: 'u' }; }; +type EV_0204 = Val_0204; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb204 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource204 = "user" | "post" | "comment" | "tag" | "category"; -type Action204 = `${Verb204}_${Resource204}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise204 = T extends Promise ? UnwrapPromise204 : T; -type UnwrapArray204 = T extends (infer U)[] ? UnwrapArray204 : T; -type Head204 = T extends [infer H, ...infer _] ? H : never; -type Tail204 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation204 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation204>] - : never; +interface Registry_02_04 { + entities: Map; + validators: EV_0204; + paths: Set; + merged: DeepMerge_0204; +} -type SmallUnion204 = "a" | "b" | "c" | "d"; -type AllPerms204 = Permutation204; +type CK_0204 = `p02.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig204, - Flat204, - FR204, - BigUnion204, - ExtractAlpha204, - ExcludeZulu204, - OptionalAll204, - RequiredAll204, - ReadonlyAll204, - NullableAll204, - TypeNames204, - Action204, - AllPerms204, -}; +export type { Entity_02_04, Registry_02_04, CK_0204, EP_0204, EV_0204, DeepMerge_0204 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts index dbd10512..2a80fa52 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-05.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-05 (seed 205) - expensive recursive & mapped types +// pkg-02/types-05 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord205 { - a205: { x: number; y: string; z: boolean }; - b205: { p: string[]; q: Record }; - c205: { nested: { deep: { deeper: { deepest: string } } } }; - d205: number; - e205: string; - f205: boolean; - g205: null; - h205: undefined; - i205: bigint; - j205: symbol; -} - -type PartialBig205 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten205 = T extends Array ? Flatten205 : T; -type Nested205 = number[][][][][][][][][][]; -type Flat205 = Flatten205; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly205 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly205 : T[K]; -}; -type DeepRequired205 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired205 : T[K]; +type DeepMerge_0205 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0205 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR205 = DeepReadonly205>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion205 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha205 = Extract; -type ExcludeZulu205 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA205 { width: number; height: number; depth: number } -interface ShapeB205 { color: string; opacity: number; blend: string } -interface ShapeC205 { x: number; y: number; z: number; w: number } -interface ShapeD205 { label: string; title: string; summary: string } - -type Combined205 = ShapeA205 & ShapeB205 & ShapeC205 & ShapeD205; -type OptionalAll205 = { [K in keyof Combined205]?: Combined205[K] }; -type RequiredAll205 = { [K in keyof Combined205]-?: Combined205[K] }; -type ReadonlyAll205 = { readonly [K in keyof Combined205]: Combined205[K] }; -type NullableAll205 = { [K in keyof Combined205]: Combined205[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString205 = T extends string ? true : false; -type IsNumber205 = T extends number ? true : false; -type TypeName205 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_05 | null; children: Entity_02_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0205: number; y0205: string; z0205: boolean }; +} -type TypeNames205 = { - [K in keyof BigRecord205]: TypeName205; +type Path_0205 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0205}` }[keyof T & string] : never; +type EP_0205 = Path_0205; + +type Val_0205 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0205 } + : T[K] extends object ? { t: 'o'; props: Val_0205 } + : { t: 'u' }; }; +type EV_0205 = Val_0205; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb205 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource205 = "user" | "post" | "comment" | "tag" | "category"; -type Action205 = `${Verb205}_${Resource205}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise205 = T extends Promise ? UnwrapPromise205 : T; -type UnwrapArray205 = T extends (infer U)[] ? UnwrapArray205 : T; -type Head205 = T extends [infer H, ...infer _] ? H : never; -type Tail205 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation205 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation205>] - : never; +interface Registry_02_05 { + entities: Map; + validators: EV_0205; + paths: Set; + merged: DeepMerge_0205; +} -type SmallUnion205 = "a" | "b" | "c" | "d"; -type AllPerms205 = Permutation205; +type CK_0205 = `p02.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig205, - Flat205, - FR205, - BigUnion205, - ExtractAlpha205, - ExcludeZulu205, - OptionalAll205, - RequiredAll205, - ReadonlyAll205, - NullableAll205, - TypeNames205, - Action205, - AllPerms205, -}; +export type { Entity_02_05, Registry_02_05, CK_0205, EP_0205, EV_0205, DeepMerge_0205 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts index ab0a1df3..df60233b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-06.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-06 (seed 206) - expensive recursive & mapped types +// pkg-02/types-06 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord206 { - a206: { x: number; y: string; z: boolean }; - b206: { p: string[]; q: Record }; - c206: { nested: { deep: { deeper: { deepest: string } } } }; - d206: number; - e206: string; - f206: boolean; - g206: null; - h206: undefined; - i206: bigint; - j206: symbol; -} - -type PartialBig206 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten206 = T extends Array ? Flatten206 : T; -type Nested206 = number[][][][][][][][][][]; -type Flat206 = Flatten206; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly206 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly206 : T[K]; -}; -type DeepRequired206 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired206 : T[K]; +type DeepMerge_0206 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0206 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR206 = DeepReadonly206>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion206 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha206 = Extract; -type ExcludeZulu206 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA206 { width: number; height: number; depth: number } -interface ShapeB206 { color: string; opacity: number; blend: string } -interface ShapeC206 { x: number; y: number; z: number; w: number } -interface ShapeD206 { label: string; title: string; summary: string } - -type Combined206 = ShapeA206 & ShapeB206 & ShapeC206 & ShapeD206; -type OptionalAll206 = { [K in keyof Combined206]?: Combined206[K] }; -type RequiredAll206 = { [K in keyof Combined206]-?: Combined206[K] }; -type ReadonlyAll206 = { readonly [K in keyof Combined206]: Combined206[K] }; -type NullableAll206 = { [K in keyof Combined206]: Combined206[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString206 = T extends string ? true : false; -type IsNumber206 = T extends number ? true : false; -type TypeName206 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_06 | null; children: Entity_02_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0206: number; y0206: string; z0206: boolean }; +} -type TypeNames206 = { - [K in keyof BigRecord206]: TypeName206; +type Path_0206 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0206}` }[keyof T & string] : never; +type EP_0206 = Path_0206; + +type Val_0206 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0206 } + : T[K] extends object ? { t: 'o'; props: Val_0206 } + : { t: 'u' }; }; +type EV_0206 = Val_0206; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb206 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource206 = "user" | "post" | "comment" | "tag" | "category"; -type Action206 = `${Verb206}_${Resource206}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise206 = T extends Promise ? UnwrapPromise206 : T; -type UnwrapArray206 = T extends (infer U)[] ? UnwrapArray206 : T; -type Head206 = T extends [infer H, ...infer _] ? H : never; -type Tail206 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation206 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation206>] - : never; +interface Registry_02_06 { + entities: Map; + validators: EV_0206; + paths: Set; + merged: DeepMerge_0206; +} -type SmallUnion206 = "a" | "b" | "c" | "d"; -type AllPerms206 = Permutation206; +type CK_0206 = `p02.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig206, - Flat206, - FR206, - BigUnion206, - ExtractAlpha206, - ExcludeZulu206, - OptionalAll206, - RequiredAll206, - ReadonlyAll206, - NullableAll206, - TypeNames206, - Action206, - AllPerms206, -}; +export type { Entity_02_06, Registry_02_06, CK_0206, EP_0206, EV_0206, DeepMerge_0206 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts index 73600641..85c33f31 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-07.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-07 (seed 207) - expensive recursive & mapped types +// pkg-02/types-07 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord207 { - a207: { x: number; y: string; z: boolean }; - b207: { p: string[]; q: Record }; - c207: { nested: { deep: { deeper: { deepest: string } } } }; - d207: number; - e207: string; - f207: boolean; - g207: null; - h207: undefined; - i207: bigint; - j207: symbol; -} - -type PartialBig207 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten207 = T extends Array ? Flatten207 : T; -type Nested207 = number[][][][][][][][][][]; -type Flat207 = Flatten207; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly207 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly207 : T[K]; -}; -type DeepRequired207 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired207 : T[K]; +type DeepMerge_0207 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0207 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR207 = DeepReadonly207>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion207 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha207 = Extract; -type ExcludeZulu207 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA207 { width: number; height: number; depth: number } -interface ShapeB207 { color: string; opacity: number; blend: string } -interface ShapeC207 { x: number; y: number; z: number; w: number } -interface ShapeD207 { label: string; title: string; summary: string } - -type Combined207 = ShapeA207 & ShapeB207 & ShapeC207 & ShapeD207; -type OptionalAll207 = { [K in keyof Combined207]?: Combined207[K] }; -type RequiredAll207 = { [K in keyof Combined207]-?: Combined207[K] }; -type ReadonlyAll207 = { readonly [K in keyof Combined207]: Combined207[K] }; -type NullableAll207 = { [K in keyof Combined207]: Combined207[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString207 = T extends string ? true : false; -type IsNumber207 = T extends number ? true : false; -type TypeName207 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_07 | null; children: Entity_02_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0207: number; y0207: string; z0207: boolean }; +} -type TypeNames207 = { - [K in keyof BigRecord207]: TypeName207; +type Path_0207 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0207}` }[keyof T & string] : never; +type EP_0207 = Path_0207; + +type Val_0207 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0207 } + : T[K] extends object ? { t: 'o'; props: Val_0207 } + : { t: 'u' }; }; +type EV_0207 = Val_0207; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb207 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource207 = "user" | "post" | "comment" | "tag" | "category"; -type Action207 = `${Verb207}_${Resource207}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise207 = T extends Promise ? UnwrapPromise207 : T; -type UnwrapArray207 = T extends (infer U)[] ? UnwrapArray207 : T; -type Head207 = T extends [infer H, ...infer _] ? H : never; -type Tail207 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation207 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation207>] - : never; +interface Registry_02_07 { + entities: Map; + validators: EV_0207; + paths: Set; + merged: DeepMerge_0207; +} -type SmallUnion207 = "a" | "b" | "c" | "d"; -type AllPerms207 = Permutation207; +type CK_0207 = `p02.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig207, - Flat207, - FR207, - BigUnion207, - ExtractAlpha207, - ExcludeZulu207, - OptionalAll207, - RequiredAll207, - ReadonlyAll207, - NullableAll207, - TypeNames207, - Action207, - AllPerms207, -}; +export type { Entity_02_07, Registry_02_07, CK_0207, EP_0207, EV_0207, DeepMerge_0207 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts index 3ee5b4c9..87b41f9f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-08.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-08 (seed 208) - expensive recursive & mapped types +// pkg-02/types-08 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord208 { - a208: { x: number; y: string; z: boolean }; - b208: { p: string[]; q: Record }; - c208: { nested: { deep: { deeper: { deepest: string } } } }; - d208: number; - e208: string; - f208: boolean; - g208: null; - h208: undefined; - i208: bigint; - j208: symbol; -} - -type PartialBig208 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten208 = T extends Array ? Flatten208 : T; -type Nested208 = number[][][][][][][][][][]; -type Flat208 = Flatten208; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly208 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly208 : T[K]; -}; -type DeepRequired208 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired208 : T[K]; +type DeepMerge_0208 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0208 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR208 = DeepReadonly208>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion208 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha208 = Extract; -type ExcludeZulu208 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA208 { width: number; height: number; depth: number } -interface ShapeB208 { color: string; opacity: number; blend: string } -interface ShapeC208 { x: number; y: number; z: number; w: number } -interface ShapeD208 { label: string; title: string; summary: string } - -type Combined208 = ShapeA208 & ShapeB208 & ShapeC208 & ShapeD208; -type OptionalAll208 = { [K in keyof Combined208]?: Combined208[K] }; -type RequiredAll208 = { [K in keyof Combined208]-?: Combined208[K] }; -type ReadonlyAll208 = { readonly [K in keyof Combined208]: Combined208[K] }; -type NullableAll208 = { [K in keyof Combined208]: Combined208[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString208 = T extends string ? true : false; -type IsNumber208 = T extends number ? true : false; -type TypeName208 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_08 | null; children: Entity_02_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0208: number; y0208: string; z0208: boolean }; +} -type TypeNames208 = { - [K in keyof BigRecord208]: TypeName208; +type Path_0208 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0208}` }[keyof T & string] : never; +type EP_0208 = Path_0208; + +type Val_0208 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0208 } + : T[K] extends object ? { t: 'o'; props: Val_0208 } + : { t: 'u' }; }; +type EV_0208 = Val_0208; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb208 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource208 = "user" | "post" | "comment" | "tag" | "category"; -type Action208 = `${Verb208}_${Resource208}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise208 = T extends Promise ? UnwrapPromise208 : T; -type UnwrapArray208 = T extends (infer U)[] ? UnwrapArray208 : T; -type Head208 = T extends [infer H, ...infer _] ? H : never; -type Tail208 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation208 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation208>] - : never; +interface Registry_02_08 { + entities: Map; + validators: EV_0208; + paths: Set; + merged: DeepMerge_0208; +} -type SmallUnion208 = "a" | "b" | "c" | "d"; -type AllPerms208 = Permutation208; +type CK_0208 = `p02.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig208, - Flat208, - FR208, - BigUnion208, - ExtractAlpha208, - ExcludeZulu208, - OptionalAll208, - RequiredAll208, - ReadonlyAll208, - NullableAll208, - TypeNames208, - Action208, - AllPerms208, -}; +export type { Entity_02_08, Registry_02_08, CK_0208, EP_0208, EV_0208, DeepMerge_0208 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts index 647704e1..ab861c71 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-09.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-09 (seed 209) - expensive recursive & mapped types +// pkg-02/types-09 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord209 { - a209: { x: number; y: string; z: boolean }; - b209: { p: string[]; q: Record }; - c209: { nested: { deep: { deeper: { deepest: string } } } }; - d209: number; - e209: string; - f209: boolean; - g209: null; - h209: undefined; - i209: bigint; - j209: symbol; -} - -type PartialBig209 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten209 = T extends Array ? Flatten209 : T; -type Nested209 = number[][][][][][][][][][]; -type Flat209 = Flatten209; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly209 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly209 : T[K]; -}; -type DeepRequired209 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired209 : T[K]; +type DeepMerge_0209 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0209 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR209 = DeepReadonly209>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion209 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha209 = Extract; -type ExcludeZulu209 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA209 { width: number; height: number; depth: number } -interface ShapeB209 { color: string; opacity: number; blend: string } -interface ShapeC209 { x: number; y: number; z: number; w: number } -interface ShapeD209 { label: string; title: string; summary: string } - -type Combined209 = ShapeA209 & ShapeB209 & ShapeC209 & ShapeD209; -type OptionalAll209 = { [K in keyof Combined209]?: Combined209[K] }; -type RequiredAll209 = { [K in keyof Combined209]-?: Combined209[K] }; -type ReadonlyAll209 = { readonly [K in keyof Combined209]: Combined209[K] }; -type NullableAll209 = { [K in keyof Combined209]: Combined209[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString209 = T extends string ? true : false; -type IsNumber209 = T extends number ? true : false; -type TypeName209 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_09 | null; children: Entity_02_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0209: number; y0209: string; z0209: boolean }; +} -type TypeNames209 = { - [K in keyof BigRecord209]: TypeName209; +type Path_0209 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0209}` }[keyof T & string] : never; +type EP_0209 = Path_0209; + +type Val_0209 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0209 } + : T[K] extends object ? { t: 'o'; props: Val_0209 } + : { t: 'u' }; }; +type EV_0209 = Val_0209; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb209 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource209 = "user" | "post" | "comment" | "tag" | "category"; -type Action209 = `${Verb209}_${Resource209}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise209 = T extends Promise ? UnwrapPromise209 : T; -type UnwrapArray209 = T extends (infer U)[] ? UnwrapArray209 : T; -type Head209 = T extends [infer H, ...infer _] ? H : never; -type Tail209 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation209 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation209>] - : never; +interface Registry_02_09 { + entities: Map; + validators: EV_0209; + paths: Set; + merged: DeepMerge_0209; +} -type SmallUnion209 = "a" | "b" | "c" | "d"; -type AllPerms209 = Permutation209; +type CK_0209 = `p02.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig209, - Flat209, - FR209, - BigUnion209, - ExtractAlpha209, - ExcludeZulu209, - OptionalAll209, - RequiredAll209, - ReadonlyAll209, - NullableAll209, - TypeNames209, - Action209, - AllPerms209, -}; +export type { Entity_02_09, Registry_02_09, CK_0209, EP_0209, EV_0209, DeepMerge_0209 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts index 67b02961..e01e6130 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-10.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-10 (seed 210) - expensive recursive & mapped types +// pkg-02/types-10 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord210 { - a210: { x: number; y: string; z: boolean }; - b210: { p: string[]; q: Record }; - c210: { nested: { deep: { deeper: { deepest: string } } } }; - d210: number; - e210: string; - f210: boolean; - g210: null; - h210: undefined; - i210: bigint; - j210: symbol; -} - -type PartialBig210 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten210 = T extends Array ? Flatten210 : T; -type Nested210 = number[][][][][][][][][][]; -type Flat210 = Flatten210; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly210 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly210 : T[K]; -}; -type DeepRequired210 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired210 : T[K]; +type DeepMerge_0210 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0210 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR210 = DeepReadonly210>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion210 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha210 = Extract; -type ExcludeZulu210 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA210 { width: number; height: number; depth: number } -interface ShapeB210 { color: string; opacity: number; blend: string } -interface ShapeC210 { x: number; y: number; z: number; w: number } -interface ShapeD210 { label: string; title: string; summary: string } - -type Combined210 = ShapeA210 & ShapeB210 & ShapeC210 & ShapeD210; -type OptionalAll210 = { [K in keyof Combined210]?: Combined210[K] }; -type RequiredAll210 = { [K in keyof Combined210]-?: Combined210[K] }; -type ReadonlyAll210 = { readonly [K in keyof Combined210]: Combined210[K] }; -type NullableAll210 = { [K in keyof Combined210]: Combined210[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString210 = T extends string ? true : false; -type IsNumber210 = T extends number ? true : false; -type TypeName210 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_10 | null; children: Entity_02_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0210: number; y0210: string; z0210: boolean }; +} -type TypeNames210 = { - [K in keyof BigRecord210]: TypeName210; +type Path_0210 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0210}` }[keyof T & string] : never; +type EP_0210 = Path_0210; + +type Val_0210 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0210 } + : T[K] extends object ? { t: 'o'; props: Val_0210 } + : { t: 'u' }; }; +type EV_0210 = Val_0210; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb210 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource210 = "user" | "post" | "comment" | "tag" | "category"; -type Action210 = `${Verb210}_${Resource210}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise210 = T extends Promise ? UnwrapPromise210 : T; -type UnwrapArray210 = T extends (infer U)[] ? UnwrapArray210 : T; -type Head210 = T extends [infer H, ...infer _] ? H : never; -type Tail210 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation210 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation210>] - : never; +interface Registry_02_10 { + entities: Map; + validators: EV_0210; + paths: Set; + merged: DeepMerge_0210; +} -type SmallUnion210 = "a" | "b" | "c" | "d"; -type AllPerms210 = Permutation210; +type CK_0210 = `p02.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig210, - Flat210, - FR210, - BigUnion210, - ExtractAlpha210, - ExcludeZulu210, - OptionalAll210, - RequiredAll210, - ReadonlyAll210, - NullableAll210, - TypeNames210, - Action210, - AllPerms210, -}; +export type { Entity_02_10, Registry_02_10, CK_0210, EP_0210, EV_0210, DeepMerge_0210 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts index 67bac546..ad94e848 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-11.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-11 (seed 211) - expensive recursive & mapped types +// pkg-02/types-11 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord211 { - a211: { x: number; y: string; z: boolean }; - b211: { p: string[]; q: Record }; - c211: { nested: { deep: { deeper: { deepest: string } } } }; - d211: number; - e211: string; - f211: boolean; - g211: null; - h211: undefined; - i211: bigint; - j211: symbol; -} - -type PartialBig211 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten211 = T extends Array ? Flatten211 : T; -type Nested211 = number[][][][][][][][][][]; -type Flat211 = Flatten211; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly211 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly211 : T[K]; -}; -type DeepRequired211 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired211 : T[K]; +type DeepMerge_0211 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0211 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR211 = DeepReadonly211>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion211 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha211 = Extract; -type ExcludeZulu211 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA211 { width: number; height: number; depth: number } -interface ShapeB211 { color: string; opacity: number; blend: string } -interface ShapeC211 { x: number; y: number; z: number; w: number } -interface ShapeD211 { label: string; title: string; summary: string } - -type Combined211 = ShapeA211 & ShapeB211 & ShapeC211 & ShapeD211; -type OptionalAll211 = { [K in keyof Combined211]?: Combined211[K] }; -type RequiredAll211 = { [K in keyof Combined211]-?: Combined211[K] }; -type ReadonlyAll211 = { readonly [K in keyof Combined211]: Combined211[K] }; -type NullableAll211 = { [K in keyof Combined211]: Combined211[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString211 = T extends string ? true : false; -type IsNumber211 = T extends number ? true : false; -type TypeName211 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_11 | null; children: Entity_02_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0211: number; y0211: string; z0211: boolean }; +} -type TypeNames211 = { - [K in keyof BigRecord211]: TypeName211; +type Path_0211 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0211}` }[keyof T & string] : never; +type EP_0211 = Path_0211; + +type Val_0211 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0211 } + : T[K] extends object ? { t: 'o'; props: Val_0211 } + : { t: 'u' }; }; +type EV_0211 = Val_0211; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb211 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource211 = "user" | "post" | "comment" | "tag" | "category"; -type Action211 = `${Verb211}_${Resource211}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise211 = T extends Promise ? UnwrapPromise211 : T; -type UnwrapArray211 = T extends (infer U)[] ? UnwrapArray211 : T; -type Head211 = T extends [infer H, ...infer _] ? H : never; -type Tail211 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation211 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation211>] - : never; +interface Registry_02_11 { + entities: Map; + validators: EV_0211; + paths: Set; + merged: DeepMerge_0211; +} -type SmallUnion211 = "a" | "b" | "c" | "d"; -type AllPerms211 = Permutation211; +type CK_0211 = `p02.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig211, - Flat211, - FR211, - BigUnion211, - ExtractAlpha211, - ExcludeZulu211, - OptionalAll211, - RequiredAll211, - ReadonlyAll211, - NullableAll211, - TypeNames211, - Action211, - AllPerms211, -}; +export type { Entity_02_11, Registry_02_11, CK_0211, EP_0211, EV_0211, DeepMerge_0211 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts index 6e93c442..d0fb8e97 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-12.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-12 (seed 212) - expensive recursive & mapped types +// pkg-02/types-12 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord212 { - a212: { x: number; y: string; z: boolean }; - b212: { p: string[]; q: Record }; - c212: { nested: { deep: { deeper: { deepest: string } } } }; - d212: number; - e212: string; - f212: boolean; - g212: null; - h212: undefined; - i212: bigint; - j212: symbol; -} - -type PartialBig212 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten212 = T extends Array ? Flatten212 : T; -type Nested212 = number[][][][][][][][][][]; -type Flat212 = Flatten212; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly212 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly212 : T[K]; -}; -type DeepRequired212 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired212 : T[K]; +type DeepMerge_0212 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0212 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR212 = DeepReadonly212>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion212 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha212 = Extract; -type ExcludeZulu212 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA212 { width: number; height: number; depth: number } -interface ShapeB212 { color: string; opacity: number; blend: string } -interface ShapeC212 { x: number; y: number; z: number; w: number } -interface ShapeD212 { label: string; title: string; summary: string } - -type Combined212 = ShapeA212 & ShapeB212 & ShapeC212 & ShapeD212; -type OptionalAll212 = { [K in keyof Combined212]?: Combined212[K] }; -type RequiredAll212 = { [K in keyof Combined212]-?: Combined212[K] }; -type ReadonlyAll212 = { readonly [K in keyof Combined212]: Combined212[K] }; -type NullableAll212 = { [K in keyof Combined212]: Combined212[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString212 = T extends string ? true : false; -type IsNumber212 = T extends number ? true : false; -type TypeName212 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_12 | null; children: Entity_02_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0212: number; y0212: string; z0212: boolean }; +} -type TypeNames212 = { - [K in keyof BigRecord212]: TypeName212; +type Path_0212 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0212}` }[keyof T & string] : never; +type EP_0212 = Path_0212; + +type Val_0212 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0212 } + : T[K] extends object ? { t: 'o'; props: Val_0212 } + : { t: 'u' }; }; +type EV_0212 = Val_0212; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb212 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource212 = "user" | "post" | "comment" | "tag" | "category"; -type Action212 = `${Verb212}_${Resource212}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise212 = T extends Promise ? UnwrapPromise212 : T; -type UnwrapArray212 = T extends (infer U)[] ? UnwrapArray212 : T; -type Head212 = T extends [infer H, ...infer _] ? H : never; -type Tail212 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation212 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation212>] - : never; +interface Registry_02_12 { + entities: Map; + validators: EV_0212; + paths: Set; + merged: DeepMerge_0212; +} -type SmallUnion212 = "a" | "b" | "c" | "d"; -type AllPerms212 = Permutation212; +type CK_0212 = `p02.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig212, - Flat212, - FR212, - BigUnion212, - ExtractAlpha212, - ExcludeZulu212, - OptionalAll212, - RequiredAll212, - ReadonlyAll212, - NullableAll212, - TypeNames212, - Action212, - AllPerms212, -}; +export type { Entity_02_12, Registry_02_12, CK_0212, EP_0212, EV_0212, DeepMerge_0212 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts index 06af3123..28ff0a32 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-13.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-13 (seed 213) - expensive recursive & mapped types +// pkg-02/types-13 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord213 { - a213: { x: number; y: string; z: boolean }; - b213: { p: string[]; q: Record }; - c213: { nested: { deep: { deeper: { deepest: string } } } }; - d213: number; - e213: string; - f213: boolean; - g213: null; - h213: undefined; - i213: bigint; - j213: symbol; -} - -type PartialBig213 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten213 = T extends Array ? Flatten213 : T; -type Nested213 = number[][][][][][][][][][]; -type Flat213 = Flatten213; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly213 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly213 : T[K]; -}; -type DeepRequired213 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired213 : T[K]; +type DeepMerge_0213 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0213 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR213 = DeepReadonly213>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion213 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha213 = Extract; -type ExcludeZulu213 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA213 { width: number; height: number; depth: number } -interface ShapeB213 { color: string; opacity: number; blend: string } -interface ShapeC213 { x: number; y: number; z: number; w: number } -interface ShapeD213 { label: string; title: string; summary: string } - -type Combined213 = ShapeA213 & ShapeB213 & ShapeC213 & ShapeD213; -type OptionalAll213 = { [K in keyof Combined213]?: Combined213[K] }; -type RequiredAll213 = { [K in keyof Combined213]-?: Combined213[K] }; -type ReadonlyAll213 = { readonly [K in keyof Combined213]: Combined213[K] }; -type NullableAll213 = { [K in keyof Combined213]: Combined213[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString213 = T extends string ? true : false; -type IsNumber213 = T extends number ? true : false; -type TypeName213 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_13 | null; children: Entity_02_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0213: number; y0213: string; z0213: boolean }; +} -type TypeNames213 = { - [K in keyof BigRecord213]: TypeName213; +type Path_0213 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0213}` }[keyof T & string] : never; +type EP_0213 = Path_0213; + +type Val_0213 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0213 } + : T[K] extends object ? { t: 'o'; props: Val_0213 } + : { t: 'u' }; }; +type EV_0213 = Val_0213; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb213 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource213 = "user" | "post" | "comment" | "tag" | "category"; -type Action213 = `${Verb213}_${Resource213}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise213 = T extends Promise ? UnwrapPromise213 : T; -type UnwrapArray213 = T extends (infer U)[] ? UnwrapArray213 : T; -type Head213 = T extends [infer H, ...infer _] ? H : never; -type Tail213 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation213 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation213>] - : never; +interface Registry_02_13 { + entities: Map; + validators: EV_0213; + paths: Set; + merged: DeepMerge_0213; +} -type SmallUnion213 = "a" | "b" | "c" | "d"; -type AllPerms213 = Permutation213; +type CK_0213 = `p02.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig213, - Flat213, - FR213, - BigUnion213, - ExtractAlpha213, - ExcludeZulu213, - OptionalAll213, - RequiredAll213, - ReadonlyAll213, - NullableAll213, - TypeNames213, - Action213, - AllPerms213, -}; +export type { Entity_02_13, Registry_02_13, CK_0213, EP_0213, EV_0213, DeepMerge_0213 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts index 71947186..9f3612ec 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-14.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-14 (seed 214) - expensive recursive & mapped types +// pkg-02/types-14 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord214 { - a214: { x: number; y: string; z: boolean }; - b214: { p: string[]; q: Record }; - c214: { nested: { deep: { deeper: { deepest: string } } } }; - d214: number; - e214: string; - f214: boolean; - g214: null; - h214: undefined; - i214: bigint; - j214: symbol; -} - -type PartialBig214 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten214 = T extends Array ? Flatten214 : T; -type Nested214 = number[][][][][][][][][][]; -type Flat214 = Flatten214; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly214 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly214 : T[K]; -}; -type DeepRequired214 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired214 : T[K]; +type DeepMerge_0214 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0214 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR214 = DeepReadonly214>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion214 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha214 = Extract; -type ExcludeZulu214 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA214 { width: number; height: number; depth: number } -interface ShapeB214 { color: string; opacity: number; blend: string } -interface ShapeC214 { x: number; y: number; z: number; w: number } -interface ShapeD214 { label: string; title: string; summary: string } - -type Combined214 = ShapeA214 & ShapeB214 & ShapeC214 & ShapeD214; -type OptionalAll214 = { [K in keyof Combined214]?: Combined214[K] }; -type RequiredAll214 = { [K in keyof Combined214]-?: Combined214[K] }; -type ReadonlyAll214 = { readonly [K in keyof Combined214]: Combined214[K] }; -type NullableAll214 = { [K in keyof Combined214]: Combined214[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString214 = T extends string ? true : false; -type IsNumber214 = T extends number ? true : false; -type TypeName214 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_14 | null; children: Entity_02_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0214: number; y0214: string; z0214: boolean }; +} -type TypeNames214 = { - [K in keyof BigRecord214]: TypeName214; +type Path_0214 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0214}` }[keyof T & string] : never; +type EP_0214 = Path_0214; + +type Val_0214 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0214 } + : T[K] extends object ? { t: 'o'; props: Val_0214 } + : { t: 'u' }; }; +type EV_0214 = Val_0214; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb214 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource214 = "user" | "post" | "comment" | "tag" | "category"; -type Action214 = `${Verb214}_${Resource214}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise214 = T extends Promise ? UnwrapPromise214 : T; -type UnwrapArray214 = T extends (infer U)[] ? UnwrapArray214 : T; -type Head214 = T extends [infer H, ...infer _] ? H : never; -type Tail214 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation214 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation214>] - : never; +interface Registry_02_14 { + entities: Map; + validators: EV_0214; + paths: Set; + merged: DeepMerge_0214; +} -type SmallUnion214 = "a" | "b" | "c" | "d"; -type AllPerms214 = Permutation214; +type CK_0214 = `p02.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig214, - Flat214, - FR214, - BigUnion214, - ExtractAlpha214, - ExcludeZulu214, - OptionalAll214, - RequiredAll214, - ReadonlyAll214, - NullableAll214, - TypeNames214, - Action214, - AllPerms214, -}; +export type { Entity_02_14, Registry_02_14, CK_0214, EP_0214, EV_0214, DeepMerge_0214 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts index a3db7909..32eda937 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-15.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-15 (seed 215) - expensive recursive & mapped types +// pkg-02/types-15 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord215 { - a215: { x: number; y: string; z: boolean }; - b215: { p: string[]; q: Record }; - c215: { nested: { deep: { deeper: { deepest: string } } } }; - d215: number; - e215: string; - f215: boolean; - g215: null; - h215: undefined; - i215: bigint; - j215: symbol; -} - -type PartialBig215 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten215 = T extends Array ? Flatten215 : T; -type Nested215 = number[][][][][][][][][][]; -type Flat215 = Flatten215; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly215 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly215 : T[K]; -}; -type DeepRequired215 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired215 : T[K]; +type DeepMerge_0215 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0215 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR215 = DeepReadonly215>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion215 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha215 = Extract; -type ExcludeZulu215 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA215 { width: number; height: number; depth: number } -interface ShapeB215 { color: string; opacity: number; blend: string } -interface ShapeC215 { x: number; y: number; z: number; w: number } -interface ShapeD215 { label: string; title: string; summary: string } - -type Combined215 = ShapeA215 & ShapeB215 & ShapeC215 & ShapeD215; -type OptionalAll215 = { [K in keyof Combined215]?: Combined215[K] }; -type RequiredAll215 = { [K in keyof Combined215]-?: Combined215[K] }; -type ReadonlyAll215 = { readonly [K in keyof Combined215]: Combined215[K] }; -type NullableAll215 = { [K in keyof Combined215]: Combined215[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString215 = T extends string ? true : false; -type IsNumber215 = T extends number ? true : false; -type TypeName215 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_15 | null; children: Entity_02_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0215: number; y0215: string; z0215: boolean }; +} -type TypeNames215 = { - [K in keyof BigRecord215]: TypeName215; +type Path_0215 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0215}` }[keyof T & string] : never; +type EP_0215 = Path_0215; + +type Val_0215 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0215 } + : T[K] extends object ? { t: 'o'; props: Val_0215 } + : { t: 'u' }; }; +type EV_0215 = Val_0215; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb215 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource215 = "user" | "post" | "comment" | "tag" | "category"; -type Action215 = `${Verb215}_${Resource215}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise215 = T extends Promise ? UnwrapPromise215 : T; -type UnwrapArray215 = T extends (infer U)[] ? UnwrapArray215 : T; -type Head215 = T extends [infer H, ...infer _] ? H : never; -type Tail215 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation215 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation215>] - : never; +interface Registry_02_15 { + entities: Map; + validators: EV_0215; + paths: Set; + merged: DeepMerge_0215; +} -type SmallUnion215 = "a" | "b" | "c" | "d"; -type AllPerms215 = Permutation215; +type CK_0215 = `p02.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig215, - Flat215, - FR215, - BigUnion215, - ExtractAlpha215, - ExcludeZulu215, - OptionalAll215, - RequiredAll215, - ReadonlyAll215, - NullableAll215, - TypeNames215, - Action215, - AllPerms215, -}; +export type { Entity_02_15, Registry_02_15, CK_0215, EP_0215, EV_0215, DeepMerge_0215 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts index 13ceef3a..7e85f13d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-16.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-16 (seed 216) - expensive recursive & mapped types +// pkg-02/types-16 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord216 { - a216: { x: number; y: string; z: boolean }; - b216: { p: string[]; q: Record }; - c216: { nested: { deep: { deeper: { deepest: string } } } }; - d216: number; - e216: string; - f216: boolean; - g216: null; - h216: undefined; - i216: bigint; - j216: symbol; -} - -type PartialBig216 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten216 = T extends Array ? Flatten216 : T; -type Nested216 = number[][][][][][][][][][]; -type Flat216 = Flatten216; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly216 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly216 : T[K]; -}; -type DeepRequired216 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired216 : T[K]; +type DeepMerge_0216 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0216 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR216 = DeepReadonly216>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion216 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha216 = Extract; -type ExcludeZulu216 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA216 { width: number; height: number; depth: number } -interface ShapeB216 { color: string; opacity: number; blend: string } -interface ShapeC216 { x: number; y: number; z: number; w: number } -interface ShapeD216 { label: string; title: string; summary: string } - -type Combined216 = ShapeA216 & ShapeB216 & ShapeC216 & ShapeD216; -type OptionalAll216 = { [K in keyof Combined216]?: Combined216[K] }; -type RequiredAll216 = { [K in keyof Combined216]-?: Combined216[K] }; -type ReadonlyAll216 = { readonly [K in keyof Combined216]: Combined216[K] }; -type NullableAll216 = { [K in keyof Combined216]: Combined216[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString216 = T extends string ? true : false; -type IsNumber216 = T extends number ? true : false; -type TypeName216 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_16 | null; children: Entity_02_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0216: number; y0216: string; z0216: boolean }; +} -type TypeNames216 = { - [K in keyof BigRecord216]: TypeName216; +type Path_0216 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0216}` }[keyof T & string] : never; +type EP_0216 = Path_0216; + +type Val_0216 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0216 } + : T[K] extends object ? { t: 'o'; props: Val_0216 } + : { t: 'u' }; }; +type EV_0216 = Val_0216; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb216 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource216 = "user" | "post" | "comment" | "tag" | "category"; -type Action216 = `${Verb216}_${Resource216}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise216 = T extends Promise ? UnwrapPromise216 : T; -type UnwrapArray216 = T extends (infer U)[] ? UnwrapArray216 : T; -type Head216 = T extends [infer H, ...infer _] ? H : never; -type Tail216 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation216 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation216>] - : never; +interface Registry_02_16 { + entities: Map; + validators: EV_0216; + paths: Set; + merged: DeepMerge_0216; +} -type SmallUnion216 = "a" | "b" | "c" | "d"; -type AllPerms216 = Permutation216; +type CK_0216 = `p02.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig216, - Flat216, - FR216, - BigUnion216, - ExtractAlpha216, - ExcludeZulu216, - OptionalAll216, - RequiredAll216, - ReadonlyAll216, - NullableAll216, - TypeNames216, - Action216, - AllPerms216, -}; +export type { Entity_02_16, Registry_02_16, CK_0216, EP_0216, EV_0216, DeepMerge_0216 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts index fdc1e00a..24fee7c6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-17.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-17 (seed 217) - expensive recursive & mapped types +// pkg-02/types-17 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord217 { - a217: { x: number; y: string; z: boolean }; - b217: { p: string[]; q: Record }; - c217: { nested: { deep: { deeper: { deepest: string } } } }; - d217: number; - e217: string; - f217: boolean; - g217: null; - h217: undefined; - i217: bigint; - j217: symbol; -} - -type PartialBig217 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten217 = T extends Array ? Flatten217 : T; -type Nested217 = number[][][][][][][][][][]; -type Flat217 = Flatten217; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly217 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly217 : T[K]; -}; -type DeepRequired217 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired217 : T[K]; +type DeepMerge_0217 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0217 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR217 = DeepReadonly217>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion217 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha217 = Extract; -type ExcludeZulu217 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA217 { width: number; height: number; depth: number } -interface ShapeB217 { color: string; opacity: number; blend: string } -interface ShapeC217 { x: number; y: number; z: number; w: number } -interface ShapeD217 { label: string; title: string; summary: string } - -type Combined217 = ShapeA217 & ShapeB217 & ShapeC217 & ShapeD217; -type OptionalAll217 = { [K in keyof Combined217]?: Combined217[K] }; -type RequiredAll217 = { [K in keyof Combined217]-?: Combined217[K] }; -type ReadonlyAll217 = { readonly [K in keyof Combined217]: Combined217[K] }; -type NullableAll217 = { [K in keyof Combined217]: Combined217[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString217 = T extends string ? true : false; -type IsNumber217 = T extends number ? true : false; -type TypeName217 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_17 | null; children: Entity_02_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0217: number; y0217: string; z0217: boolean }; +} -type TypeNames217 = { - [K in keyof BigRecord217]: TypeName217; +type Path_0217 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0217}` }[keyof T & string] : never; +type EP_0217 = Path_0217; + +type Val_0217 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0217 } + : T[K] extends object ? { t: 'o'; props: Val_0217 } + : { t: 'u' }; }; +type EV_0217 = Val_0217; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb217 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource217 = "user" | "post" | "comment" | "tag" | "category"; -type Action217 = `${Verb217}_${Resource217}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise217 = T extends Promise ? UnwrapPromise217 : T; -type UnwrapArray217 = T extends (infer U)[] ? UnwrapArray217 : T; -type Head217 = T extends [infer H, ...infer _] ? H : never; -type Tail217 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation217 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation217>] - : never; +interface Registry_02_17 { + entities: Map; + validators: EV_0217; + paths: Set; + merged: DeepMerge_0217; +} -type SmallUnion217 = "a" | "b" | "c" | "d"; -type AllPerms217 = Permutation217; +type CK_0217 = `p02.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig217, - Flat217, - FR217, - BigUnion217, - ExtractAlpha217, - ExcludeZulu217, - OptionalAll217, - RequiredAll217, - ReadonlyAll217, - NullableAll217, - TypeNames217, - Action217, - AllPerms217, -}; +export type { Entity_02_17, Registry_02_17, CK_0217, EP_0217, EV_0217, DeepMerge_0217 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts index 4cca6e46..633c7f4f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-18.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-18 (seed 218) - expensive recursive & mapped types +// pkg-02/types-18 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord218 { - a218: { x: number; y: string; z: boolean }; - b218: { p: string[]; q: Record }; - c218: { nested: { deep: { deeper: { deepest: string } } } }; - d218: number; - e218: string; - f218: boolean; - g218: null; - h218: undefined; - i218: bigint; - j218: symbol; -} - -type PartialBig218 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten218 = T extends Array ? Flatten218 : T; -type Nested218 = number[][][][][][][][][][]; -type Flat218 = Flatten218; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly218 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly218 : T[K]; -}; -type DeepRequired218 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired218 : T[K]; +type DeepMerge_0218 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0218 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR218 = DeepReadonly218>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion218 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha218 = Extract; -type ExcludeZulu218 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA218 { width: number; height: number; depth: number } -interface ShapeB218 { color: string; opacity: number; blend: string } -interface ShapeC218 { x: number; y: number; z: number; w: number } -interface ShapeD218 { label: string; title: string; summary: string } - -type Combined218 = ShapeA218 & ShapeB218 & ShapeC218 & ShapeD218; -type OptionalAll218 = { [K in keyof Combined218]?: Combined218[K] }; -type RequiredAll218 = { [K in keyof Combined218]-?: Combined218[K] }; -type ReadonlyAll218 = { readonly [K in keyof Combined218]: Combined218[K] }; -type NullableAll218 = { [K in keyof Combined218]: Combined218[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString218 = T extends string ? true : false; -type IsNumber218 = T extends number ? true : false; -type TypeName218 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_18 | null; children: Entity_02_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0218: number; y0218: string; z0218: boolean }; +} -type TypeNames218 = { - [K in keyof BigRecord218]: TypeName218; +type Path_0218 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0218}` }[keyof T & string] : never; +type EP_0218 = Path_0218; + +type Val_0218 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0218 } + : T[K] extends object ? { t: 'o'; props: Val_0218 } + : { t: 'u' }; }; +type EV_0218 = Val_0218; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb218 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource218 = "user" | "post" | "comment" | "tag" | "category"; -type Action218 = `${Verb218}_${Resource218}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise218 = T extends Promise ? UnwrapPromise218 : T; -type UnwrapArray218 = T extends (infer U)[] ? UnwrapArray218 : T; -type Head218 = T extends [infer H, ...infer _] ? H : never; -type Tail218 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation218 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation218>] - : never; +interface Registry_02_18 { + entities: Map; + validators: EV_0218; + paths: Set; + merged: DeepMerge_0218; +} -type SmallUnion218 = "a" | "b" | "c" | "d"; -type AllPerms218 = Permutation218; +type CK_0218 = `p02.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig218, - Flat218, - FR218, - BigUnion218, - ExtractAlpha218, - ExcludeZulu218, - OptionalAll218, - RequiredAll218, - ReadonlyAll218, - NullableAll218, - TypeNames218, - Action218, - AllPerms218, -}; +export type { Entity_02_18, Registry_02_18, CK_0218, EP_0218, EV_0218, DeepMerge_0218 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts index cb7377e3..326c09a6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-19.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-19 (seed 219) - expensive recursive & mapped types +// pkg-02/types-19 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord219 { - a219: { x: number; y: string; z: boolean }; - b219: { p: string[]; q: Record }; - c219: { nested: { deep: { deeper: { deepest: string } } } }; - d219: number; - e219: string; - f219: boolean; - g219: null; - h219: undefined; - i219: bigint; - j219: symbol; -} - -type PartialBig219 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten219 = T extends Array ? Flatten219 : T; -type Nested219 = number[][][][][][][][][][]; -type Flat219 = Flatten219; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly219 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly219 : T[K]; -}; -type DeepRequired219 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired219 : T[K]; +type DeepMerge_0219 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0219 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR219 = DeepReadonly219>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion219 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha219 = Extract; -type ExcludeZulu219 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA219 { width: number; height: number; depth: number } -interface ShapeB219 { color: string; opacity: number; blend: string } -interface ShapeC219 { x: number; y: number; z: number; w: number } -interface ShapeD219 { label: string; title: string; summary: string } - -type Combined219 = ShapeA219 & ShapeB219 & ShapeC219 & ShapeD219; -type OptionalAll219 = { [K in keyof Combined219]?: Combined219[K] }; -type RequiredAll219 = { [K in keyof Combined219]-?: Combined219[K] }; -type ReadonlyAll219 = { readonly [K in keyof Combined219]: Combined219[K] }; -type NullableAll219 = { [K in keyof Combined219]: Combined219[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString219 = T extends string ? true : false; -type IsNumber219 = T extends number ? true : false; -type TypeName219 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_19 | null; children: Entity_02_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0219: number; y0219: string; z0219: boolean }; +} -type TypeNames219 = { - [K in keyof BigRecord219]: TypeName219; +type Path_0219 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0219}` }[keyof T & string] : never; +type EP_0219 = Path_0219; + +type Val_0219 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0219 } + : T[K] extends object ? { t: 'o'; props: Val_0219 } + : { t: 'u' }; }; +type EV_0219 = Val_0219; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb219 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource219 = "user" | "post" | "comment" | "tag" | "category"; -type Action219 = `${Verb219}_${Resource219}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise219 = T extends Promise ? UnwrapPromise219 : T; -type UnwrapArray219 = T extends (infer U)[] ? UnwrapArray219 : T; -type Head219 = T extends [infer H, ...infer _] ? H : never; -type Tail219 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation219 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation219>] - : never; +interface Registry_02_19 { + entities: Map; + validators: EV_0219; + paths: Set; + merged: DeepMerge_0219; +} -type SmallUnion219 = "a" | "b" | "c" | "d"; -type AllPerms219 = Permutation219; +type CK_0219 = `p02.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig219, - Flat219, - FR219, - BigUnion219, - ExtractAlpha219, - ExcludeZulu219, - OptionalAll219, - RequiredAll219, - ReadonlyAll219, - NullableAll219, - TypeNames219, - Action219, - AllPerms219, -}; +export type { Entity_02_19, Registry_02_19, CK_0219, EP_0219, EV_0219, DeepMerge_0219 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts index e3babe25..ae2d0d65 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-20.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-20 (seed 220) - expensive recursive & mapped types +// pkg-02/types-20 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord220 { - a220: { x: number; y: string; z: boolean }; - b220: { p: string[]; q: Record }; - c220: { nested: { deep: { deeper: { deepest: string } } } }; - d220: number; - e220: string; - f220: boolean; - g220: null; - h220: undefined; - i220: bigint; - j220: symbol; -} - -type PartialBig220 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten220 = T extends Array ? Flatten220 : T; -type Nested220 = number[][][][][][][][][][]; -type Flat220 = Flatten220; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly220 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly220 : T[K]; -}; -type DeepRequired220 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired220 : T[K]; +type DeepMerge_0220 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0220 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR220 = DeepReadonly220>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion220 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha220 = Extract; -type ExcludeZulu220 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA220 { width: number; height: number; depth: number } -interface ShapeB220 { color: string; opacity: number; blend: string } -interface ShapeC220 { x: number; y: number; z: number; w: number } -interface ShapeD220 { label: string; title: string; summary: string } - -type Combined220 = ShapeA220 & ShapeB220 & ShapeC220 & ShapeD220; -type OptionalAll220 = { [K in keyof Combined220]?: Combined220[K] }; -type RequiredAll220 = { [K in keyof Combined220]-?: Combined220[K] }; -type ReadonlyAll220 = { readonly [K in keyof Combined220]: Combined220[K] }; -type NullableAll220 = { [K in keyof Combined220]: Combined220[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString220 = T extends string ? true : false; -type IsNumber220 = T extends number ? true : false; -type TypeName220 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_20 | null; children: Entity_02_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0220: number; y0220: string; z0220: boolean }; +} -type TypeNames220 = { - [K in keyof BigRecord220]: TypeName220; +type Path_0220 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0220}` }[keyof T & string] : never; +type EP_0220 = Path_0220; + +type Val_0220 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0220 } + : T[K] extends object ? { t: 'o'; props: Val_0220 } + : { t: 'u' }; }; +type EV_0220 = Val_0220; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb220 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource220 = "user" | "post" | "comment" | "tag" | "category"; -type Action220 = `${Verb220}_${Resource220}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise220 = T extends Promise ? UnwrapPromise220 : T; -type UnwrapArray220 = T extends (infer U)[] ? UnwrapArray220 : T; -type Head220 = T extends [infer H, ...infer _] ? H : never; -type Tail220 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation220 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation220>] - : never; +interface Registry_02_20 { + entities: Map; + validators: EV_0220; + paths: Set; + merged: DeepMerge_0220; +} -type SmallUnion220 = "a" | "b" | "c" | "d"; -type AllPerms220 = Permutation220; +type CK_0220 = `p02.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig220, - Flat220, - FR220, - BigUnion220, - ExtractAlpha220, - ExcludeZulu220, - OptionalAll220, - RequiredAll220, - ReadonlyAll220, - NullableAll220, - TypeNames220, - Action220, - AllPerms220, -}; +export type { Entity_02_20, Registry_02_20, CK_0220, EP_0220, EV_0220, DeepMerge_0220 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts index c98707d2..badb3bc9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-21.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-21 (seed 221) - expensive recursive & mapped types +// pkg-02/types-21 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord221 { - a221: { x: number; y: string; z: boolean }; - b221: { p: string[]; q: Record }; - c221: { nested: { deep: { deeper: { deepest: string } } } }; - d221: number; - e221: string; - f221: boolean; - g221: null; - h221: undefined; - i221: bigint; - j221: symbol; -} - -type PartialBig221 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten221 = T extends Array ? Flatten221 : T; -type Nested221 = number[][][][][][][][][][]; -type Flat221 = Flatten221; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly221 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly221 : T[K]; -}; -type DeepRequired221 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired221 : T[K]; +type DeepMerge_0221 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0221 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR221 = DeepReadonly221>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion221 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha221 = Extract; -type ExcludeZulu221 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA221 { width: number; height: number; depth: number } -interface ShapeB221 { color: string; opacity: number; blend: string } -interface ShapeC221 { x: number; y: number; z: number; w: number } -interface ShapeD221 { label: string; title: string; summary: string } - -type Combined221 = ShapeA221 & ShapeB221 & ShapeC221 & ShapeD221; -type OptionalAll221 = { [K in keyof Combined221]?: Combined221[K] }; -type RequiredAll221 = { [K in keyof Combined221]-?: Combined221[K] }; -type ReadonlyAll221 = { readonly [K in keyof Combined221]: Combined221[K] }; -type NullableAll221 = { [K in keyof Combined221]: Combined221[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString221 = T extends string ? true : false; -type IsNumber221 = T extends number ? true : false; -type TypeName221 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_21 | null; children: Entity_02_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0221: number; y0221: string; z0221: boolean }; +} -type TypeNames221 = { - [K in keyof BigRecord221]: TypeName221; +type Path_0221 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0221}` }[keyof T & string] : never; +type EP_0221 = Path_0221; + +type Val_0221 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0221 } + : T[K] extends object ? { t: 'o'; props: Val_0221 } + : { t: 'u' }; }; +type EV_0221 = Val_0221; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb221 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource221 = "user" | "post" | "comment" | "tag" | "category"; -type Action221 = `${Verb221}_${Resource221}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise221 = T extends Promise ? UnwrapPromise221 : T; -type UnwrapArray221 = T extends (infer U)[] ? UnwrapArray221 : T; -type Head221 = T extends [infer H, ...infer _] ? H : never; -type Tail221 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation221 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation221>] - : never; +interface Registry_02_21 { + entities: Map; + validators: EV_0221; + paths: Set; + merged: DeepMerge_0221; +} -type SmallUnion221 = "a" | "b" | "c" | "d"; -type AllPerms221 = Permutation221; +type CK_0221 = `p02.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig221, - Flat221, - FR221, - BigUnion221, - ExtractAlpha221, - ExcludeZulu221, - OptionalAll221, - RequiredAll221, - ReadonlyAll221, - NullableAll221, - TypeNames221, - Action221, - AllPerms221, -}; +export type { Entity_02_21, Registry_02_21, CK_0221, EP_0221, EV_0221, DeepMerge_0221 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts index c34bea6a..3c743b79 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-22.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-22 (seed 222) - expensive recursive & mapped types +// pkg-02/types-22 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord222 { - a222: { x: number; y: string; z: boolean }; - b222: { p: string[]; q: Record }; - c222: { nested: { deep: { deeper: { deepest: string } } } }; - d222: number; - e222: string; - f222: boolean; - g222: null; - h222: undefined; - i222: bigint; - j222: symbol; -} - -type PartialBig222 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten222 = T extends Array ? Flatten222 : T; -type Nested222 = number[][][][][][][][][][]; -type Flat222 = Flatten222; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly222 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly222 : T[K]; -}; -type DeepRequired222 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired222 : T[K]; +type DeepMerge_0222 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0222 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR222 = DeepReadonly222>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion222 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha222 = Extract; -type ExcludeZulu222 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA222 { width: number; height: number; depth: number } -interface ShapeB222 { color: string; opacity: number; blend: string } -interface ShapeC222 { x: number; y: number; z: number; w: number } -interface ShapeD222 { label: string; title: string; summary: string } - -type Combined222 = ShapeA222 & ShapeB222 & ShapeC222 & ShapeD222; -type OptionalAll222 = { [K in keyof Combined222]?: Combined222[K] }; -type RequiredAll222 = { [K in keyof Combined222]-?: Combined222[K] }; -type ReadonlyAll222 = { readonly [K in keyof Combined222]: Combined222[K] }; -type NullableAll222 = { [K in keyof Combined222]: Combined222[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString222 = T extends string ? true : false; -type IsNumber222 = T extends number ? true : false; -type TypeName222 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_22 | null; children: Entity_02_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0222: number; y0222: string; z0222: boolean }; +} -type TypeNames222 = { - [K in keyof BigRecord222]: TypeName222; +type Path_0222 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0222}` }[keyof T & string] : never; +type EP_0222 = Path_0222; + +type Val_0222 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0222 } + : T[K] extends object ? { t: 'o'; props: Val_0222 } + : { t: 'u' }; }; +type EV_0222 = Val_0222; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb222 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource222 = "user" | "post" | "comment" | "tag" | "category"; -type Action222 = `${Verb222}_${Resource222}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise222 = T extends Promise ? UnwrapPromise222 : T; -type UnwrapArray222 = T extends (infer U)[] ? UnwrapArray222 : T; -type Head222 = T extends [infer H, ...infer _] ? H : never; -type Tail222 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation222 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation222>] - : never; +interface Registry_02_22 { + entities: Map; + validators: EV_0222; + paths: Set; + merged: DeepMerge_0222; +} -type SmallUnion222 = "a" | "b" | "c" | "d"; -type AllPerms222 = Permutation222; +type CK_0222 = `p02.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig222, - Flat222, - FR222, - BigUnion222, - ExtractAlpha222, - ExcludeZulu222, - OptionalAll222, - RequiredAll222, - ReadonlyAll222, - NullableAll222, - TypeNames222, - Action222, - AllPerms222, -}; +export type { Entity_02_22, Registry_02_22, CK_0222, EP_0222, EV_0222, DeepMerge_0222 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts index a37c054a..3aa342f9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-23.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-23 (seed 223) - expensive recursive & mapped types +// pkg-02/types-23 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord223 { - a223: { x: number; y: string; z: boolean }; - b223: { p: string[]; q: Record }; - c223: { nested: { deep: { deeper: { deepest: string } } } }; - d223: number; - e223: string; - f223: boolean; - g223: null; - h223: undefined; - i223: bigint; - j223: symbol; -} - -type PartialBig223 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten223 = T extends Array ? Flatten223 : T; -type Nested223 = number[][][][][][][][][][]; -type Flat223 = Flatten223; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly223 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly223 : T[K]; -}; -type DeepRequired223 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired223 : T[K]; +type DeepMerge_0223 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0223 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR223 = DeepReadonly223>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion223 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha223 = Extract; -type ExcludeZulu223 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA223 { width: number; height: number; depth: number } -interface ShapeB223 { color: string; opacity: number; blend: string } -interface ShapeC223 { x: number; y: number; z: number; w: number } -interface ShapeD223 { label: string; title: string; summary: string } - -type Combined223 = ShapeA223 & ShapeB223 & ShapeC223 & ShapeD223; -type OptionalAll223 = { [K in keyof Combined223]?: Combined223[K] }; -type RequiredAll223 = { [K in keyof Combined223]-?: Combined223[K] }; -type ReadonlyAll223 = { readonly [K in keyof Combined223]: Combined223[K] }; -type NullableAll223 = { [K in keyof Combined223]: Combined223[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString223 = T extends string ? true : false; -type IsNumber223 = T extends number ? true : false; -type TypeName223 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_23 | null; children: Entity_02_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0223: number; y0223: string; z0223: boolean }; +} -type TypeNames223 = { - [K in keyof BigRecord223]: TypeName223; +type Path_0223 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0223}` }[keyof T & string] : never; +type EP_0223 = Path_0223; + +type Val_0223 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0223 } + : T[K] extends object ? { t: 'o'; props: Val_0223 } + : { t: 'u' }; }; +type EV_0223 = Val_0223; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb223 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource223 = "user" | "post" | "comment" | "tag" | "category"; -type Action223 = `${Verb223}_${Resource223}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise223 = T extends Promise ? UnwrapPromise223 : T; -type UnwrapArray223 = T extends (infer U)[] ? UnwrapArray223 : T; -type Head223 = T extends [infer H, ...infer _] ? H : never; -type Tail223 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation223 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation223>] - : never; +interface Registry_02_23 { + entities: Map; + validators: EV_0223; + paths: Set; + merged: DeepMerge_0223; +} -type SmallUnion223 = "a" | "b" | "c" | "d"; -type AllPerms223 = Permutation223; +type CK_0223 = `p02.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig223, - Flat223, - FR223, - BigUnion223, - ExtractAlpha223, - ExcludeZulu223, - OptionalAll223, - RequiredAll223, - ReadonlyAll223, - NullableAll223, - TypeNames223, - Action223, - AllPerms223, -}; +export type { Entity_02_23, Registry_02_23, CK_0223, EP_0223, EV_0223, DeepMerge_0223 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts index e029ffbd..7dbb212a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-24.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-24 (seed 224) - expensive recursive & mapped types +// pkg-02/types-24 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord224 { - a224: { x: number; y: string; z: boolean }; - b224: { p: string[]; q: Record }; - c224: { nested: { deep: { deeper: { deepest: string } } } }; - d224: number; - e224: string; - f224: boolean; - g224: null; - h224: undefined; - i224: bigint; - j224: symbol; -} - -type PartialBig224 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten224 = T extends Array ? Flatten224 : T; -type Nested224 = number[][][][][][][][][][]; -type Flat224 = Flatten224; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly224 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly224 : T[K]; -}; -type DeepRequired224 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired224 : T[K]; +type DeepMerge_0224 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0224 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR224 = DeepReadonly224>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion224 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha224 = Extract; -type ExcludeZulu224 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA224 { width: number; height: number; depth: number } -interface ShapeB224 { color: string; opacity: number; blend: string } -interface ShapeC224 { x: number; y: number; z: number; w: number } -interface ShapeD224 { label: string; title: string; summary: string } - -type Combined224 = ShapeA224 & ShapeB224 & ShapeC224 & ShapeD224; -type OptionalAll224 = { [K in keyof Combined224]?: Combined224[K] }; -type RequiredAll224 = { [K in keyof Combined224]-?: Combined224[K] }; -type ReadonlyAll224 = { readonly [K in keyof Combined224]: Combined224[K] }; -type NullableAll224 = { [K in keyof Combined224]: Combined224[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString224 = T extends string ? true : false; -type IsNumber224 = T extends number ? true : false; -type TypeName224 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_24 | null; children: Entity_02_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0224: number; y0224: string; z0224: boolean }; +} -type TypeNames224 = { - [K in keyof BigRecord224]: TypeName224; +type Path_0224 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0224}` }[keyof T & string] : never; +type EP_0224 = Path_0224; + +type Val_0224 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0224 } + : T[K] extends object ? { t: 'o'; props: Val_0224 } + : { t: 'u' }; }; +type EV_0224 = Val_0224; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb224 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource224 = "user" | "post" | "comment" | "tag" | "category"; -type Action224 = `${Verb224}_${Resource224}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise224 = T extends Promise ? UnwrapPromise224 : T; -type UnwrapArray224 = T extends (infer U)[] ? UnwrapArray224 : T; -type Head224 = T extends [infer H, ...infer _] ? H : never; -type Tail224 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation224 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation224>] - : never; +interface Registry_02_24 { + entities: Map; + validators: EV_0224; + paths: Set; + merged: DeepMerge_0224; +} -type SmallUnion224 = "a" | "b" | "c" | "d"; -type AllPerms224 = Permutation224; +type CK_0224 = `p02.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig224, - Flat224, - FR224, - BigUnion224, - ExtractAlpha224, - ExcludeZulu224, - OptionalAll224, - RequiredAll224, - ReadonlyAll224, - NullableAll224, - TypeNames224, - Action224, - AllPerms224, -}; +export type { Entity_02_24, Registry_02_24, CK_0224, EP_0224, EV_0224, DeepMerge_0224 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts index 90a47d2c..03e1b290 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-25.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-25 (seed 225) - expensive recursive & mapped types +// pkg-02/types-25 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord225 { - a225: { x: number; y: string; z: boolean }; - b225: { p: string[]; q: Record }; - c225: { nested: { deep: { deeper: { deepest: string } } } }; - d225: number; - e225: string; - f225: boolean; - g225: null; - h225: undefined; - i225: bigint; - j225: symbol; -} - -type PartialBig225 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten225 = T extends Array ? Flatten225 : T; -type Nested225 = number[][][][][][][][][][]; -type Flat225 = Flatten225; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly225 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly225 : T[K]; -}; -type DeepRequired225 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired225 : T[K]; +type DeepMerge_0225 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0225 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR225 = DeepReadonly225>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion225 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha225 = Extract; -type ExcludeZulu225 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA225 { width: number; height: number; depth: number } -interface ShapeB225 { color: string; opacity: number; blend: string } -interface ShapeC225 { x: number; y: number; z: number; w: number } -interface ShapeD225 { label: string; title: string; summary: string } - -type Combined225 = ShapeA225 & ShapeB225 & ShapeC225 & ShapeD225; -type OptionalAll225 = { [K in keyof Combined225]?: Combined225[K] }; -type RequiredAll225 = { [K in keyof Combined225]-?: Combined225[K] }; -type ReadonlyAll225 = { readonly [K in keyof Combined225]: Combined225[K] }; -type NullableAll225 = { [K in keyof Combined225]: Combined225[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString225 = T extends string ? true : false; -type IsNumber225 = T extends number ? true : false; -type TypeName225 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_25 | null; children: Entity_02_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0225: number; y0225: string; z0225: boolean }; +} -type TypeNames225 = { - [K in keyof BigRecord225]: TypeName225; +type Path_0225 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0225}` }[keyof T & string] : never; +type EP_0225 = Path_0225; + +type Val_0225 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0225 } + : T[K] extends object ? { t: 'o'; props: Val_0225 } + : { t: 'u' }; }; +type EV_0225 = Val_0225; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb225 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource225 = "user" | "post" | "comment" | "tag" | "category"; -type Action225 = `${Verb225}_${Resource225}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise225 = T extends Promise ? UnwrapPromise225 : T; -type UnwrapArray225 = T extends (infer U)[] ? UnwrapArray225 : T; -type Head225 = T extends [infer H, ...infer _] ? H : never; -type Tail225 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation225 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation225>] - : never; +interface Registry_02_25 { + entities: Map; + validators: EV_0225; + paths: Set; + merged: DeepMerge_0225; +} -type SmallUnion225 = "a" | "b" | "c" | "d"; -type AllPerms225 = Permutation225; +type CK_0225 = `p02.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig225, - Flat225, - FR225, - BigUnion225, - ExtractAlpha225, - ExcludeZulu225, - OptionalAll225, - RequiredAll225, - ReadonlyAll225, - NullableAll225, - TypeNames225, - Action225, - AllPerms225, -}; +export type { Entity_02_25, Registry_02_25, CK_0225, EP_0225, EV_0225, DeepMerge_0225 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts index 294ae423..b8fcdc82 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-26.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-26 (seed 226) - expensive recursive & mapped types +// pkg-02/types-26 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord226 { - a226: { x: number; y: string; z: boolean }; - b226: { p: string[]; q: Record }; - c226: { nested: { deep: { deeper: { deepest: string } } } }; - d226: number; - e226: string; - f226: boolean; - g226: null; - h226: undefined; - i226: bigint; - j226: symbol; -} - -type PartialBig226 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten226 = T extends Array ? Flatten226 : T; -type Nested226 = number[][][][][][][][][][]; -type Flat226 = Flatten226; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly226 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly226 : T[K]; -}; -type DeepRequired226 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired226 : T[K]; +type DeepMerge_0226 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0226 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR226 = DeepReadonly226>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion226 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha226 = Extract; -type ExcludeZulu226 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA226 { width: number; height: number; depth: number } -interface ShapeB226 { color: string; opacity: number; blend: string } -interface ShapeC226 { x: number; y: number; z: number; w: number } -interface ShapeD226 { label: string; title: string; summary: string } - -type Combined226 = ShapeA226 & ShapeB226 & ShapeC226 & ShapeD226; -type OptionalAll226 = { [K in keyof Combined226]?: Combined226[K] }; -type RequiredAll226 = { [K in keyof Combined226]-?: Combined226[K] }; -type ReadonlyAll226 = { readonly [K in keyof Combined226]: Combined226[K] }; -type NullableAll226 = { [K in keyof Combined226]: Combined226[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString226 = T extends string ? true : false; -type IsNumber226 = T extends number ? true : false; -type TypeName226 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_26 | null; children: Entity_02_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0226: number; y0226: string; z0226: boolean }; +} -type TypeNames226 = { - [K in keyof BigRecord226]: TypeName226; +type Path_0226 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0226}` }[keyof T & string] : never; +type EP_0226 = Path_0226; + +type Val_0226 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0226 } + : T[K] extends object ? { t: 'o'; props: Val_0226 } + : { t: 'u' }; }; +type EV_0226 = Val_0226; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb226 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource226 = "user" | "post" | "comment" | "tag" | "category"; -type Action226 = `${Verb226}_${Resource226}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise226 = T extends Promise ? UnwrapPromise226 : T; -type UnwrapArray226 = T extends (infer U)[] ? UnwrapArray226 : T; -type Head226 = T extends [infer H, ...infer _] ? H : never; -type Tail226 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation226 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation226>] - : never; +interface Registry_02_26 { + entities: Map; + validators: EV_0226; + paths: Set; + merged: DeepMerge_0226; +} -type SmallUnion226 = "a" | "b" | "c" | "d"; -type AllPerms226 = Permutation226; +type CK_0226 = `p02.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig226, - Flat226, - FR226, - BigUnion226, - ExtractAlpha226, - ExcludeZulu226, - OptionalAll226, - RequiredAll226, - ReadonlyAll226, - NullableAll226, - TypeNames226, - Action226, - AllPerms226, -}; +export type { Entity_02_26, Registry_02_26, CK_0226, EP_0226, EV_0226, DeepMerge_0226 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts index be2870aa..f590cf2a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-27.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-27 (seed 227) - expensive recursive & mapped types +// pkg-02/types-27 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord227 { - a227: { x: number; y: string; z: boolean }; - b227: { p: string[]; q: Record }; - c227: { nested: { deep: { deeper: { deepest: string } } } }; - d227: number; - e227: string; - f227: boolean; - g227: null; - h227: undefined; - i227: bigint; - j227: symbol; -} - -type PartialBig227 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten227 = T extends Array ? Flatten227 : T; -type Nested227 = number[][][][][][][][][][]; -type Flat227 = Flatten227; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly227 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly227 : T[K]; -}; -type DeepRequired227 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired227 : T[K]; +type DeepMerge_0227 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0227 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR227 = DeepReadonly227>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion227 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha227 = Extract; -type ExcludeZulu227 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA227 { width: number; height: number; depth: number } -interface ShapeB227 { color: string; opacity: number; blend: string } -interface ShapeC227 { x: number; y: number; z: number; w: number } -interface ShapeD227 { label: string; title: string; summary: string } - -type Combined227 = ShapeA227 & ShapeB227 & ShapeC227 & ShapeD227; -type OptionalAll227 = { [K in keyof Combined227]?: Combined227[K] }; -type RequiredAll227 = { [K in keyof Combined227]-?: Combined227[K] }; -type ReadonlyAll227 = { readonly [K in keyof Combined227]: Combined227[K] }; -type NullableAll227 = { [K in keyof Combined227]: Combined227[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString227 = T extends string ? true : false; -type IsNumber227 = T extends number ? true : false; -type TypeName227 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_27 | null; children: Entity_02_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0227: number; y0227: string; z0227: boolean }; +} -type TypeNames227 = { - [K in keyof BigRecord227]: TypeName227; +type Path_0227 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0227}` }[keyof T & string] : never; +type EP_0227 = Path_0227; + +type Val_0227 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0227 } + : T[K] extends object ? { t: 'o'; props: Val_0227 } + : { t: 'u' }; }; +type EV_0227 = Val_0227; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb227 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource227 = "user" | "post" | "comment" | "tag" | "category"; -type Action227 = `${Verb227}_${Resource227}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise227 = T extends Promise ? UnwrapPromise227 : T; -type UnwrapArray227 = T extends (infer U)[] ? UnwrapArray227 : T; -type Head227 = T extends [infer H, ...infer _] ? H : never; -type Tail227 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation227 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation227>] - : never; +interface Registry_02_27 { + entities: Map; + validators: EV_0227; + paths: Set; + merged: DeepMerge_0227; +} -type SmallUnion227 = "a" | "b" | "c" | "d"; -type AllPerms227 = Permutation227; +type CK_0227 = `p02.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig227, - Flat227, - FR227, - BigUnion227, - ExtractAlpha227, - ExcludeZulu227, - OptionalAll227, - RequiredAll227, - ReadonlyAll227, - NullableAll227, - TypeNames227, - Action227, - AllPerms227, -}; +export type { Entity_02_27, Registry_02_27, CK_0227, EP_0227, EV_0227, DeepMerge_0227 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts index 8a80955b..b5a68850 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-28.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-28 (seed 228) - expensive recursive & mapped types +// pkg-02/types-28 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord228 { - a228: { x: number; y: string; z: boolean }; - b228: { p: string[]; q: Record }; - c228: { nested: { deep: { deeper: { deepest: string } } } }; - d228: number; - e228: string; - f228: boolean; - g228: null; - h228: undefined; - i228: bigint; - j228: symbol; -} - -type PartialBig228 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten228 = T extends Array ? Flatten228 : T; -type Nested228 = number[][][][][][][][][][]; -type Flat228 = Flatten228; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly228 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly228 : T[K]; -}; -type DeepRequired228 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired228 : T[K]; +type DeepMerge_0228 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0228 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR228 = DeepReadonly228>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion228 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha228 = Extract; -type ExcludeZulu228 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA228 { width: number; height: number; depth: number } -interface ShapeB228 { color: string; opacity: number; blend: string } -interface ShapeC228 { x: number; y: number; z: number; w: number } -interface ShapeD228 { label: string; title: string; summary: string } - -type Combined228 = ShapeA228 & ShapeB228 & ShapeC228 & ShapeD228; -type OptionalAll228 = { [K in keyof Combined228]?: Combined228[K] }; -type RequiredAll228 = { [K in keyof Combined228]-?: Combined228[K] }; -type ReadonlyAll228 = { readonly [K in keyof Combined228]: Combined228[K] }; -type NullableAll228 = { [K in keyof Combined228]: Combined228[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString228 = T extends string ? true : false; -type IsNumber228 = T extends number ? true : false; -type TypeName228 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_28 | null; children: Entity_02_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0228: number; y0228: string; z0228: boolean }; +} -type TypeNames228 = { - [K in keyof BigRecord228]: TypeName228; +type Path_0228 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0228}` }[keyof T & string] : never; +type EP_0228 = Path_0228; + +type Val_0228 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0228 } + : T[K] extends object ? { t: 'o'; props: Val_0228 } + : { t: 'u' }; }; +type EV_0228 = Val_0228; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb228 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource228 = "user" | "post" | "comment" | "tag" | "category"; -type Action228 = `${Verb228}_${Resource228}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise228 = T extends Promise ? UnwrapPromise228 : T; -type UnwrapArray228 = T extends (infer U)[] ? UnwrapArray228 : T; -type Head228 = T extends [infer H, ...infer _] ? H : never; -type Tail228 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation228 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation228>] - : never; +interface Registry_02_28 { + entities: Map; + validators: EV_0228; + paths: Set; + merged: DeepMerge_0228; +} -type SmallUnion228 = "a" | "b" | "c" | "d"; -type AllPerms228 = Permutation228; +type CK_0228 = `p02.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig228, - Flat228, - FR228, - BigUnion228, - ExtractAlpha228, - ExcludeZulu228, - OptionalAll228, - RequiredAll228, - ReadonlyAll228, - NullableAll228, - TypeNames228, - Action228, - AllPerms228, -}; +export type { Entity_02_28, Registry_02_28, CK_0228, EP_0228, EV_0228, DeepMerge_0228 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts index fe0f4203..4a789836 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-29.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-29 (seed 229) - expensive recursive & mapped types +// pkg-02/types-29 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord229 { - a229: { x: number; y: string; z: boolean }; - b229: { p: string[]; q: Record }; - c229: { nested: { deep: { deeper: { deepest: string } } } }; - d229: number; - e229: string; - f229: boolean; - g229: null; - h229: undefined; - i229: bigint; - j229: symbol; -} - -type PartialBig229 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten229 = T extends Array ? Flatten229 : T; -type Nested229 = number[][][][][][][][][][]; -type Flat229 = Flatten229; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly229 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly229 : T[K]; -}; -type DeepRequired229 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired229 : T[K]; +type DeepMerge_0229 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0229 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR229 = DeepReadonly229>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion229 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha229 = Extract; -type ExcludeZulu229 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA229 { width: number; height: number; depth: number } -interface ShapeB229 { color: string; opacity: number; blend: string } -interface ShapeC229 { x: number; y: number; z: number; w: number } -interface ShapeD229 { label: string; title: string; summary: string } - -type Combined229 = ShapeA229 & ShapeB229 & ShapeC229 & ShapeD229; -type OptionalAll229 = { [K in keyof Combined229]?: Combined229[K] }; -type RequiredAll229 = { [K in keyof Combined229]-?: Combined229[K] }; -type ReadonlyAll229 = { readonly [K in keyof Combined229]: Combined229[K] }; -type NullableAll229 = { [K in keyof Combined229]: Combined229[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString229 = T extends string ? true : false; -type IsNumber229 = T extends number ? true : false; -type TypeName229 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_29 | null; children: Entity_02_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0229: number; y0229: string; z0229: boolean }; +} -type TypeNames229 = { - [K in keyof BigRecord229]: TypeName229; +type Path_0229 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0229}` }[keyof T & string] : never; +type EP_0229 = Path_0229; + +type Val_0229 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0229 } + : T[K] extends object ? { t: 'o'; props: Val_0229 } + : { t: 'u' }; }; +type EV_0229 = Val_0229; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb229 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource229 = "user" | "post" | "comment" | "tag" | "category"; -type Action229 = `${Verb229}_${Resource229}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise229 = T extends Promise ? UnwrapPromise229 : T; -type UnwrapArray229 = T extends (infer U)[] ? UnwrapArray229 : T; -type Head229 = T extends [infer H, ...infer _] ? H : never; -type Tail229 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation229 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation229>] - : never; +interface Registry_02_29 { + entities: Map; + validators: EV_0229; + paths: Set; + merged: DeepMerge_0229; +} -type SmallUnion229 = "a" | "b" | "c" | "d"; -type AllPerms229 = Permutation229; +type CK_0229 = `p02.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig229, - Flat229, - FR229, - BigUnion229, - ExtractAlpha229, - ExcludeZulu229, - OptionalAll229, - RequiredAll229, - ReadonlyAll229, - NullableAll229, - TypeNames229, - Action229, - AllPerms229, -}; +export type { Entity_02_29, Registry_02_29, CK_0229, EP_0229, EV_0229, DeepMerge_0229 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts index 15bf5470..a35fde8a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-30.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-30 (seed 230) - expensive recursive & mapped types +// pkg-02/types-30 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord230 { - a230: { x: number; y: string; z: boolean }; - b230: { p: string[]; q: Record }; - c230: { nested: { deep: { deeper: { deepest: string } } } }; - d230: number; - e230: string; - f230: boolean; - g230: null; - h230: undefined; - i230: bigint; - j230: symbol; -} - -type PartialBig230 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten230 = T extends Array ? Flatten230 : T; -type Nested230 = number[][][][][][][][][][]; -type Flat230 = Flatten230; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly230 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly230 : T[K]; -}; -type DeepRequired230 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired230 : T[K]; +type DeepMerge_0230 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0230 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR230 = DeepReadonly230>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion230 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha230 = Extract; -type ExcludeZulu230 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA230 { width: number; height: number; depth: number } -interface ShapeB230 { color: string; opacity: number; blend: string } -interface ShapeC230 { x: number; y: number; z: number; w: number } -interface ShapeD230 { label: string; title: string; summary: string } - -type Combined230 = ShapeA230 & ShapeB230 & ShapeC230 & ShapeD230; -type OptionalAll230 = { [K in keyof Combined230]?: Combined230[K] }; -type RequiredAll230 = { [K in keyof Combined230]-?: Combined230[K] }; -type ReadonlyAll230 = { readonly [K in keyof Combined230]: Combined230[K] }; -type NullableAll230 = { [K in keyof Combined230]: Combined230[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString230 = T extends string ? true : false; -type IsNumber230 = T extends number ? true : false; -type TypeName230 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_30 | null; children: Entity_02_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0230: number; y0230: string; z0230: boolean }; +} -type TypeNames230 = { - [K in keyof BigRecord230]: TypeName230; +type Path_0230 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0230}` }[keyof T & string] : never; +type EP_0230 = Path_0230; + +type Val_0230 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0230 } + : T[K] extends object ? { t: 'o'; props: Val_0230 } + : { t: 'u' }; }; +type EV_0230 = Val_0230; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb230 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource230 = "user" | "post" | "comment" | "tag" | "category"; -type Action230 = `${Verb230}_${Resource230}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise230 = T extends Promise ? UnwrapPromise230 : T; -type UnwrapArray230 = T extends (infer U)[] ? UnwrapArray230 : T; -type Head230 = T extends [infer H, ...infer _] ? H : never; -type Tail230 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation230 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation230>] - : never; +interface Registry_02_30 { + entities: Map; + validators: EV_0230; + paths: Set; + merged: DeepMerge_0230; +} -type SmallUnion230 = "a" | "b" | "c" | "d"; -type AllPerms230 = Permutation230; +type CK_0230 = `p02.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig230, - Flat230, - FR230, - BigUnion230, - ExtractAlpha230, - ExcludeZulu230, - OptionalAll230, - RequiredAll230, - ReadonlyAll230, - NullableAll230, - TypeNames230, - Action230, - AllPerms230, -}; +export type { Entity_02_30, Registry_02_30, CK_0230, EP_0230, EV_0230, DeepMerge_0230 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts index 3064f603..a4c082bc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-31.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-31 (seed 231) - expensive recursive & mapped types +// pkg-02/types-31 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord231 { - a231: { x: number; y: string; z: boolean }; - b231: { p: string[]; q: Record }; - c231: { nested: { deep: { deeper: { deepest: string } } } }; - d231: number; - e231: string; - f231: boolean; - g231: null; - h231: undefined; - i231: bigint; - j231: symbol; -} - -type PartialBig231 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten231 = T extends Array ? Flatten231 : T; -type Nested231 = number[][][][][][][][][][]; -type Flat231 = Flatten231; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly231 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly231 : T[K]; -}; -type DeepRequired231 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired231 : T[K]; +type DeepMerge_0231 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0231 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR231 = DeepReadonly231>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion231 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha231 = Extract; -type ExcludeZulu231 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA231 { width: number; height: number; depth: number } -interface ShapeB231 { color: string; opacity: number; blend: string } -interface ShapeC231 { x: number; y: number; z: number; w: number } -interface ShapeD231 { label: string; title: string; summary: string } - -type Combined231 = ShapeA231 & ShapeB231 & ShapeC231 & ShapeD231; -type OptionalAll231 = { [K in keyof Combined231]?: Combined231[K] }; -type RequiredAll231 = { [K in keyof Combined231]-?: Combined231[K] }; -type ReadonlyAll231 = { readonly [K in keyof Combined231]: Combined231[K] }; -type NullableAll231 = { [K in keyof Combined231]: Combined231[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString231 = T extends string ? true : false; -type IsNumber231 = T extends number ? true : false; -type TypeName231 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_31 | null; children: Entity_02_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0231: number; y0231: string; z0231: boolean }; +} -type TypeNames231 = { - [K in keyof BigRecord231]: TypeName231; +type Path_0231 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0231}` }[keyof T & string] : never; +type EP_0231 = Path_0231; + +type Val_0231 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0231 } + : T[K] extends object ? { t: 'o'; props: Val_0231 } + : { t: 'u' }; }; +type EV_0231 = Val_0231; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb231 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource231 = "user" | "post" | "comment" | "tag" | "category"; -type Action231 = `${Verb231}_${Resource231}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise231 = T extends Promise ? UnwrapPromise231 : T; -type UnwrapArray231 = T extends (infer U)[] ? UnwrapArray231 : T; -type Head231 = T extends [infer H, ...infer _] ? H : never; -type Tail231 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation231 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation231>] - : never; +interface Registry_02_31 { + entities: Map; + validators: EV_0231; + paths: Set; + merged: DeepMerge_0231; +} -type SmallUnion231 = "a" | "b" | "c" | "d"; -type AllPerms231 = Permutation231; +type CK_0231 = `p02.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig231, - Flat231, - FR231, - BigUnion231, - ExtractAlpha231, - ExcludeZulu231, - OptionalAll231, - RequiredAll231, - ReadonlyAll231, - NullableAll231, - TypeNames231, - Action231, - AllPerms231, -}; +export type { Entity_02_31, Registry_02_31, CK_0231, EP_0231, EV_0231, DeepMerge_0231 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts index 2700fd4b..f54e69ac 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-32.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-32 (seed 232) - expensive recursive & mapped types +// pkg-02/types-32 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord232 { - a232: { x: number; y: string; z: boolean }; - b232: { p: string[]; q: Record }; - c232: { nested: { deep: { deeper: { deepest: string } } } }; - d232: number; - e232: string; - f232: boolean; - g232: null; - h232: undefined; - i232: bigint; - j232: symbol; -} - -type PartialBig232 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten232 = T extends Array ? Flatten232 : T; -type Nested232 = number[][][][][][][][][][]; -type Flat232 = Flatten232; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly232 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly232 : T[K]; -}; -type DeepRequired232 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired232 : T[K]; +type DeepMerge_0232 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0232 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR232 = DeepReadonly232>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion232 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha232 = Extract; -type ExcludeZulu232 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA232 { width: number; height: number; depth: number } -interface ShapeB232 { color: string; opacity: number; blend: string } -interface ShapeC232 { x: number; y: number; z: number; w: number } -interface ShapeD232 { label: string; title: string; summary: string } - -type Combined232 = ShapeA232 & ShapeB232 & ShapeC232 & ShapeD232; -type OptionalAll232 = { [K in keyof Combined232]?: Combined232[K] }; -type RequiredAll232 = { [K in keyof Combined232]-?: Combined232[K] }; -type ReadonlyAll232 = { readonly [K in keyof Combined232]: Combined232[K] }; -type NullableAll232 = { [K in keyof Combined232]: Combined232[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString232 = T extends string ? true : false; -type IsNumber232 = T extends number ? true : false; -type TypeName232 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_32 | null; children: Entity_02_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0232: number; y0232: string; z0232: boolean }; +} -type TypeNames232 = { - [K in keyof BigRecord232]: TypeName232; +type Path_0232 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0232}` }[keyof T & string] : never; +type EP_0232 = Path_0232; + +type Val_0232 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0232 } + : T[K] extends object ? { t: 'o'; props: Val_0232 } + : { t: 'u' }; }; +type EV_0232 = Val_0232; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb232 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource232 = "user" | "post" | "comment" | "tag" | "category"; -type Action232 = `${Verb232}_${Resource232}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise232 = T extends Promise ? UnwrapPromise232 : T; -type UnwrapArray232 = T extends (infer U)[] ? UnwrapArray232 : T; -type Head232 = T extends [infer H, ...infer _] ? H : never; -type Tail232 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation232 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation232>] - : never; +interface Registry_02_32 { + entities: Map; + validators: EV_0232; + paths: Set; + merged: DeepMerge_0232; +} -type SmallUnion232 = "a" | "b" | "c" | "d"; -type AllPerms232 = Permutation232; +type CK_0232 = `p02.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig232, - Flat232, - FR232, - BigUnion232, - ExtractAlpha232, - ExcludeZulu232, - OptionalAll232, - RequiredAll232, - ReadonlyAll232, - NullableAll232, - TypeNames232, - Action232, - AllPerms232, -}; +export type { Entity_02_32, Registry_02_32, CK_0232, EP_0232, EV_0232, DeepMerge_0232 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts index bf1cf79d..2735e71a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-33.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-33 (seed 233) - expensive recursive & mapped types +// pkg-02/types-33 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord233 { - a233: { x: number; y: string; z: boolean }; - b233: { p: string[]; q: Record }; - c233: { nested: { deep: { deeper: { deepest: string } } } }; - d233: number; - e233: string; - f233: boolean; - g233: null; - h233: undefined; - i233: bigint; - j233: symbol; -} - -type PartialBig233 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten233 = T extends Array ? Flatten233 : T; -type Nested233 = number[][][][][][][][][][]; -type Flat233 = Flatten233; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly233 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly233 : T[K]; -}; -type DeepRequired233 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired233 : T[K]; +type DeepMerge_0233 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0233 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR233 = DeepReadonly233>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion233 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha233 = Extract; -type ExcludeZulu233 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA233 { width: number; height: number; depth: number } -interface ShapeB233 { color: string; opacity: number; blend: string } -interface ShapeC233 { x: number; y: number; z: number; w: number } -interface ShapeD233 { label: string; title: string; summary: string } - -type Combined233 = ShapeA233 & ShapeB233 & ShapeC233 & ShapeD233; -type OptionalAll233 = { [K in keyof Combined233]?: Combined233[K] }; -type RequiredAll233 = { [K in keyof Combined233]-?: Combined233[K] }; -type ReadonlyAll233 = { readonly [K in keyof Combined233]: Combined233[K] }; -type NullableAll233 = { [K in keyof Combined233]: Combined233[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString233 = T extends string ? true : false; -type IsNumber233 = T extends number ? true : false; -type TypeName233 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_33 | null; children: Entity_02_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0233: number; y0233: string; z0233: boolean }; +} -type TypeNames233 = { - [K in keyof BigRecord233]: TypeName233; +type Path_0233 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0233}` }[keyof T & string] : never; +type EP_0233 = Path_0233; + +type Val_0233 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0233 } + : T[K] extends object ? { t: 'o'; props: Val_0233 } + : { t: 'u' }; }; +type EV_0233 = Val_0233; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb233 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource233 = "user" | "post" | "comment" | "tag" | "category"; -type Action233 = `${Verb233}_${Resource233}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise233 = T extends Promise ? UnwrapPromise233 : T; -type UnwrapArray233 = T extends (infer U)[] ? UnwrapArray233 : T; -type Head233 = T extends [infer H, ...infer _] ? H : never; -type Tail233 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation233 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation233>] - : never; +interface Registry_02_33 { + entities: Map; + validators: EV_0233; + paths: Set; + merged: DeepMerge_0233; +} -type SmallUnion233 = "a" | "b" | "c" | "d"; -type AllPerms233 = Permutation233; +type CK_0233 = `p02.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig233, - Flat233, - FR233, - BigUnion233, - ExtractAlpha233, - ExcludeZulu233, - OptionalAll233, - RequiredAll233, - ReadonlyAll233, - NullableAll233, - TypeNames233, - Action233, - AllPerms233, -}; +export type { Entity_02_33, Registry_02_33, CK_0233, EP_0233, EV_0233, DeepMerge_0233 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts index 3de600ae..5d893cad 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-34.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-34 (seed 234) - expensive recursive & mapped types +// pkg-02/types-34 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord234 { - a234: { x: number; y: string; z: boolean }; - b234: { p: string[]; q: Record }; - c234: { nested: { deep: { deeper: { deepest: string } } } }; - d234: number; - e234: string; - f234: boolean; - g234: null; - h234: undefined; - i234: bigint; - j234: symbol; -} - -type PartialBig234 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten234 = T extends Array ? Flatten234 : T; -type Nested234 = number[][][][][][][][][][]; -type Flat234 = Flatten234; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly234 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly234 : T[K]; -}; -type DeepRequired234 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired234 : T[K]; +type DeepMerge_0234 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0234 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR234 = DeepReadonly234>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion234 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha234 = Extract; -type ExcludeZulu234 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA234 { width: number; height: number; depth: number } -interface ShapeB234 { color: string; opacity: number; blend: string } -interface ShapeC234 { x: number; y: number; z: number; w: number } -interface ShapeD234 { label: string; title: string; summary: string } - -type Combined234 = ShapeA234 & ShapeB234 & ShapeC234 & ShapeD234; -type OptionalAll234 = { [K in keyof Combined234]?: Combined234[K] }; -type RequiredAll234 = { [K in keyof Combined234]-?: Combined234[K] }; -type ReadonlyAll234 = { readonly [K in keyof Combined234]: Combined234[K] }; -type NullableAll234 = { [K in keyof Combined234]: Combined234[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString234 = T extends string ? true : false; -type IsNumber234 = T extends number ? true : false; -type TypeName234 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_34 | null; children: Entity_02_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0234: number; y0234: string; z0234: boolean }; +} -type TypeNames234 = { - [K in keyof BigRecord234]: TypeName234; +type Path_0234 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0234}` }[keyof T & string] : never; +type EP_0234 = Path_0234; + +type Val_0234 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0234 } + : T[K] extends object ? { t: 'o'; props: Val_0234 } + : { t: 'u' }; }; +type EV_0234 = Val_0234; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb234 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource234 = "user" | "post" | "comment" | "tag" | "category"; -type Action234 = `${Verb234}_${Resource234}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise234 = T extends Promise ? UnwrapPromise234 : T; -type UnwrapArray234 = T extends (infer U)[] ? UnwrapArray234 : T; -type Head234 = T extends [infer H, ...infer _] ? H : never; -type Tail234 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation234 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation234>] - : never; +interface Registry_02_34 { + entities: Map; + validators: EV_0234; + paths: Set; + merged: DeepMerge_0234; +} -type SmallUnion234 = "a" | "b" | "c" | "d"; -type AllPerms234 = Permutation234; +type CK_0234 = `p02.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig234, - Flat234, - FR234, - BigUnion234, - ExtractAlpha234, - ExcludeZulu234, - OptionalAll234, - RequiredAll234, - ReadonlyAll234, - NullableAll234, - TypeNames234, - Action234, - AllPerms234, -}; +export type { Entity_02_34, Registry_02_34, CK_0234, EP_0234, EV_0234, DeepMerge_0234 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts index 1fe8c82c..1a68a837 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-35.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-35 (seed 235) - expensive recursive & mapped types +// pkg-02/types-35 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord235 { - a235: { x: number; y: string; z: boolean }; - b235: { p: string[]; q: Record }; - c235: { nested: { deep: { deeper: { deepest: string } } } }; - d235: number; - e235: string; - f235: boolean; - g235: null; - h235: undefined; - i235: bigint; - j235: symbol; -} - -type PartialBig235 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten235 = T extends Array ? Flatten235 : T; -type Nested235 = number[][][][][][][][][][]; -type Flat235 = Flatten235; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly235 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly235 : T[K]; -}; -type DeepRequired235 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired235 : T[K]; +type DeepMerge_0235 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0235 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR235 = DeepReadonly235>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion235 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha235 = Extract; -type ExcludeZulu235 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA235 { width: number; height: number; depth: number } -interface ShapeB235 { color: string; opacity: number; blend: string } -interface ShapeC235 { x: number; y: number; z: number; w: number } -interface ShapeD235 { label: string; title: string; summary: string } - -type Combined235 = ShapeA235 & ShapeB235 & ShapeC235 & ShapeD235; -type OptionalAll235 = { [K in keyof Combined235]?: Combined235[K] }; -type RequiredAll235 = { [K in keyof Combined235]-?: Combined235[K] }; -type ReadonlyAll235 = { readonly [K in keyof Combined235]: Combined235[K] }; -type NullableAll235 = { [K in keyof Combined235]: Combined235[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString235 = T extends string ? true : false; -type IsNumber235 = T extends number ? true : false; -type TypeName235 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_35 | null; children: Entity_02_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0235: number; y0235: string; z0235: boolean }; +} -type TypeNames235 = { - [K in keyof BigRecord235]: TypeName235; +type Path_0235 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0235}` }[keyof T & string] : never; +type EP_0235 = Path_0235; + +type Val_0235 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0235 } + : T[K] extends object ? { t: 'o'; props: Val_0235 } + : { t: 'u' }; }; +type EV_0235 = Val_0235; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb235 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource235 = "user" | "post" | "comment" | "tag" | "category"; -type Action235 = `${Verb235}_${Resource235}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise235 = T extends Promise ? UnwrapPromise235 : T; -type UnwrapArray235 = T extends (infer U)[] ? UnwrapArray235 : T; -type Head235 = T extends [infer H, ...infer _] ? H : never; -type Tail235 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation235 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation235>] - : never; +interface Registry_02_35 { + entities: Map; + validators: EV_0235; + paths: Set; + merged: DeepMerge_0235; +} -type SmallUnion235 = "a" | "b" | "c" | "d"; -type AllPerms235 = Permutation235; +type CK_0235 = `p02.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig235, - Flat235, - FR235, - BigUnion235, - ExtractAlpha235, - ExcludeZulu235, - OptionalAll235, - RequiredAll235, - ReadonlyAll235, - NullableAll235, - TypeNames235, - Action235, - AllPerms235, -}; +export type { Entity_02_35, Registry_02_35, CK_0235, EP_0235, EV_0235, DeepMerge_0235 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts index 936a3248..5ccccd69 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-36.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-36 (seed 236) - expensive recursive & mapped types +// pkg-02/types-36 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord236 { - a236: { x: number; y: string; z: boolean }; - b236: { p: string[]; q: Record }; - c236: { nested: { deep: { deeper: { deepest: string } } } }; - d236: number; - e236: string; - f236: boolean; - g236: null; - h236: undefined; - i236: bigint; - j236: symbol; -} - -type PartialBig236 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten236 = T extends Array ? Flatten236 : T; -type Nested236 = number[][][][][][][][][][]; -type Flat236 = Flatten236; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly236 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly236 : T[K]; -}; -type DeepRequired236 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired236 : T[K]; +type DeepMerge_0236 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0236 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR236 = DeepReadonly236>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion236 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha236 = Extract; -type ExcludeZulu236 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA236 { width: number; height: number; depth: number } -interface ShapeB236 { color: string; opacity: number; blend: string } -interface ShapeC236 { x: number; y: number; z: number; w: number } -interface ShapeD236 { label: string; title: string; summary: string } - -type Combined236 = ShapeA236 & ShapeB236 & ShapeC236 & ShapeD236; -type OptionalAll236 = { [K in keyof Combined236]?: Combined236[K] }; -type RequiredAll236 = { [K in keyof Combined236]-?: Combined236[K] }; -type ReadonlyAll236 = { readonly [K in keyof Combined236]: Combined236[K] }; -type NullableAll236 = { [K in keyof Combined236]: Combined236[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString236 = T extends string ? true : false; -type IsNumber236 = T extends number ? true : false; -type TypeName236 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_36 | null; children: Entity_02_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0236: number; y0236: string; z0236: boolean }; +} -type TypeNames236 = { - [K in keyof BigRecord236]: TypeName236; +type Path_0236 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0236}` }[keyof T & string] : never; +type EP_0236 = Path_0236; + +type Val_0236 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0236 } + : T[K] extends object ? { t: 'o'; props: Val_0236 } + : { t: 'u' }; }; +type EV_0236 = Val_0236; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb236 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource236 = "user" | "post" | "comment" | "tag" | "category"; -type Action236 = `${Verb236}_${Resource236}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise236 = T extends Promise ? UnwrapPromise236 : T; -type UnwrapArray236 = T extends (infer U)[] ? UnwrapArray236 : T; -type Head236 = T extends [infer H, ...infer _] ? H : never; -type Tail236 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation236 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation236>] - : never; +interface Registry_02_36 { + entities: Map; + validators: EV_0236; + paths: Set; + merged: DeepMerge_0236; +} -type SmallUnion236 = "a" | "b" | "c" | "d"; -type AllPerms236 = Permutation236; +type CK_0236 = `p02.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig236, - Flat236, - FR236, - BigUnion236, - ExtractAlpha236, - ExcludeZulu236, - OptionalAll236, - RequiredAll236, - ReadonlyAll236, - NullableAll236, - TypeNames236, - Action236, - AllPerms236, -}; +export type { Entity_02_36, Registry_02_36, CK_0236, EP_0236, EV_0236, DeepMerge_0236 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts index 2c84ddc9..461c30e1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-37.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-37 (seed 237) - expensive recursive & mapped types +// pkg-02/types-37 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord237 { - a237: { x: number; y: string; z: boolean }; - b237: { p: string[]; q: Record }; - c237: { nested: { deep: { deeper: { deepest: string } } } }; - d237: number; - e237: string; - f237: boolean; - g237: null; - h237: undefined; - i237: bigint; - j237: symbol; -} - -type PartialBig237 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten237 = T extends Array ? Flatten237 : T; -type Nested237 = number[][][][][][][][][][]; -type Flat237 = Flatten237; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly237 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly237 : T[K]; -}; -type DeepRequired237 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired237 : T[K]; +type DeepMerge_0237 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0237 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR237 = DeepReadonly237>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion237 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha237 = Extract; -type ExcludeZulu237 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA237 { width: number; height: number; depth: number } -interface ShapeB237 { color: string; opacity: number; blend: string } -interface ShapeC237 { x: number; y: number; z: number; w: number } -interface ShapeD237 { label: string; title: string; summary: string } - -type Combined237 = ShapeA237 & ShapeB237 & ShapeC237 & ShapeD237; -type OptionalAll237 = { [K in keyof Combined237]?: Combined237[K] }; -type RequiredAll237 = { [K in keyof Combined237]-?: Combined237[K] }; -type ReadonlyAll237 = { readonly [K in keyof Combined237]: Combined237[K] }; -type NullableAll237 = { [K in keyof Combined237]: Combined237[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString237 = T extends string ? true : false; -type IsNumber237 = T extends number ? true : false; -type TypeName237 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_37 | null; children: Entity_02_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0237: number; y0237: string; z0237: boolean }; +} -type TypeNames237 = { - [K in keyof BigRecord237]: TypeName237; +type Path_0237 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0237}` }[keyof T & string] : never; +type EP_0237 = Path_0237; + +type Val_0237 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0237 } + : T[K] extends object ? { t: 'o'; props: Val_0237 } + : { t: 'u' }; }; +type EV_0237 = Val_0237; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb237 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource237 = "user" | "post" | "comment" | "tag" | "category"; -type Action237 = `${Verb237}_${Resource237}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise237 = T extends Promise ? UnwrapPromise237 : T; -type UnwrapArray237 = T extends (infer U)[] ? UnwrapArray237 : T; -type Head237 = T extends [infer H, ...infer _] ? H : never; -type Tail237 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation237 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation237>] - : never; +interface Registry_02_37 { + entities: Map; + validators: EV_0237; + paths: Set; + merged: DeepMerge_0237; +} -type SmallUnion237 = "a" | "b" | "c" | "d"; -type AllPerms237 = Permutation237; +type CK_0237 = `p02.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig237, - Flat237, - FR237, - BigUnion237, - ExtractAlpha237, - ExcludeZulu237, - OptionalAll237, - RequiredAll237, - ReadonlyAll237, - NullableAll237, - TypeNames237, - Action237, - AllPerms237, -}; +export type { Entity_02_37, Registry_02_37, CK_0237, EP_0237, EV_0237, DeepMerge_0237 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts index ff813dae..6af685a0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-38.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-38 (seed 238) - expensive recursive & mapped types +// pkg-02/types-38 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord238 { - a238: { x: number; y: string; z: boolean }; - b238: { p: string[]; q: Record }; - c238: { nested: { deep: { deeper: { deepest: string } } } }; - d238: number; - e238: string; - f238: boolean; - g238: null; - h238: undefined; - i238: bigint; - j238: symbol; -} - -type PartialBig238 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten238 = T extends Array ? Flatten238 : T; -type Nested238 = number[][][][][][][][][][]; -type Flat238 = Flatten238; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly238 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly238 : T[K]; -}; -type DeepRequired238 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired238 : T[K]; +type DeepMerge_0238 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0238 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR238 = DeepReadonly238>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion238 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha238 = Extract; -type ExcludeZulu238 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA238 { width: number; height: number; depth: number } -interface ShapeB238 { color: string; opacity: number; blend: string } -interface ShapeC238 { x: number; y: number; z: number; w: number } -interface ShapeD238 { label: string; title: string; summary: string } - -type Combined238 = ShapeA238 & ShapeB238 & ShapeC238 & ShapeD238; -type OptionalAll238 = { [K in keyof Combined238]?: Combined238[K] }; -type RequiredAll238 = { [K in keyof Combined238]-?: Combined238[K] }; -type ReadonlyAll238 = { readonly [K in keyof Combined238]: Combined238[K] }; -type NullableAll238 = { [K in keyof Combined238]: Combined238[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString238 = T extends string ? true : false; -type IsNumber238 = T extends number ? true : false; -type TypeName238 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_38 | null; children: Entity_02_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0238: number; y0238: string; z0238: boolean }; +} -type TypeNames238 = { - [K in keyof BigRecord238]: TypeName238; +type Path_0238 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0238}` }[keyof T & string] : never; +type EP_0238 = Path_0238; + +type Val_0238 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0238 } + : T[K] extends object ? { t: 'o'; props: Val_0238 } + : { t: 'u' }; }; +type EV_0238 = Val_0238; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb238 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource238 = "user" | "post" | "comment" | "tag" | "category"; -type Action238 = `${Verb238}_${Resource238}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise238 = T extends Promise ? UnwrapPromise238 : T; -type UnwrapArray238 = T extends (infer U)[] ? UnwrapArray238 : T; -type Head238 = T extends [infer H, ...infer _] ? H : never; -type Tail238 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation238 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation238>] - : never; +interface Registry_02_38 { + entities: Map; + validators: EV_0238; + paths: Set; + merged: DeepMerge_0238; +} -type SmallUnion238 = "a" | "b" | "c" | "d"; -type AllPerms238 = Permutation238; +type CK_0238 = `p02.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig238, - Flat238, - FR238, - BigUnion238, - ExtractAlpha238, - ExcludeZulu238, - OptionalAll238, - RequiredAll238, - ReadonlyAll238, - NullableAll238, - TypeNames238, - Action238, - AllPerms238, -}; +export type { Entity_02_38, Registry_02_38, CK_0238, EP_0238, EV_0238, DeepMerge_0238 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts index 8009ffde..8189d869 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-39.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-39 (seed 239) - expensive recursive & mapped types +// pkg-02/types-39 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord239 { - a239: { x: number; y: string; z: boolean }; - b239: { p: string[]; q: Record }; - c239: { nested: { deep: { deeper: { deepest: string } } } }; - d239: number; - e239: string; - f239: boolean; - g239: null; - h239: undefined; - i239: bigint; - j239: symbol; -} - -type PartialBig239 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten239 = T extends Array ? Flatten239 : T; -type Nested239 = number[][][][][][][][][][]; -type Flat239 = Flatten239; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly239 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly239 : T[K]; -}; -type DeepRequired239 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired239 : T[K]; +type DeepMerge_0239 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0239 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR239 = DeepReadonly239>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion239 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha239 = Extract; -type ExcludeZulu239 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA239 { width: number; height: number; depth: number } -interface ShapeB239 { color: string; opacity: number; blend: string } -interface ShapeC239 { x: number; y: number; z: number; w: number } -interface ShapeD239 { label: string; title: string; summary: string } - -type Combined239 = ShapeA239 & ShapeB239 & ShapeC239 & ShapeD239; -type OptionalAll239 = { [K in keyof Combined239]?: Combined239[K] }; -type RequiredAll239 = { [K in keyof Combined239]-?: Combined239[K] }; -type ReadonlyAll239 = { readonly [K in keyof Combined239]: Combined239[K] }; -type NullableAll239 = { [K in keyof Combined239]: Combined239[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString239 = T extends string ? true : false; -type IsNumber239 = T extends number ? true : false; -type TypeName239 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_39 | null; children: Entity_02_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0239: number; y0239: string; z0239: boolean }; +} -type TypeNames239 = { - [K in keyof BigRecord239]: TypeName239; +type Path_0239 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0239}` }[keyof T & string] : never; +type EP_0239 = Path_0239; + +type Val_0239 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0239 } + : T[K] extends object ? { t: 'o'; props: Val_0239 } + : { t: 'u' }; }; +type EV_0239 = Val_0239; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb239 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource239 = "user" | "post" | "comment" | "tag" | "category"; -type Action239 = `${Verb239}_${Resource239}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise239 = T extends Promise ? UnwrapPromise239 : T; -type UnwrapArray239 = T extends (infer U)[] ? UnwrapArray239 : T; -type Head239 = T extends [infer H, ...infer _] ? H : never; -type Tail239 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation239 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation239>] - : never; +interface Registry_02_39 { + entities: Map; + validators: EV_0239; + paths: Set; + merged: DeepMerge_0239; +} -type SmallUnion239 = "a" | "b" | "c" | "d"; -type AllPerms239 = Permutation239; +type CK_0239 = `p02.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig239, - Flat239, - FR239, - BigUnion239, - ExtractAlpha239, - ExcludeZulu239, - OptionalAll239, - RequiredAll239, - ReadonlyAll239, - NullableAll239, - TypeNames239, - Action239, - AllPerms239, -}; +export type { Entity_02_39, Registry_02_39, CK_0239, EP_0239, EV_0239, DeepMerge_0239 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts index 75a22e30..bf294010 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-40.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-40 (seed 240) - expensive recursive & mapped types +// pkg-02/types-40 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord240 { - a240: { x: number; y: string; z: boolean }; - b240: { p: string[]; q: Record }; - c240: { nested: { deep: { deeper: { deepest: string } } } }; - d240: number; - e240: string; - f240: boolean; - g240: null; - h240: undefined; - i240: bigint; - j240: symbol; -} - -type PartialBig240 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten240 = T extends Array ? Flatten240 : T; -type Nested240 = number[][][][][][][][][][]; -type Flat240 = Flatten240; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly240 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly240 : T[K]; -}; -type DeepRequired240 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired240 : T[K]; +type DeepMerge_0240 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0240 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR240 = DeepReadonly240>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion240 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha240 = Extract; -type ExcludeZulu240 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA240 { width: number; height: number; depth: number } -interface ShapeB240 { color: string; opacity: number; blend: string } -interface ShapeC240 { x: number; y: number; z: number; w: number } -interface ShapeD240 { label: string; title: string; summary: string } - -type Combined240 = ShapeA240 & ShapeB240 & ShapeC240 & ShapeD240; -type OptionalAll240 = { [K in keyof Combined240]?: Combined240[K] }; -type RequiredAll240 = { [K in keyof Combined240]-?: Combined240[K] }; -type ReadonlyAll240 = { readonly [K in keyof Combined240]: Combined240[K] }; -type NullableAll240 = { [K in keyof Combined240]: Combined240[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString240 = T extends string ? true : false; -type IsNumber240 = T extends number ? true : false; -type TypeName240 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_40 | null; children: Entity_02_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0240: number; y0240: string; z0240: boolean }; +} -type TypeNames240 = { - [K in keyof BigRecord240]: TypeName240; +type Path_0240 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0240}` }[keyof T & string] : never; +type EP_0240 = Path_0240; + +type Val_0240 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0240 } + : T[K] extends object ? { t: 'o'; props: Val_0240 } + : { t: 'u' }; }; +type EV_0240 = Val_0240; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb240 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource240 = "user" | "post" | "comment" | "tag" | "category"; -type Action240 = `${Verb240}_${Resource240}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise240 = T extends Promise ? UnwrapPromise240 : T; -type UnwrapArray240 = T extends (infer U)[] ? UnwrapArray240 : T; -type Head240 = T extends [infer H, ...infer _] ? H : never; -type Tail240 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation240 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation240>] - : never; +interface Registry_02_40 { + entities: Map; + validators: EV_0240; + paths: Set; + merged: DeepMerge_0240; +} -type SmallUnion240 = "a" | "b" | "c" | "d"; -type AllPerms240 = Permutation240; +type CK_0240 = `p02.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig240, - Flat240, - FR240, - BigUnion240, - ExtractAlpha240, - ExcludeZulu240, - OptionalAll240, - RequiredAll240, - ReadonlyAll240, - NullableAll240, - TypeNames240, - Action240, - AllPerms240, -}; +export type { Entity_02_40, Registry_02_40, CK_0240, EP_0240, EV_0240, DeepMerge_0240 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts index 51f33da3..63ec0495 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-41.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-41 (seed 241) - expensive recursive & mapped types +// pkg-02/types-41 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord241 { - a241: { x: number; y: string; z: boolean }; - b241: { p: string[]; q: Record }; - c241: { nested: { deep: { deeper: { deepest: string } } } }; - d241: number; - e241: string; - f241: boolean; - g241: null; - h241: undefined; - i241: bigint; - j241: symbol; -} - -type PartialBig241 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten241 = T extends Array ? Flatten241 : T; -type Nested241 = number[][][][][][][][][][]; -type Flat241 = Flatten241; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly241 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly241 : T[K]; -}; -type DeepRequired241 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired241 : T[K]; +type DeepMerge_0241 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0241 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR241 = DeepReadonly241>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion241 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha241 = Extract; -type ExcludeZulu241 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA241 { width: number; height: number; depth: number } -interface ShapeB241 { color: string; opacity: number; blend: string } -interface ShapeC241 { x: number; y: number; z: number; w: number } -interface ShapeD241 { label: string; title: string; summary: string } - -type Combined241 = ShapeA241 & ShapeB241 & ShapeC241 & ShapeD241; -type OptionalAll241 = { [K in keyof Combined241]?: Combined241[K] }; -type RequiredAll241 = { [K in keyof Combined241]-?: Combined241[K] }; -type ReadonlyAll241 = { readonly [K in keyof Combined241]: Combined241[K] }; -type NullableAll241 = { [K in keyof Combined241]: Combined241[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString241 = T extends string ? true : false; -type IsNumber241 = T extends number ? true : false; -type TypeName241 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_41 | null; children: Entity_02_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0241: number; y0241: string; z0241: boolean }; +} -type TypeNames241 = { - [K in keyof BigRecord241]: TypeName241; +type Path_0241 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0241}` }[keyof T & string] : never; +type EP_0241 = Path_0241; + +type Val_0241 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0241 } + : T[K] extends object ? { t: 'o'; props: Val_0241 } + : { t: 'u' }; }; +type EV_0241 = Val_0241; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb241 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource241 = "user" | "post" | "comment" | "tag" | "category"; -type Action241 = `${Verb241}_${Resource241}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise241 = T extends Promise ? UnwrapPromise241 : T; -type UnwrapArray241 = T extends (infer U)[] ? UnwrapArray241 : T; -type Head241 = T extends [infer H, ...infer _] ? H : never; -type Tail241 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation241 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation241>] - : never; +interface Registry_02_41 { + entities: Map; + validators: EV_0241; + paths: Set; + merged: DeepMerge_0241; +} -type SmallUnion241 = "a" | "b" | "c" | "d"; -type AllPerms241 = Permutation241; +type CK_0241 = `p02.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig241, - Flat241, - FR241, - BigUnion241, - ExtractAlpha241, - ExcludeZulu241, - OptionalAll241, - RequiredAll241, - ReadonlyAll241, - NullableAll241, - TypeNames241, - Action241, - AllPerms241, -}; +export type { Entity_02_41, Registry_02_41, CK_0241, EP_0241, EV_0241, DeepMerge_0241 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts index 440958cb..0953066b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-42.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-42 (seed 242) - expensive recursive & mapped types +// pkg-02/types-42 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord242 { - a242: { x: number; y: string; z: boolean }; - b242: { p: string[]; q: Record }; - c242: { nested: { deep: { deeper: { deepest: string } } } }; - d242: number; - e242: string; - f242: boolean; - g242: null; - h242: undefined; - i242: bigint; - j242: symbol; -} - -type PartialBig242 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten242 = T extends Array ? Flatten242 : T; -type Nested242 = number[][][][][][][][][][]; -type Flat242 = Flatten242; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly242 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly242 : T[K]; -}; -type DeepRequired242 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired242 : T[K]; +type DeepMerge_0242 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0242 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR242 = DeepReadonly242>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion242 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha242 = Extract; -type ExcludeZulu242 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA242 { width: number; height: number; depth: number } -interface ShapeB242 { color: string; opacity: number; blend: string } -interface ShapeC242 { x: number; y: number; z: number; w: number } -interface ShapeD242 { label: string; title: string; summary: string } - -type Combined242 = ShapeA242 & ShapeB242 & ShapeC242 & ShapeD242; -type OptionalAll242 = { [K in keyof Combined242]?: Combined242[K] }; -type RequiredAll242 = { [K in keyof Combined242]-?: Combined242[K] }; -type ReadonlyAll242 = { readonly [K in keyof Combined242]: Combined242[K] }; -type NullableAll242 = { [K in keyof Combined242]: Combined242[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString242 = T extends string ? true : false; -type IsNumber242 = T extends number ? true : false; -type TypeName242 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_42 | null; children: Entity_02_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0242: number; y0242: string; z0242: boolean }; +} -type TypeNames242 = { - [K in keyof BigRecord242]: TypeName242; +type Path_0242 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0242}` }[keyof T & string] : never; +type EP_0242 = Path_0242; + +type Val_0242 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0242 } + : T[K] extends object ? { t: 'o'; props: Val_0242 } + : { t: 'u' }; }; +type EV_0242 = Val_0242; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb242 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource242 = "user" | "post" | "comment" | "tag" | "category"; -type Action242 = `${Verb242}_${Resource242}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise242 = T extends Promise ? UnwrapPromise242 : T; -type UnwrapArray242 = T extends (infer U)[] ? UnwrapArray242 : T; -type Head242 = T extends [infer H, ...infer _] ? H : never; -type Tail242 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation242 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation242>] - : never; +interface Registry_02_42 { + entities: Map; + validators: EV_0242; + paths: Set; + merged: DeepMerge_0242; +} -type SmallUnion242 = "a" | "b" | "c" | "d"; -type AllPerms242 = Permutation242; +type CK_0242 = `p02.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig242, - Flat242, - FR242, - BigUnion242, - ExtractAlpha242, - ExcludeZulu242, - OptionalAll242, - RequiredAll242, - ReadonlyAll242, - NullableAll242, - TypeNames242, - Action242, - AllPerms242, -}; +export type { Entity_02_42, Registry_02_42, CK_0242, EP_0242, EV_0242, DeepMerge_0242 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts index 11ce64e0..9663dd96 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-43.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-43 (seed 243) - expensive recursive & mapped types +// pkg-02/types-43 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord243 { - a243: { x: number; y: string; z: boolean }; - b243: { p: string[]; q: Record }; - c243: { nested: { deep: { deeper: { deepest: string } } } }; - d243: number; - e243: string; - f243: boolean; - g243: null; - h243: undefined; - i243: bigint; - j243: symbol; -} - -type PartialBig243 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten243 = T extends Array ? Flatten243 : T; -type Nested243 = number[][][][][][][][][][]; -type Flat243 = Flatten243; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly243 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly243 : T[K]; -}; -type DeepRequired243 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired243 : T[K]; +type DeepMerge_0243 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0243 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR243 = DeepReadonly243>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion243 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha243 = Extract; -type ExcludeZulu243 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA243 { width: number; height: number; depth: number } -interface ShapeB243 { color: string; opacity: number; blend: string } -interface ShapeC243 { x: number; y: number; z: number; w: number } -interface ShapeD243 { label: string; title: string; summary: string } - -type Combined243 = ShapeA243 & ShapeB243 & ShapeC243 & ShapeD243; -type OptionalAll243 = { [K in keyof Combined243]?: Combined243[K] }; -type RequiredAll243 = { [K in keyof Combined243]-?: Combined243[K] }; -type ReadonlyAll243 = { readonly [K in keyof Combined243]: Combined243[K] }; -type NullableAll243 = { [K in keyof Combined243]: Combined243[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString243 = T extends string ? true : false; -type IsNumber243 = T extends number ? true : false; -type TypeName243 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_43 | null; children: Entity_02_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0243: number; y0243: string; z0243: boolean }; +} -type TypeNames243 = { - [K in keyof BigRecord243]: TypeName243; +type Path_0243 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0243}` }[keyof T & string] : never; +type EP_0243 = Path_0243; + +type Val_0243 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0243 } + : T[K] extends object ? { t: 'o'; props: Val_0243 } + : { t: 'u' }; }; +type EV_0243 = Val_0243; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb243 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource243 = "user" | "post" | "comment" | "tag" | "category"; -type Action243 = `${Verb243}_${Resource243}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise243 = T extends Promise ? UnwrapPromise243 : T; -type UnwrapArray243 = T extends (infer U)[] ? UnwrapArray243 : T; -type Head243 = T extends [infer H, ...infer _] ? H : never; -type Tail243 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation243 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation243>] - : never; +interface Registry_02_43 { + entities: Map; + validators: EV_0243; + paths: Set; + merged: DeepMerge_0243; +} -type SmallUnion243 = "a" | "b" | "c" | "d"; -type AllPerms243 = Permutation243; +type CK_0243 = `p02.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig243, - Flat243, - FR243, - BigUnion243, - ExtractAlpha243, - ExcludeZulu243, - OptionalAll243, - RequiredAll243, - ReadonlyAll243, - NullableAll243, - TypeNames243, - Action243, - AllPerms243, -}; +export type { Entity_02_43, Registry_02_43, CK_0243, EP_0243, EV_0243, DeepMerge_0243 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts index 83068fc1..6af36bff 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-44.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-44 (seed 244) - expensive recursive & mapped types +// pkg-02/types-44 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord244 { - a244: { x: number; y: string; z: boolean }; - b244: { p: string[]; q: Record }; - c244: { nested: { deep: { deeper: { deepest: string } } } }; - d244: number; - e244: string; - f244: boolean; - g244: null; - h244: undefined; - i244: bigint; - j244: symbol; -} - -type PartialBig244 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten244 = T extends Array ? Flatten244 : T; -type Nested244 = number[][][][][][][][][][]; -type Flat244 = Flatten244; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly244 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly244 : T[K]; -}; -type DeepRequired244 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired244 : T[K]; +type DeepMerge_0244 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0244 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR244 = DeepReadonly244>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion244 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha244 = Extract; -type ExcludeZulu244 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA244 { width: number; height: number; depth: number } -interface ShapeB244 { color: string; opacity: number; blend: string } -interface ShapeC244 { x: number; y: number; z: number; w: number } -interface ShapeD244 { label: string; title: string; summary: string } - -type Combined244 = ShapeA244 & ShapeB244 & ShapeC244 & ShapeD244; -type OptionalAll244 = { [K in keyof Combined244]?: Combined244[K] }; -type RequiredAll244 = { [K in keyof Combined244]-?: Combined244[K] }; -type ReadonlyAll244 = { readonly [K in keyof Combined244]: Combined244[K] }; -type NullableAll244 = { [K in keyof Combined244]: Combined244[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString244 = T extends string ? true : false; -type IsNumber244 = T extends number ? true : false; -type TypeName244 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_44 | null; children: Entity_02_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0244: number; y0244: string; z0244: boolean }; +} -type TypeNames244 = { - [K in keyof BigRecord244]: TypeName244; +type Path_0244 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0244}` }[keyof T & string] : never; +type EP_0244 = Path_0244; + +type Val_0244 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0244 } + : T[K] extends object ? { t: 'o'; props: Val_0244 } + : { t: 'u' }; }; +type EV_0244 = Val_0244; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb244 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource244 = "user" | "post" | "comment" | "tag" | "category"; -type Action244 = `${Verb244}_${Resource244}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise244 = T extends Promise ? UnwrapPromise244 : T; -type UnwrapArray244 = T extends (infer U)[] ? UnwrapArray244 : T; -type Head244 = T extends [infer H, ...infer _] ? H : never; -type Tail244 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation244 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation244>] - : never; +interface Registry_02_44 { + entities: Map; + validators: EV_0244; + paths: Set; + merged: DeepMerge_0244; +} -type SmallUnion244 = "a" | "b" | "c" | "d"; -type AllPerms244 = Permutation244; +type CK_0244 = `p02.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig244, - Flat244, - FR244, - BigUnion244, - ExtractAlpha244, - ExcludeZulu244, - OptionalAll244, - RequiredAll244, - ReadonlyAll244, - NullableAll244, - TypeNames244, - Action244, - AllPerms244, -}; +export type { Entity_02_44, Registry_02_44, CK_0244, EP_0244, EV_0244, DeepMerge_0244 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts index 2c6b308f..79ad0a11 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-45.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-45 (seed 245) - expensive recursive & mapped types +// pkg-02/types-45 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord245 { - a245: { x: number; y: string; z: boolean }; - b245: { p: string[]; q: Record }; - c245: { nested: { deep: { deeper: { deepest: string } } } }; - d245: number; - e245: string; - f245: boolean; - g245: null; - h245: undefined; - i245: bigint; - j245: symbol; -} - -type PartialBig245 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten245 = T extends Array ? Flatten245 : T; -type Nested245 = number[][][][][][][][][][]; -type Flat245 = Flatten245; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly245 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly245 : T[K]; -}; -type DeepRequired245 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired245 : T[K]; +type DeepMerge_0245 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0245 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR245 = DeepReadonly245>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion245 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha245 = Extract; -type ExcludeZulu245 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA245 { width: number; height: number; depth: number } -interface ShapeB245 { color: string; opacity: number; blend: string } -interface ShapeC245 { x: number; y: number; z: number; w: number } -interface ShapeD245 { label: string; title: string; summary: string } - -type Combined245 = ShapeA245 & ShapeB245 & ShapeC245 & ShapeD245; -type OptionalAll245 = { [K in keyof Combined245]?: Combined245[K] }; -type RequiredAll245 = { [K in keyof Combined245]-?: Combined245[K] }; -type ReadonlyAll245 = { readonly [K in keyof Combined245]: Combined245[K] }; -type NullableAll245 = { [K in keyof Combined245]: Combined245[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString245 = T extends string ? true : false; -type IsNumber245 = T extends number ? true : false; -type TypeName245 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_45 | null; children: Entity_02_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0245: number; y0245: string; z0245: boolean }; +} -type TypeNames245 = { - [K in keyof BigRecord245]: TypeName245; +type Path_0245 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0245}` }[keyof T & string] : never; +type EP_0245 = Path_0245; + +type Val_0245 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0245 } + : T[K] extends object ? { t: 'o'; props: Val_0245 } + : { t: 'u' }; }; +type EV_0245 = Val_0245; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb245 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource245 = "user" | "post" | "comment" | "tag" | "category"; -type Action245 = `${Verb245}_${Resource245}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise245 = T extends Promise ? UnwrapPromise245 : T; -type UnwrapArray245 = T extends (infer U)[] ? UnwrapArray245 : T; -type Head245 = T extends [infer H, ...infer _] ? H : never; -type Tail245 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation245 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation245>] - : never; +interface Registry_02_45 { + entities: Map; + validators: EV_0245; + paths: Set; + merged: DeepMerge_0245; +} -type SmallUnion245 = "a" | "b" | "c" | "d"; -type AllPerms245 = Permutation245; +type CK_0245 = `p02.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig245, - Flat245, - FR245, - BigUnion245, - ExtractAlpha245, - ExcludeZulu245, - OptionalAll245, - RequiredAll245, - ReadonlyAll245, - NullableAll245, - TypeNames245, - Action245, - AllPerms245, -}; +export type { Entity_02_45, Registry_02_45, CK_0245, EP_0245, EV_0245, DeepMerge_0245 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts index 88d97626..30723558 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-46.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-46 (seed 246) - expensive recursive & mapped types +// pkg-02/types-46 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord246 { - a246: { x: number; y: string; z: boolean }; - b246: { p: string[]; q: Record }; - c246: { nested: { deep: { deeper: { deepest: string } } } }; - d246: number; - e246: string; - f246: boolean; - g246: null; - h246: undefined; - i246: bigint; - j246: symbol; -} - -type PartialBig246 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten246 = T extends Array ? Flatten246 : T; -type Nested246 = number[][][][][][][][][][]; -type Flat246 = Flatten246; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly246 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly246 : T[K]; -}; -type DeepRequired246 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired246 : T[K]; +type DeepMerge_0246 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0246 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR246 = DeepReadonly246>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion246 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha246 = Extract; -type ExcludeZulu246 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA246 { width: number; height: number; depth: number } -interface ShapeB246 { color: string; opacity: number; blend: string } -interface ShapeC246 { x: number; y: number; z: number; w: number } -interface ShapeD246 { label: string; title: string; summary: string } - -type Combined246 = ShapeA246 & ShapeB246 & ShapeC246 & ShapeD246; -type OptionalAll246 = { [K in keyof Combined246]?: Combined246[K] }; -type RequiredAll246 = { [K in keyof Combined246]-?: Combined246[K] }; -type ReadonlyAll246 = { readonly [K in keyof Combined246]: Combined246[K] }; -type NullableAll246 = { [K in keyof Combined246]: Combined246[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString246 = T extends string ? true : false; -type IsNumber246 = T extends number ? true : false; -type TypeName246 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_46 | null; children: Entity_02_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0246: number; y0246: string; z0246: boolean }; +} -type TypeNames246 = { - [K in keyof BigRecord246]: TypeName246; +type Path_0246 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0246}` }[keyof T & string] : never; +type EP_0246 = Path_0246; + +type Val_0246 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0246 } + : T[K] extends object ? { t: 'o'; props: Val_0246 } + : { t: 'u' }; }; +type EV_0246 = Val_0246; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb246 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource246 = "user" | "post" | "comment" | "tag" | "category"; -type Action246 = `${Verb246}_${Resource246}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise246 = T extends Promise ? UnwrapPromise246 : T; -type UnwrapArray246 = T extends (infer U)[] ? UnwrapArray246 : T; -type Head246 = T extends [infer H, ...infer _] ? H : never; -type Tail246 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation246 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation246>] - : never; +interface Registry_02_46 { + entities: Map; + validators: EV_0246; + paths: Set; + merged: DeepMerge_0246; +} -type SmallUnion246 = "a" | "b" | "c" | "d"; -type AllPerms246 = Permutation246; +type CK_0246 = `p02.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig246, - Flat246, - FR246, - BigUnion246, - ExtractAlpha246, - ExcludeZulu246, - OptionalAll246, - RequiredAll246, - ReadonlyAll246, - NullableAll246, - TypeNames246, - Action246, - AllPerms246, -}; +export type { Entity_02_46, Registry_02_46, CK_0246, EP_0246, EV_0246, DeepMerge_0246 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts index 880ba43c..349e67a0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-47.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-47 (seed 247) - expensive recursive & mapped types +// pkg-02/types-47 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord247 { - a247: { x: number; y: string; z: boolean }; - b247: { p: string[]; q: Record }; - c247: { nested: { deep: { deeper: { deepest: string } } } }; - d247: number; - e247: string; - f247: boolean; - g247: null; - h247: undefined; - i247: bigint; - j247: symbol; -} - -type PartialBig247 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten247 = T extends Array ? Flatten247 : T; -type Nested247 = number[][][][][][][][][][]; -type Flat247 = Flatten247; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly247 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly247 : T[K]; -}; -type DeepRequired247 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired247 : T[K]; +type DeepMerge_0247 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0247 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR247 = DeepReadonly247>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion247 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha247 = Extract; -type ExcludeZulu247 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA247 { width: number; height: number; depth: number } -interface ShapeB247 { color: string; opacity: number; blend: string } -interface ShapeC247 { x: number; y: number; z: number; w: number } -interface ShapeD247 { label: string; title: string; summary: string } - -type Combined247 = ShapeA247 & ShapeB247 & ShapeC247 & ShapeD247; -type OptionalAll247 = { [K in keyof Combined247]?: Combined247[K] }; -type RequiredAll247 = { [K in keyof Combined247]-?: Combined247[K] }; -type ReadonlyAll247 = { readonly [K in keyof Combined247]: Combined247[K] }; -type NullableAll247 = { [K in keyof Combined247]: Combined247[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString247 = T extends string ? true : false; -type IsNumber247 = T extends number ? true : false; -type TypeName247 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_47 | null; children: Entity_02_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0247: number; y0247: string; z0247: boolean }; +} -type TypeNames247 = { - [K in keyof BigRecord247]: TypeName247; +type Path_0247 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0247}` }[keyof T & string] : never; +type EP_0247 = Path_0247; + +type Val_0247 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0247 } + : T[K] extends object ? { t: 'o'; props: Val_0247 } + : { t: 'u' }; }; +type EV_0247 = Val_0247; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb247 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource247 = "user" | "post" | "comment" | "tag" | "category"; -type Action247 = `${Verb247}_${Resource247}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise247 = T extends Promise ? UnwrapPromise247 : T; -type UnwrapArray247 = T extends (infer U)[] ? UnwrapArray247 : T; -type Head247 = T extends [infer H, ...infer _] ? H : never; -type Tail247 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation247 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation247>] - : never; +interface Registry_02_47 { + entities: Map; + validators: EV_0247; + paths: Set; + merged: DeepMerge_0247; +} -type SmallUnion247 = "a" | "b" | "c" | "d"; -type AllPerms247 = Permutation247; +type CK_0247 = `p02.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig247, - Flat247, - FR247, - BigUnion247, - ExtractAlpha247, - ExcludeZulu247, - OptionalAll247, - RequiredAll247, - ReadonlyAll247, - NullableAll247, - TypeNames247, - Action247, - AllPerms247, -}; +export type { Entity_02_47, Registry_02_47, CK_0247, EP_0247, EV_0247, DeepMerge_0247 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts index 64acca12..ae1750bd 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-48.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-48 (seed 248) - expensive recursive & mapped types +// pkg-02/types-48 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord248 { - a248: { x: number; y: string; z: boolean }; - b248: { p: string[]; q: Record }; - c248: { nested: { deep: { deeper: { deepest: string } } } }; - d248: number; - e248: string; - f248: boolean; - g248: null; - h248: undefined; - i248: bigint; - j248: symbol; -} - -type PartialBig248 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten248 = T extends Array ? Flatten248 : T; -type Nested248 = number[][][][][][][][][][]; -type Flat248 = Flatten248; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly248 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly248 : T[K]; -}; -type DeepRequired248 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired248 : T[K]; +type DeepMerge_0248 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0248 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR248 = DeepReadonly248>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion248 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha248 = Extract; -type ExcludeZulu248 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA248 { width: number; height: number; depth: number } -interface ShapeB248 { color: string; opacity: number; blend: string } -interface ShapeC248 { x: number; y: number; z: number; w: number } -interface ShapeD248 { label: string; title: string; summary: string } - -type Combined248 = ShapeA248 & ShapeB248 & ShapeC248 & ShapeD248; -type OptionalAll248 = { [K in keyof Combined248]?: Combined248[K] }; -type RequiredAll248 = { [K in keyof Combined248]-?: Combined248[K] }; -type ReadonlyAll248 = { readonly [K in keyof Combined248]: Combined248[K] }; -type NullableAll248 = { [K in keyof Combined248]: Combined248[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString248 = T extends string ? true : false; -type IsNumber248 = T extends number ? true : false; -type TypeName248 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_48 | null; children: Entity_02_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0248: number; y0248: string; z0248: boolean }; +} -type TypeNames248 = { - [K in keyof BigRecord248]: TypeName248; +type Path_0248 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0248}` }[keyof T & string] : never; +type EP_0248 = Path_0248; + +type Val_0248 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0248 } + : T[K] extends object ? { t: 'o'; props: Val_0248 } + : { t: 'u' }; }; +type EV_0248 = Val_0248; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb248 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource248 = "user" | "post" | "comment" | "tag" | "category"; -type Action248 = `${Verb248}_${Resource248}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise248 = T extends Promise ? UnwrapPromise248 : T; -type UnwrapArray248 = T extends (infer U)[] ? UnwrapArray248 : T; -type Head248 = T extends [infer H, ...infer _] ? H : never; -type Tail248 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation248 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation248>] - : never; +interface Registry_02_48 { + entities: Map; + validators: EV_0248; + paths: Set; + merged: DeepMerge_0248; +} -type SmallUnion248 = "a" | "b" | "c" | "d"; -type AllPerms248 = Permutation248; +type CK_0248 = `p02.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig248, - Flat248, - FR248, - BigUnion248, - ExtractAlpha248, - ExcludeZulu248, - OptionalAll248, - RequiredAll248, - ReadonlyAll248, - NullableAll248, - TypeNames248, - Action248, - AllPerms248, -}; +export type { Entity_02_48, Registry_02_48, CK_0248, EP_0248, EV_0248, DeepMerge_0248 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts index 8f2f952f..0abd3d6f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-49.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-49 (seed 249) - expensive recursive & mapped types +// pkg-02/types-49 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord249 { - a249: { x: number; y: string; z: boolean }; - b249: { p: string[]; q: Record }; - c249: { nested: { deep: { deeper: { deepest: string } } } }; - d249: number; - e249: string; - f249: boolean; - g249: null; - h249: undefined; - i249: bigint; - j249: symbol; -} - -type PartialBig249 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten249 = T extends Array ? Flatten249 : T; -type Nested249 = number[][][][][][][][][][]; -type Flat249 = Flatten249; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly249 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly249 : T[K]; -}; -type DeepRequired249 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired249 : T[K]; +type DeepMerge_0249 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0249 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR249 = DeepReadonly249>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion249 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha249 = Extract; -type ExcludeZulu249 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA249 { width: number; height: number; depth: number } -interface ShapeB249 { color: string; opacity: number; blend: string } -interface ShapeC249 { x: number; y: number; z: number; w: number } -interface ShapeD249 { label: string; title: string; summary: string } - -type Combined249 = ShapeA249 & ShapeB249 & ShapeC249 & ShapeD249; -type OptionalAll249 = { [K in keyof Combined249]?: Combined249[K] }; -type RequiredAll249 = { [K in keyof Combined249]-?: Combined249[K] }; -type ReadonlyAll249 = { readonly [K in keyof Combined249]: Combined249[K] }; -type NullableAll249 = { [K in keyof Combined249]: Combined249[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString249 = T extends string ? true : false; -type IsNumber249 = T extends number ? true : false; -type TypeName249 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_49 | null; children: Entity_02_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0249: number; y0249: string; z0249: boolean }; +} -type TypeNames249 = { - [K in keyof BigRecord249]: TypeName249; +type Path_0249 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0249}` }[keyof T & string] : never; +type EP_0249 = Path_0249; + +type Val_0249 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0249 } + : T[K] extends object ? { t: 'o'; props: Val_0249 } + : { t: 'u' }; }; +type EV_0249 = Val_0249; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb249 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource249 = "user" | "post" | "comment" | "tag" | "category"; -type Action249 = `${Verb249}_${Resource249}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise249 = T extends Promise ? UnwrapPromise249 : T; -type UnwrapArray249 = T extends (infer U)[] ? UnwrapArray249 : T; -type Head249 = T extends [infer H, ...infer _] ? H : never; -type Tail249 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation249 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation249>] - : never; +interface Registry_02_49 { + entities: Map; + validators: EV_0249; + paths: Set; + merged: DeepMerge_0249; +} -type SmallUnion249 = "a" | "b" | "c" | "d"; -type AllPerms249 = Permutation249; +type CK_0249 = `p02.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig249, - Flat249, - FR249, - BigUnion249, - ExtractAlpha249, - ExcludeZulu249, - OptionalAll249, - RequiredAll249, - ReadonlyAll249, - NullableAll249, - TypeNames249, - Action249, - AllPerms249, -}; +export type { Entity_02_49, Registry_02_49, CK_0249, EP_0249, EV_0249, DeepMerge_0249 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts index ce0be910..fa0ab9a7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-02/types-50.ts @@ -1,125 +1,44 @@ -// pkg-02 / types-50 (seed 250) - expensive recursive & mapped types +// pkg-02/types-50 - heavy interconnected types -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; -}; - -interface BigRecord250 { - a250: { x: number; y: string; z: boolean }; - b250: { p: string[]; q: Record }; - c250: { nested: { deep: { deeper: { deepest: string } } } }; - d250: number; - e250: string; - f250: boolean; - g250: null; - h250: undefined; - i250: bigint; - j250: symbol; -} - -type PartialBig250 = DeepPartial; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten250 = T extends Array ? Flatten250 : T; -type Nested250 = number[][][][][][][][][][]; -type Flat250 = Flatten250; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly250 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly250 : T[K]; -}; -type DeepRequired250 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired250 : T[K]; +type DeepMerge_0250 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0250 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -type FR250 = DeepReadonly250>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion250 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha250 = Extract; -type ExcludeZulu250 = Exclude; -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA250 { width: number; height: number; depth: number } -interface ShapeB250 { color: string; opacity: number; blend: string } -interface ShapeC250 { x: number; y: number; z: number; w: number } -interface ShapeD250 { label: string; title: string; summary: string } - -type Combined250 = ShapeA250 & ShapeB250 & ShapeC250 & ShapeD250; -type OptionalAll250 = { [K in keyof Combined250]?: Combined250[K] }; -type RequiredAll250 = { [K in keyof Combined250]-?: Combined250[K] }; -type ReadonlyAll250 = { readonly [K in keyof Combined250]: Combined250[K] }; -type NullableAll250 = { [K in keyof Combined250]: Combined250[K] | null }; - -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString250 = T extends string ? true : false; -type IsNumber250 = T extends number ? true : false; -type TypeName250 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; +interface Entity_02_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_02_50 | null; children: Entity_02_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0250: number; y0250: string; z0250: boolean }; +} -type TypeNames250 = { - [K in keyof BigRecord250]: TypeName250; +type Path_0250 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0250}` }[keyof T & string] : never; +type EP_0250 = Path_0250; + +type Val_0250 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0250 } + : T[K] extends object ? { t: 'o'; props: Val_0250 } + : { t: 'u' }; }; +type EV_0250 = Val_0250; -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb250 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource250 = "user" | "post" | "comment" | "tag" | "category"; -type Action250 = `${Verb250}_${Resource250}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise250 = T extends Promise ? UnwrapPromise250 : T; -type UnwrapArray250 = T extends (infer U)[] ? UnwrapArray250 : T; -type Head250 = T extends [infer H, ...infer _] ? H : never; -type Tail250 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation250 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation250>] - : never; +interface Registry_02_50 { + entities: Map; + validators: EV_0250; + paths: Set; + merged: DeepMerge_0250; +} -type SmallUnion250 = "a" | "b" | "c" | "d"; -type AllPerms250 = Permutation250; +type CK_0250 = `p02.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig250, - Flat250, - FR250, - BigUnion250, - ExtractAlpha250, - ExcludeZulu250, - OptionalAll250, - RequiredAll250, - ReadonlyAll250, - NullableAll250, - TypeNames250, - Action250, - AllPerms250, -}; +export type { Entity_02_50, Registry_02_50, CK_0250, EP_0250, EV_0250, DeepMerge_0250 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts index f3b907b1..57302526 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-01.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-01 (seed 301) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-01 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0301 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0301 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord301 { - a301: { x: number; y: string; z: boolean }; - b301: { p: string[]; q: Record }; - c301: { nested: { deep: { deeper: { deepest: string } } } }; - d301: number; - e301: string; - f301: boolean; - g301: null; - h301: undefined; - i301: bigint; - j301: symbol; +interface Entity_03_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_01 | null; children: Entity_03_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0301: number; y0301: string; z0301: boolean }; } -type PartialBig301 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten301 = T extends Array ? Flatten301 : T; -type Nested301 = number[][][][][][][][][][]; -type Flat301 = Flatten301; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly301 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly301 : T[K]; -}; -type DeepRequired301 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired301 : T[K]; +type Path_0301 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0301}` }[keyof T & string] : never; +type EP_0301 = Path_0301; + +type Val_0301 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0301 } + : T[K] extends object ? { t: 'o'; props: Val_0301 } + : { t: 'u' }; }; -type FR301 = DeepReadonly301>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion301 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha301 = Extract; -type ExcludeZulu301 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA301 { width: number; height: number; depth: number } -interface ShapeB301 { color: string; opacity: number; blend: string } -interface ShapeC301 { x: number; y: number; z: number; w: number } -interface ShapeD301 { label: string; title: string; summary: string } - -type Combined301 = ShapeA301 & ShapeB301 & ShapeC301 & ShapeD301; -type OptionalAll301 = { [K in keyof Combined301]?: Combined301[K] }; -type RequiredAll301 = { [K in keyof Combined301]-?: Combined301[K] }; -type ReadonlyAll301 = { readonly [K in keyof Combined301]: Combined301[K] }; -type NullableAll301 = { [K in keyof Combined301]: Combined301[K] | null }; +type EV_0301 = Val_0301; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString301 = T extends string ? true : false; -type IsNumber301 = T extends number ? true : false; -type TypeName301 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames301 = { - [K in keyof BigRecord301]: TypeName301; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb301 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource301 = "user" | "post" | "comment" | "tag" | "category"; -type Action301 = `${Verb301}_${Resource301}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise301 = T extends Promise ? UnwrapPromise301 : T; -type UnwrapArray301 = T extends (infer U)[] ? UnwrapArray301 : T; -type Head301 = T extends [infer H, ...infer _] ? H : never; -type Tail301 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation301 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation301>] - : never; +interface Registry_03_01 { + entities: Map; + validators: EV_0301; + paths: Set; + merged: DeepMerge_0301; +} -type SmallUnion301 = "a" | "b" | "c" | "d"; -type AllPerms301 = Permutation301; +type CK_0301 = `p03.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig301, - Flat301, - FR301, - BigUnion301, - ExtractAlpha301, - ExcludeZulu301, - OptionalAll301, - RequiredAll301, - ReadonlyAll301, - NullableAll301, - TypeNames301, - Action301, - AllPerms301, -}; +export type { Entity_03_01, Registry_03_01, CK_0301, EP_0301, EV_0301, DeepMerge_0301 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts index c963689f..59040841 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-02.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-02 (seed 302) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-02 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0302 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0302 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord302 { - a302: { x: number; y: string; z: boolean }; - b302: { p: string[]; q: Record }; - c302: { nested: { deep: { deeper: { deepest: string } } } }; - d302: number; - e302: string; - f302: boolean; - g302: null; - h302: undefined; - i302: bigint; - j302: symbol; +interface Entity_03_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_02 | null; children: Entity_03_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0302: number; y0302: string; z0302: boolean }; } -type PartialBig302 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten302 = T extends Array ? Flatten302 : T; -type Nested302 = number[][][][][][][][][][]; -type Flat302 = Flatten302; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly302 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly302 : T[K]; -}; -type DeepRequired302 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired302 : T[K]; +type Path_0302 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0302}` }[keyof T & string] : never; +type EP_0302 = Path_0302; + +type Val_0302 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0302 } + : T[K] extends object ? { t: 'o'; props: Val_0302 } + : { t: 'u' }; }; -type FR302 = DeepReadonly302>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion302 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha302 = Extract; -type ExcludeZulu302 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA302 { width: number; height: number; depth: number } -interface ShapeB302 { color: string; opacity: number; blend: string } -interface ShapeC302 { x: number; y: number; z: number; w: number } -interface ShapeD302 { label: string; title: string; summary: string } - -type Combined302 = ShapeA302 & ShapeB302 & ShapeC302 & ShapeD302; -type OptionalAll302 = { [K in keyof Combined302]?: Combined302[K] }; -type RequiredAll302 = { [K in keyof Combined302]-?: Combined302[K] }; -type ReadonlyAll302 = { readonly [K in keyof Combined302]: Combined302[K] }; -type NullableAll302 = { [K in keyof Combined302]: Combined302[K] | null }; +type EV_0302 = Val_0302; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString302 = T extends string ? true : false; -type IsNumber302 = T extends number ? true : false; -type TypeName302 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames302 = { - [K in keyof BigRecord302]: TypeName302; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb302 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource302 = "user" | "post" | "comment" | "tag" | "category"; -type Action302 = `${Verb302}_${Resource302}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise302 = T extends Promise ? UnwrapPromise302 : T; -type UnwrapArray302 = T extends (infer U)[] ? UnwrapArray302 : T; -type Head302 = T extends [infer H, ...infer _] ? H : never; -type Tail302 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation302 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation302>] - : never; +interface Registry_03_02 { + entities: Map; + validators: EV_0302; + paths: Set; + merged: DeepMerge_0302; +} -type SmallUnion302 = "a" | "b" | "c" | "d"; -type AllPerms302 = Permutation302; +type CK_0302 = `p03.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig302, - Flat302, - FR302, - BigUnion302, - ExtractAlpha302, - ExcludeZulu302, - OptionalAll302, - RequiredAll302, - ReadonlyAll302, - NullableAll302, - TypeNames302, - Action302, - AllPerms302, -}; +export type { Entity_03_02, Registry_03_02, CK_0302, EP_0302, EV_0302, DeepMerge_0302 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts index 4e196f0d..24efc437 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-03.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-03 (seed 303) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-03 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0303 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0303 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord303 { - a303: { x: number; y: string; z: boolean }; - b303: { p: string[]; q: Record }; - c303: { nested: { deep: { deeper: { deepest: string } } } }; - d303: number; - e303: string; - f303: boolean; - g303: null; - h303: undefined; - i303: bigint; - j303: symbol; +interface Entity_03_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_03 | null; children: Entity_03_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0303: number; y0303: string; z0303: boolean }; } -type PartialBig303 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten303 = T extends Array ? Flatten303 : T; -type Nested303 = number[][][][][][][][][][]; -type Flat303 = Flatten303; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly303 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly303 : T[K]; -}; -type DeepRequired303 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired303 : T[K]; +type Path_0303 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0303}` }[keyof T & string] : never; +type EP_0303 = Path_0303; + +type Val_0303 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0303 } + : T[K] extends object ? { t: 'o'; props: Val_0303 } + : { t: 'u' }; }; -type FR303 = DeepReadonly303>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion303 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha303 = Extract; -type ExcludeZulu303 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA303 { width: number; height: number; depth: number } -interface ShapeB303 { color: string; opacity: number; blend: string } -interface ShapeC303 { x: number; y: number; z: number; w: number } -interface ShapeD303 { label: string; title: string; summary: string } - -type Combined303 = ShapeA303 & ShapeB303 & ShapeC303 & ShapeD303; -type OptionalAll303 = { [K in keyof Combined303]?: Combined303[K] }; -type RequiredAll303 = { [K in keyof Combined303]-?: Combined303[K] }; -type ReadonlyAll303 = { readonly [K in keyof Combined303]: Combined303[K] }; -type NullableAll303 = { [K in keyof Combined303]: Combined303[K] | null }; +type EV_0303 = Val_0303; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString303 = T extends string ? true : false; -type IsNumber303 = T extends number ? true : false; -type TypeName303 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames303 = { - [K in keyof BigRecord303]: TypeName303; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb303 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource303 = "user" | "post" | "comment" | "tag" | "category"; -type Action303 = `${Verb303}_${Resource303}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise303 = T extends Promise ? UnwrapPromise303 : T; -type UnwrapArray303 = T extends (infer U)[] ? UnwrapArray303 : T; -type Head303 = T extends [infer H, ...infer _] ? H : never; -type Tail303 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation303 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation303>] - : never; +interface Registry_03_03 { + entities: Map; + validators: EV_0303; + paths: Set; + merged: DeepMerge_0303; +} -type SmallUnion303 = "a" | "b" | "c" | "d"; -type AllPerms303 = Permutation303; +type CK_0303 = `p03.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig303, - Flat303, - FR303, - BigUnion303, - ExtractAlpha303, - ExcludeZulu303, - OptionalAll303, - RequiredAll303, - ReadonlyAll303, - NullableAll303, - TypeNames303, - Action303, - AllPerms303, -}; +export type { Entity_03_03, Registry_03_03, CK_0303, EP_0303, EV_0303, DeepMerge_0303 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts index 80309070..5438f1b8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-04.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-04 (seed 304) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-04 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0304 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0304 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord304 { - a304: { x: number; y: string; z: boolean }; - b304: { p: string[]; q: Record }; - c304: { nested: { deep: { deeper: { deepest: string } } } }; - d304: number; - e304: string; - f304: boolean; - g304: null; - h304: undefined; - i304: bigint; - j304: symbol; +interface Entity_03_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_04 | null; children: Entity_03_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0304: number; y0304: string; z0304: boolean }; } -type PartialBig304 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten304 = T extends Array ? Flatten304 : T; -type Nested304 = number[][][][][][][][][][]; -type Flat304 = Flatten304; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly304 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly304 : T[K]; -}; -type DeepRequired304 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired304 : T[K]; +type Path_0304 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0304}` }[keyof T & string] : never; +type EP_0304 = Path_0304; + +type Val_0304 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0304 } + : T[K] extends object ? { t: 'o'; props: Val_0304 } + : { t: 'u' }; }; -type FR304 = DeepReadonly304>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion304 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha304 = Extract; -type ExcludeZulu304 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA304 { width: number; height: number; depth: number } -interface ShapeB304 { color: string; opacity: number; blend: string } -interface ShapeC304 { x: number; y: number; z: number; w: number } -interface ShapeD304 { label: string; title: string; summary: string } - -type Combined304 = ShapeA304 & ShapeB304 & ShapeC304 & ShapeD304; -type OptionalAll304 = { [K in keyof Combined304]?: Combined304[K] }; -type RequiredAll304 = { [K in keyof Combined304]-?: Combined304[K] }; -type ReadonlyAll304 = { readonly [K in keyof Combined304]: Combined304[K] }; -type NullableAll304 = { [K in keyof Combined304]: Combined304[K] | null }; +type EV_0304 = Val_0304; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString304 = T extends string ? true : false; -type IsNumber304 = T extends number ? true : false; -type TypeName304 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames304 = { - [K in keyof BigRecord304]: TypeName304; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb304 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource304 = "user" | "post" | "comment" | "tag" | "category"; -type Action304 = `${Verb304}_${Resource304}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise304 = T extends Promise ? UnwrapPromise304 : T; -type UnwrapArray304 = T extends (infer U)[] ? UnwrapArray304 : T; -type Head304 = T extends [infer H, ...infer _] ? H : never; -type Tail304 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation304 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation304>] - : never; +interface Registry_03_04 { + entities: Map; + validators: EV_0304; + paths: Set; + merged: DeepMerge_0304; +} -type SmallUnion304 = "a" | "b" | "c" | "d"; -type AllPerms304 = Permutation304; +type CK_0304 = `p03.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig304, - Flat304, - FR304, - BigUnion304, - ExtractAlpha304, - ExcludeZulu304, - OptionalAll304, - RequiredAll304, - ReadonlyAll304, - NullableAll304, - TypeNames304, - Action304, - AllPerms304, -}; +export type { Entity_03_04, Registry_03_04, CK_0304, EP_0304, EV_0304, DeepMerge_0304 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts index 521b868c..31242f5d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-05.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-05 (seed 305) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-05 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0305 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0305 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord305 { - a305: { x: number; y: string; z: boolean }; - b305: { p: string[]; q: Record }; - c305: { nested: { deep: { deeper: { deepest: string } } } }; - d305: number; - e305: string; - f305: boolean; - g305: null; - h305: undefined; - i305: bigint; - j305: symbol; +interface Entity_03_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_05 | null; children: Entity_03_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0305: number; y0305: string; z0305: boolean }; } -type PartialBig305 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten305 = T extends Array ? Flatten305 : T; -type Nested305 = number[][][][][][][][][][]; -type Flat305 = Flatten305; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly305 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly305 : T[K]; -}; -type DeepRequired305 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired305 : T[K]; +type Path_0305 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0305}` }[keyof T & string] : never; +type EP_0305 = Path_0305; + +type Val_0305 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0305 } + : T[K] extends object ? { t: 'o'; props: Val_0305 } + : { t: 'u' }; }; -type FR305 = DeepReadonly305>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion305 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha305 = Extract; -type ExcludeZulu305 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA305 { width: number; height: number; depth: number } -interface ShapeB305 { color: string; opacity: number; blend: string } -interface ShapeC305 { x: number; y: number; z: number; w: number } -interface ShapeD305 { label: string; title: string; summary: string } - -type Combined305 = ShapeA305 & ShapeB305 & ShapeC305 & ShapeD305; -type OptionalAll305 = { [K in keyof Combined305]?: Combined305[K] }; -type RequiredAll305 = { [K in keyof Combined305]-?: Combined305[K] }; -type ReadonlyAll305 = { readonly [K in keyof Combined305]: Combined305[K] }; -type NullableAll305 = { [K in keyof Combined305]: Combined305[K] | null }; +type EV_0305 = Val_0305; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString305 = T extends string ? true : false; -type IsNumber305 = T extends number ? true : false; -type TypeName305 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames305 = { - [K in keyof BigRecord305]: TypeName305; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb305 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource305 = "user" | "post" | "comment" | "tag" | "category"; -type Action305 = `${Verb305}_${Resource305}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise305 = T extends Promise ? UnwrapPromise305 : T; -type UnwrapArray305 = T extends (infer U)[] ? UnwrapArray305 : T; -type Head305 = T extends [infer H, ...infer _] ? H : never; -type Tail305 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation305 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation305>] - : never; +interface Registry_03_05 { + entities: Map; + validators: EV_0305; + paths: Set; + merged: DeepMerge_0305; +} -type SmallUnion305 = "a" | "b" | "c" | "d"; -type AllPerms305 = Permutation305; +type CK_0305 = `p03.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig305, - Flat305, - FR305, - BigUnion305, - ExtractAlpha305, - ExcludeZulu305, - OptionalAll305, - RequiredAll305, - ReadonlyAll305, - NullableAll305, - TypeNames305, - Action305, - AllPerms305, -}; +export type { Entity_03_05, Registry_03_05, CK_0305, EP_0305, EV_0305, DeepMerge_0305 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts index c8a46d10..b934ee2f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-06.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-06 (seed 306) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-06 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0306 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0306 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord306 { - a306: { x: number; y: string; z: boolean }; - b306: { p: string[]; q: Record }; - c306: { nested: { deep: { deeper: { deepest: string } } } }; - d306: number; - e306: string; - f306: boolean; - g306: null; - h306: undefined; - i306: bigint; - j306: symbol; +interface Entity_03_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_06 | null; children: Entity_03_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0306: number; y0306: string; z0306: boolean }; } -type PartialBig306 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten306 = T extends Array ? Flatten306 : T; -type Nested306 = number[][][][][][][][][][]; -type Flat306 = Flatten306; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly306 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly306 : T[K]; -}; -type DeepRequired306 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired306 : T[K]; +type Path_0306 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0306}` }[keyof T & string] : never; +type EP_0306 = Path_0306; + +type Val_0306 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0306 } + : T[K] extends object ? { t: 'o'; props: Val_0306 } + : { t: 'u' }; }; -type FR306 = DeepReadonly306>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion306 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha306 = Extract; -type ExcludeZulu306 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA306 { width: number; height: number; depth: number } -interface ShapeB306 { color: string; opacity: number; blend: string } -interface ShapeC306 { x: number; y: number; z: number; w: number } -interface ShapeD306 { label: string; title: string; summary: string } - -type Combined306 = ShapeA306 & ShapeB306 & ShapeC306 & ShapeD306; -type OptionalAll306 = { [K in keyof Combined306]?: Combined306[K] }; -type RequiredAll306 = { [K in keyof Combined306]-?: Combined306[K] }; -type ReadonlyAll306 = { readonly [K in keyof Combined306]: Combined306[K] }; -type NullableAll306 = { [K in keyof Combined306]: Combined306[K] | null }; +type EV_0306 = Val_0306; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString306 = T extends string ? true : false; -type IsNumber306 = T extends number ? true : false; -type TypeName306 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames306 = { - [K in keyof BigRecord306]: TypeName306; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb306 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource306 = "user" | "post" | "comment" | "tag" | "category"; -type Action306 = `${Verb306}_${Resource306}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise306 = T extends Promise ? UnwrapPromise306 : T; -type UnwrapArray306 = T extends (infer U)[] ? UnwrapArray306 : T; -type Head306 = T extends [infer H, ...infer _] ? H : never; -type Tail306 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation306 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation306>] - : never; +interface Registry_03_06 { + entities: Map; + validators: EV_0306; + paths: Set; + merged: DeepMerge_0306; +} -type SmallUnion306 = "a" | "b" | "c" | "d"; -type AllPerms306 = Permutation306; +type CK_0306 = `p03.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig306, - Flat306, - FR306, - BigUnion306, - ExtractAlpha306, - ExcludeZulu306, - OptionalAll306, - RequiredAll306, - ReadonlyAll306, - NullableAll306, - TypeNames306, - Action306, - AllPerms306, -}; +export type { Entity_03_06, Registry_03_06, CK_0306, EP_0306, EV_0306, DeepMerge_0306 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts index 6a0b77db..45a6e793 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-07.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-07 (seed 307) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-07 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0307 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0307 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord307 { - a307: { x: number; y: string; z: boolean }; - b307: { p: string[]; q: Record }; - c307: { nested: { deep: { deeper: { deepest: string } } } }; - d307: number; - e307: string; - f307: boolean; - g307: null; - h307: undefined; - i307: bigint; - j307: symbol; +interface Entity_03_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_07 | null; children: Entity_03_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0307: number; y0307: string; z0307: boolean }; } -type PartialBig307 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten307 = T extends Array ? Flatten307 : T; -type Nested307 = number[][][][][][][][][][]; -type Flat307 = Flatten307; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly307 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly307 : T[K]; -}; -type DeepRequired307 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired307 : T[K]; +type Path_0307 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0307}` }[keyof T & string] : never; +type EP_0307 = Path_0307; + +type Val_0307 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0307 } + : T[K] extends object ? { t: 'o'; props: Val_0307 } + : { t: 'u' }; }; -type FR307 = DeepReadonly307>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion307 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha307 = Extract; -type ExcludeZulu307 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA307 { width: number; height: number; depth: number } -interface ShapeB307 { color: string; opacity: number; blend: string } -interface ShapeC307 { x: number; y: number; z: number; w: number } -interface ShapeD307 { label: string; title: string; summary: string } - -type Combined307 = ShapeA307 & ShapeB307 & ShapeC307 & ShapeD307; -type OptionalAll307 = { [K in keyof Combined307]?: Combined307[K] }; -type RequiredAll307 = { [K in keyof Combined307]-?: Combined307[K] }; -type ReadonlyAll307 = { readonly [K in keyof Combined307]: Combined307[K] }; -type NullableAll307 = { [K in keyof Combined307]: Combined307[K] | null }; +type EV_0307 = Val_0307; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString307 = T extends string ? true : false; -type IsNumber307 = T extends number ? true : false; -type TypeName307 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames307 = { - [K in keyof BigRecord307]: TypeName307; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb307 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource307 = "user" | "post" | "comment" | "tag" | "category"; -type Action307 = `${Verb307}_${Resource307}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise307 = T extends Promise ? UnwrapPromise307 : T; -type UnwrapArray307 = T extends (infer U)[] ? UnwrapArray307 : T; -type Head307 = T extends [infer H, ...infer _] ? H : never; -type Tail307 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation307 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation307>] - : never; +interface Registry_03_07 { + entities: Map; + validators: EV_0307; + paths: Set; + merged: DeepMerge_0307; +} -type SmallUnion307 = "a" | "b" | "c" | "d"; -type AllPerms307 = Permutation307; +type CK_0307 = `p03.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig307, - Flat307, - FR307, - BigUnion307, - ExtractAlpha307, - ExcludeZulu307, - OptionalAll307, - RequiredAll307, - ReadonlyAll307, - NullableAll307, - TypeNames307, - Action307, - AllPerms307, -}; +export type { Entity_03_07, Registry_03_07, CK_0307, EP_0307, EV_0307, DeepMerge_0307 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts index dccf408c..1f459e99 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-08.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-08 (seed 308) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-08 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0308 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0308 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord308 { - a308: { x: number; y: string; z: boolean }; - b308: { p: string[]; q: Record }; - c308: { nested: { deep: { deeper: { deepest: string } } } }; - d308: number; - e308: string; - f308: boolean; - g308: null; - h308: undefined; - i308: bigint; - j308: symbol; +interface Entity_03_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_08 | null; children: Entity_03_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0308: number; y0308: string; z0308: boolean }; } -type PartialBig308 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten308 = T extends Array ? Flatten308 : T; -type Nested308 = number[][][][][][][][][][]; -type Flat308 = Flatten308; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly308 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly308 : T[K]; -}; -type DeepRequired308 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired308 : T[K]; +type Path_0308 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0308}` }[keyof T & string] : never; +type EP_0308 = Path_0308; + +type Val_0308 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0308 } + : T[K] extends object ? { t: 'o'; props: Val_0308 } + : { t: 'u' }; }; -type FR308 = DeepReadonly308>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion308 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha308 = Extract; -type ExcludeZulu308 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA308 { width: number; height: number; depth: number } -interface ShapeB308 { color: string; opacity: number; blend: string } -interface ShapeC308 { x: number; y: number; z: number; w: number } -interface ShapeD308 { label: string; title: string; summary: string } - -type Combined308 = ShapeA308 & ShapeB308 & ShapeC308 & ShapeD308; -type OptionalAll308 = { [K in keyof Combined308]?: Combined308[K] }; -type RequiredAll308 = { [K in keyof Combined308]-?: Combined308[K] }; -type ReadonlyAll308 = { readonly [K in keyof Combined308]: Combined308[K] }; -type NullableAll308 = { [K in keyof Combined308]: Combined308[K] | null }; +type EV_0308 = Val_0308; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString308 = T extends string ? true : false; -type IsNumber308 = T extends number ? true : false; -type TypeName308 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames308 = { - [K in keyof BigRecord308]: TypeName308; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb308 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource308 = "user" | "post" | "comment" | "tag" | "category"; -type Action308 = `${Verb308}_${Resource308}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise308 = T extends Promise ? UnwrapPromise308 : T; -type UnwrapArray308 = T extends (infer U)[] ? UnwrapArray308 : T; -type Head308 = T extends [infer H, ...infer _] ? H : never; -type Tail308 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation308 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation308>] - : never; +interface Registry_03_08 { + entities: Map; + validators: EV_0308; + paths: Set; + merged: DeepMerge_0308; +} -type SmallUnion308 = "a" | "b" | "c" | "d"; -type AllPerms308 = Permutation308; +type CK_0308 = `p03.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig308, - Flat308, - FR308, - BigUnion308, - ExtractAlpha308, - ExcludeZulu308, - OptionalAll308, - RequiredAll308, - ReadonlyAll308, - NullableAll308, - TypeNames308, - Action308, - AllPerms308, -}; +export type { Entity_03_08, Registry_03_08, CK_0308, EP_0308, EV_0308, DeepMerge_0308 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts index 37cc41b7..75280eff 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-09.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-09 (seed 309) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-09 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0309 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0309 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord309 { - a309: { x: number; y: string; z: boolean }; - b309: { p: string[]; q: Record }; - c309: { nested: { deep: { deeper: { deepest: string } } } }; - d309: number; - e309: string; - f309: boolean; - g309: null; - h309: undefined; - i309: bigint; - j309: symbol; +interface Entity_03_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_09 | null; children: Entity_03_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0309: number; y0309: string; z0309: boolean }; } -type PartialBig309 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten309 = T extends Array ? Flatten309 : T; -type Nested309 = number[][][][][][][][][][]; -type Flat309 = Flatten309; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly309 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly309 : T[K]; -}; -type DeepRequired309 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired309 : T[K]; +type Path_0309 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0309}` }[keyof T & string] : never; +type EP_0309 = Path_0309; + +type Val_0309 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0309 } + : T[K] extends object ? { t: 'o'; props: Val_0309 } + : { t: 'u' }; }; -type FR309 = DeepReadonly309>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion309 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha309 = Extract; -type ExcludeZulu309 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA309 { width: number; height: number; depth: number } -interface ShapeB309 { color: string; opacity: number; blend: string } -interface ShapeC309 { x: number; y: number; z: number; w: number } -interface ShapeD309 { label: string; title: string; summary: string } - -type Combined309 = ShapeA309 & ShapeB309 & ShapeC309 & ShapeD309; -type OptionalAll309 = { [K in keyof Combined309]?: Combined309[K] }; -type RequiredAll309 = { [K in keyof Combined309]-?: Combined309[K] }; -type ReadonlyAll309 = { readonly [K in keyof Combined309]: Combined309[K] }; -type NullableAll309 = { [K in keyof Combined309]: Combined309[K] | null }; +type EV_0309 = Val_0309; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString309 = T extends string ? true : false; -type IsNumber309 = T extends number ? true : false; -type TypeName309 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames309 = { - [K in keyof BigRecord309]: TypeName309; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb309 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource309 = "user" | "post" | "comment" | "tag" | "category"; -type Action309 = `${Verb309}_${Resource309}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise309 = T extends Promise ? UnwrapPromise309 : T; -type UnwrapArray309 = T extends (infer U)[] ? UnwrapArray309 : T; -type Head309 = T extends [infer H, ...infer _] ? H : never; -type Tail309 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation309 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation309>] - : never; +interface Registry_03_09 { + entities: Map; + validators: EV_0309; + paths: Set; + merged: DeepMerge_0309; +} -type SmallUnion309 = "a" | "b" | "c" | "d"; -type AllPerms309 = Permutation309; +type CK_0309 = `p03.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig309, - Flat309, - FR309, - BigUnion309, - ExtractAlpha309, - ExcludeZulu309, - OptionalAll309, - RequiredAll309, - ReadonlyAll309, - NullableAll309, - TypeNames309, - Action309, - AllPerms309, -}; +export type { Entity_03_09, Registry_03_09, CK_0309, EP_0309, EV_0309, DeepMerge_0309 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts index 5bf5ae12..fc798035 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-10.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-10 (seed 310) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-10 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0310 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0310 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord310 { - a310: { x: number; y: string; z: boolean }; - b310: { p: string[]; q: Record }; - c310: { nested: { deep: { deeper: { deepest: string } } } }; - d310: number; - e310: string; - f310: boolean; - g310: null; - h310: undefined; - i310: bigint; - j310: symbol; +interface Entity_03_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_10 | null; children: Entity_03_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0310: number; y0310: string; z0310: boolean }; } -type PartialBig310 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten310 = T extends Array ? Flatten310 : T; -type Nested310 = number[][][][][][][][][][]; -type Flat310 = Flatten310; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly310 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly310 : T[K]; -}; -type DeepRequired310 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired310 : T[K]; +type Path_0310 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0310}` }[keyof T & string] : never; +type EP_0310 = Path_0310; + +type Val_0310 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0310 } + : T[K] extends object ? { t: 'o'; props: Val_0310 } + : { t: 'u' }; }; -type FR310 = DeepReadonly310>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion310 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha310 = Extract; -type ExcludeZulu310 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA310 { width: number; height: number; depth: number } -interface ShapeB310 { color: string; opacity: number; blend: string } -interface ShapeC310 { x: number; y: number; z: number; w: number } -interface ShapeD310 { label: string; title: string; summary: string } - -type Combined310 = ShapeA310 & ShapeB310 & ShapeC310 & ShapeD310; -type OptionalAll310 = { [K in keyof Combined310]?: Combined310[K] }; -type RequiredAll310 = { [K in keyof Combined310]-?: Combined310[K] }; -type ReadonlyAll310 = { readonly [K in keyof Combined310]: Combined310[K] }; -type NullableAll310 = { [K in keyof Combined310]: Combined310[K] | null }; +type EV_0310 = Val_0310; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString310 = T extends string ? true : false; -type IsNumber310 = T extends number ? true : false; -type TypeName310 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames310 = { - [K in keyof BigRecord310]: TypeName310; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb310 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource310 = "user" | "post" | "comment" | "tag" | "category"; -type Action310 = `${Verb310}_${Resource310}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise310 = T extends Promise ? UnwrapPromise310 : T; -type UnwrapArray310 = T extends (infer U)[] ? UnwrapArray310 : T; -type Head310 = T extends [infer H, ...infer _] ? H : never; -type Tail310 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation310 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation310>] - : never; +interface Registry_03_10 { + entities: Map; + validators: EV_0310; + paths: Set; + merged: DeepMerge_0310; +} -type SmallUnion310 = "a" | "b" | "c" | "d"; -type AllPerms310 = Permutation310; +type CK_0310 = `p03.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig310, - Flat310, - FR310, - BigUnion310, - ExtractAlpha310, - ExcludeZulu310, - OptionalAll310, - RequiredAll310, - ReadonlyAll310, - NullableAll310, - TypeNames310, - Action310, - AllPerms310, -}; +export type { Entity_03_10, Registry_03_10, CK_0310, EP_0310, EV_0310, DeepMerge_0310 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts index a4f9e1b4..d569d0d4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-11.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-11 (seed 311) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-11 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0311 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0311 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord311 { - a311: { x: number; y: string; z: boolean }; - b311: { p: string[]; q: Record }; - c311: { nested: { deep: { deeper: { deepest: string } } } }; - d311: number; - e311: string; - f311: boolean; - g311: null; - h311: undefined; - i311: bigint; - j311: symbol; +interface Entity_03_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_11 | null; children: Entity_03_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0311: number; y0311: string; z0311: boolean }; } -type PartialBig311 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten311 = T extends Array ? Flatten311 : T; -type Nested311 = number[][][][][][][][][][]; -type Flat311 = Flatten311; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly311 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly311 : T[K]; -}; -type DeepRequired311 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired311 : T[K]; +type Path_0311 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0311}` }[keyof T & string] : never; +type EP_0311 = Path_0311; + +type Val_0311 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0311 } + : T[K] extends object ? { t: 'o'; props: Val_0311 } + : { t: 'u' }; }; -type FR311 = DeepReadonly311>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion311 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha311 = Extract; -type ExcludeZulu311 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA311 { width: number; height: number; depth: number } -interface ShapeB311 { color: string; opacity: number; blend: string } -interface ShapeC311 { x: number; y: number; z: number; w: number } -interface ShapeD311 { label: string; title: string; summary: string } - -type Combined311 = ShapeA311 & ShapeB311 & ShapeC311 & ShapeD311; -type OptionalAll311 = { [K in keyof Combined311]?: Combined311[K] }; -type RequiredAll311 = { [K in keyof Combined311]-?: Combined311[K] }; -type ReadonlyAll311 = { readonly [K in keyof Combined311]: Combined311[K] }; -type NullableAll311 = { [K in keyof Combined311]: Combined311[K] | null }; +type EV_0311 = Val_0311; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString311 = T extends string ? true : false; -type IsNumber311 = T extends number ? true : false; -type TypeName311 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames311 = { - [K in keyof BigRecord311]: TypeName311; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb311 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource311 = "user" | "post" | "comment" | "tag" | "category"; -type Action311 = `${Verb311}_${Resource311}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise311 = T extends Promise ? UnwrapPromise311 : T; -type UnwrapArray311 = T extends (infer U)[] ? UnwrapArray311 : T; -type Head311 = T extends [infer H, ...infer _] ? H : never; -type Tail311 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation311 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation311>] - : never; +interface Registry_03_11 { + entities: Map; + validators: EV_0311; + paths: Set; + merged: DeepMerge_0311; +} -type SmallUnion311 = "a" | "b" | "c" | "d"; -type AllPerms311 = Permutation311; +type CK_0311 = `p03.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig311, - Flat311, - FR311, - BigUnion311, - ExtractAlpha311, - ExcludeZulu311, - OptionalAll311, - RequiredAll311, - ReadonlyAll311, - NullableAll311, - TypeNames311, - Action311, - AllPerms311, -}; +export type { Entity_03_11, Registry_03_11, CK_0311, EP_0311, EV_0311, DeepMerge_0311 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts index 80fc058b..a1042591 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-12.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-12 (seed 312) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-12 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0312 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0312 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord312 { - a312: { x: number; y: string; z: boolean }; - b312: { p: string[]; q: Record }; - c312: { nested: { deep: { deeper: { deepest: string } } } }; - d312: number; - e312: string; - f312: boolean; - g312: null; - h312: undefined; - i312: bigint; - j312: symbol; +interface Entity_03_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_12 | null; children: Entity_03_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0312: number; y0312: string; z0312: boolean }; } -type PartialBig312 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten312 = T extends Array ? Flatten312 : T; -type Nested312 = number[][][][][][][][][][]; -type Flat312 = Flatten312; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly312 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly312 : T[K]; -}; -type DeepRequired312 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired312 : T[K]; +type Path_0312 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0312}` }[keyof T & string] : never; +type EP_0312 = Path_0312; + +type Val_0312 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0312 } + : T[K] extends object ? { t: 'o'; props: Val_0312 } + : { t: 'u' }; }; -type FR312 = DeepReadonly312>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion312 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha312 = Extract; -type ExcludeZulu312 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA312 { width: number; height: number; depth: number } -interface ShapeB312 { color: string; opacity: number; blend: string } -interface ShapeC312 { x: number; y: number; z: number; w: number } -interface ShapeD312 { label: string; title: string; summary: string } - -type Combined312 = ShapeA312 & ShapeB312 & ShapeC312 & ShapeD312; -type OptionalAll312 = { [K in keyof Combined312]?: Combined312[K] }; -type RequiredAll312 = { [K in keyof Combined312]-?: Combined312[K] }; -type ReadonlyAll312 = { readonly [K in keyof Combined312]: Combined312[K] }; -type NullableAll312 = { [K in keyof Combined312]: Combined312[K] | null }; +type EV_0312 = Val_0312; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString312 = T extends string ? true : false; -type IsNumber312 = T extends number ? true : false; -type TypeName312 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames312 = { - [K in keyof BigRecord312]: TypeName312; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb312 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource312 = "user" | "post" | "comment" | "tag" | "category"; -type Action312 = `${Verb312}_${Resource312}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise312 = T extends Promise ? UnwrapPromise312 : T; -type UnwrapArray312 = T extends (infer U)[] ? UnwrapArray312 : T; -type Head312 = T extends [infer H, ...infer _] ? H : never; -type Tail312 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation312 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation312>] - : never; +interface Registry_03_12 { + entities: Map; + validators: EV_0312; + paths: Set; + merged: DeepMerge_0312; +} -type SmallUnion312 = "a" | "b" | "c" | "d"; -type AllPerms312 = Permutation312; +type CK_0312 = `p03.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig312, - Flat312, - FR312, - BigUnion312, - ExtractAlpha312, - ExcludeZulu312, - OptionalAll312, - RequiredAll312, - ReadonlyAll312, - NullableAll312, - TypeNames312, - Action312, - AllPerms312, -}; +export type { Entity_03_12, Registry_03_12, CK_0312, EP_0312, EV_0312, DeepMerge_0312 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts index 905347d5..c4b702e6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-13.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-13 (seed 313) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-13 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0313 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0313 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord313 { - a313: { x: number; y: string; z: boolean }; - b313: { p: string[]; q: Record }; - c313: { nested: { deep: { deeper: { deepest: string } } } }; - d313: number; - e313: string; - f313: boolean; - g313: null; - h313: undefined; - i313: bigint; - j313: symbol; +interface Entity_03_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_13 | null; children: Entity_03_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0313: number; y0313: string; z0313: boolean }; } -type PartialBig313 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten313 = T extends Array ? Flatten313 : T; -type Nested313 = number[][][][][][][][][][]; -type Flat313 = Flatten313; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly313 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly313 : T[K]; -}; -type DeepRequired313 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired313 : T[K]; +type Path_0313 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0313}` }[keyof T & string] : never; +type EP_0313 = Path_0313; + +type Val_0313 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0313 } + : T[K] extends object ? { t: 'o'; props: Val_0313 } + : { t: 'u' }; }; -type FR313 = DeepReadonly313>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion313 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha313 = Extract; -type ExcludeZulu313 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA313 { width: number; height: number; depth: number } -interface ShapeB313 { color: string; opacity: number; blend: string } -interface ShapeC313 { x: number; y: number; z: number; w: number } -interface ShapeD313 { label: string; title: string; summary: string } - -type Combined313 = ShapeA313 & ShapeB313 & ShapeC313 & ShapeD313; -type OptionalAll313 = { [K in keyof Combined313]?: Combined313[K] }; -type RequiredAll313 = { [K in keyof Combined313]-?: Combined313[K] }; -type ReadonlyAll313 = { readonly [K in keyof Combined313]: Combined313[K] }; -type NullableAll313 = { [K in keyof Combined313]: Combined313[K] | null }; +type EV_0313 = Val_0313; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString313 = T extends string ? true : false; -type IsNumber313 = T extends number ? true : false; -type TypeName313 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames313 = { - [K in keyof BigRecord313]: TypeName313; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb313 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource313 = "user" | "post" | "comment" | "tag" | "category"; -type Action313 = `${Verb313}_${Resource313}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise313 = T extends Promise ? UnwrapPromise313 : T; -type UnwrapArray313 = T extends (infer U)[] ? UnwrapArray313 : T; -type Head313 = T extends [infer H, ...infer _] ? H : never; -type Tail313 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation313 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation313>] - : never; +interface Registry_03_13 { + entities: Map; + validators: EV_0313; + paths: Set; + merged: DeepMerge_0313; +} -type SmallUnion313 = "a" | "b" | "c" | "d"; -type AllPerms313 = Permutation313; +type CK_0313 = `p03.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig313, - Flat313, - FR313, - BigUnion313, - ExtractAlpha313, - ExcludeZulu313, - OptionalAll313, - RequiredAll313, - ReadonlyAll313, - NullableAll313, - TypeNames313, - Action313, - AllPerms313, -}; +export type { Entity_03_13, Registry_03_13, CK_0313, EP_0313, EV_0313, DeepMerge_0313 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts index 35f1ade3..0a7bc4ad 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-14.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-14 (seed 314) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-14 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0314 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0314 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord314 { - a314: { x: number; y: string; z: boolean }; - b314: { p: string[]; q: Record }; - c314: { nested: { deep: { deeper: { deepest: string } } } }; - d314: number; - e314: string; - f314: boolean; - g314: null; - h314: undefined; - i314: bigint; - j314: symbol; +interface Entity_03_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_14 | null; children: Entity_03_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0314: number; y0314: string; z0314: boolean }; } -type PartialBig314 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten314 = T extends Array ? Flatten314 : T; -type Nested314 = number[][][][][][][][][][]; -type Flat314 = Flatten314; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly314 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly314 : T[K]; -}; -type DeepRequired314 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired314 : T[K]; +type Path_0314 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0314}` }[keyof T & string] : never; +type EP_0314 = Path_0314; + +type Val_0314 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0314 } + : T[K] extends object ? { t: 'o'; props: Val_0314 } + : { t: 'u' }; }; -type FR314 = DeepReadonly314>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion314 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha314 = Extract; -type ExcludeZulu314 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA314 { width: number; height: number; depth: number } -interface ShapeB314 { color: string; opacity: number; blend: string } -interface ShapeC314 { x: number; y: number; z: number; w: number } -interface ShapeD314 { label: string; title: string; summary: string } - -type Combined314 = ShapeA314 & ShapeB314 & ShapeC314 & ShapeD314; -type OptionalAll314 = { [K in keyof Combined314]?: Combined314[K] }; -type RequiredAll314 = { [K in keyof Combined314]-?: Combined314[K] }; -type ReadonlyAll314 = { readonly [K in keyof Combined314]: Combined314[K] }; -type NullableAll314 = { [K in keyof Combined314]: Combined314[K] | null }; +type EV_0314 = Val_0314; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString314 = T extends string ? true : false; -type IsNumber314 = T extends number ? true : false; -type TypeName314 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames314 = { - [K in keyof BigRecord314]: TypeName314; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb314 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource314 = "user" | "post" | "comment" | "tag" | "category"; -type Action314 = `${Verb314}_${Resource314}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise314 = T extends Promise ? UnwrapPromise314 : T; -type UnwrapArray314 = T extends (infer U)[] ? UnwrapArray314 : T; -type Head314 = T extends [infer H, ...infer _] ? H : never; -type Tail314 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation314 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation314>] - : never; +interface Registry_03_14 { + entities: Map; + validators: EV_0314; + paths: Set; + merged: DeepMerge_0314; +} -type SmallUnion314 = "a" | "b" | "c" | "d"; -type AllPerms314 = Permutation314; +type CK_0314 = `p03.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig314, - Flat314, - FR314, - BigUnion314, - ExtractAlpha314, - ExcludeZulu314, - OptionalAll314, - RequiredAll314, - ReadonlyAll314, - NullableAll314, - TypeNames314, - Action314, - AllPerms314, -}; +export type { Entity_03_14, Registry_03_14, CK_0314, EP_0314, EV_0314, DeepMerge_0314 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts index a0b3994c..70afc7ad 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-15.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-15 (seed 315) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-15 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0315 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0315 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord315 { - a315: { x: number; y: string; z: boolean }; - b315: { p: string[]; q: Record }; - c315: { nested: { deep: { deeper: { deepest: string } } } }; - d315: number; - e315: string; - f315: boolean; - g315: null; - h315: undefined; - i315: bigint; - j315: symbol; +interface Entity_03_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_15 | null; children: Entity_03_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0315: number; y0315: string; z0315: boolean }; } -type PartialBig315 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten315 = T extends Array ? Flatten315 : T; -type Nested315 = number[][][][][][][][][][]; -type Flat315 = Flatten315; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly315 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly315 : T[K]; -}; -type DeepRequired315 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired315 : T[K]; +type Path_0315 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0315}` }[keyof T & string] : never; +type EP_0315 = Path_0315; + +type Val_0315 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0315 } + : T[K] extends object ? { t: 'o'; props: Val_0315 } + : { t: 'u' }; }; -type FR315 = DeepReadonly315>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion315 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha315 = Extract; -type ExcludeZulu315 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA315 { width: number; height: number; depth: number } -interface ShapeB315 { color: string; opacity: number; blend: string } -interface ShapeC315 { x: number; y: number; z: number; w: number } -interface ShapeD315 { label: string; title: string; summary: string } - -type Combined315 = ShapeA315 & ShapeB315 & ShapeC315 & ShapeD315; -type OptionalAll315 = { [K in keyof Combined315]?: Combined315[K] }; -type RequiredAll315 = { [K in keyof Combined315]-?: Combined315[K] }; -type ReadonlyAll315 = { readonly [K in keyof Combined315]: Combined315[K] }; -type NullableAll315 = { [K in keyof Combined315]: Combined315[K] | null }; +type EV_0315 = Val_0315; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString315 = T extends string ? true : false; -type IsNumber315 = T extends number ? true : false; -type TypeName315 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames315 = { - [K in keyof BigRecord315]: TypeName315; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb315 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource315 = "user" | "post" | "comment" | "tag" | "category"; -type Action315 = `${Verb315}_${Resource315}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise315 = T extends Promise ? UnwrapPromise315 : T; -type UnwrapArray315 = T extends (infer U)[] ? UnwrapArray315 : T; -type Head315 = T extends [infer H, ...infer _] ? H : never; -type Tail315 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation315 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation315>] - : never; +interface Registry_03_15 { + entities: Map; + validators: EV_0315; + paths: Set; + merged: DeepMerge_0315; +} -type SmallUnion315 = "a" | "b" | "c" | "d"; -type AllPerms315 = Permutation315; +type CK_0315 = `p03.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig315, - Flat315, - FR315, - BigUnion315, - ExtractAlpha315, - ExcludeZulu315, - OptionalAll315, - RequiredAll315, - ReadonlyAll315, - NullableAll315, - TypeNames315, - Action315, - AllPerms315, -}; +export type { Entity_03_15, Registry_03_15, CK_0315, EP_0315, EV_0315, DeepMerge_0315 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts index 48e8cbd8..0ff1b862 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-16.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-16 (seed 316) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-16 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0316 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0316 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord316 { - a316: { x: number; y: string; z: boolean }; - b316: { p: string[]; q: Record }; - c316: { nested: { deep: { deeper: { deepest: string } } } }; - d316: number; - e316: string; - f316: boolean; - g316: null; - h316: undefined; - i316: bigint; - j316: symbol; +interface Entity_03_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_16 | null; children: Entity_03_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0316: number; y0316: string; z0316: boolean }; } -type PartialBig316 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten316 = T extends Array ? Flatten316 : T; -type Nested316 = number[][][][][][][][][][]; -type Flat316 = Flatten316; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly316 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly316 : T[K]; -}; -type DeepRequired316 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired316 : T[K]; +type Path_0316 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0316}` }[keyof T & string] : never; +type EP_0316 = Path_0316; + +type Val_0316 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0316 } + : T[K] extends object ? { t: 'o'; props: Val_0316 } + : { t: 'u' }; }; -type FR316 = DeepReadonly316>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion316 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha316 = Extract; -type ExcludeZulu316 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA316 { width: number; height: number; depth: number } -interface ShapeB316 { color: string; opacity: number; blend: string } -interface ShapeC316 { x: number; y: number; z: number; w: number } -interface ShapeD316 { label: string; title: string; summary: string } - -type Combined316 = ShapeA316 & ShapeB316 & ShapeC316 & ShapeD316; -type OptionalAll316 = { [K in keyof Combined316]?: Combined316[K] }; -type RequiredAll316 = { [K in keyof Combined316]-?: Combined316[K] }; -type ReadonlyAll316 = { readonly [K in keyof Combined316]: Combined316[K] }; -type NullableAll316 = { [K in keyof Combined316]: Combined316[K] | null }; +type EV_0316 = Val_0316; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString316 = T extends string ? true : false; -type IsNumber316 = T extends number ? true : false; -type TypeName316 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames316 = { - [K in keyof BigRecord316]: TypeName316; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb316 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource316 = "user" | "post" | "comment" | "tag" | "category"; -type Action316 = `${Verb316}_${Resource316}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise316 = T extends Promise ? UnwrapPromise316 : T; -type UnwrapArray316 = T extends (infer U)[] ? UnwrapArray316 : T; -type Head316 = T extends [infer H, ...infer _] ? H : never; -type Tail316 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation316 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation316>] - : never; +interface Registry_03_16 { + entities: Map; + validators: EV_0316; + paths: Set; + merged: DeepMerge_0316; +} -type SmallUnion316 = "a" | "b" | "c" | "d"; -type AllPerms316 = Permutation316; +type CK_0316 = `p03.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig316, - Flat316, - FR316, - BigUnion316, - ExtractAlpha316, - ExcludeZulu316, - OptionalAll316, - RequiredAll316, - ReadonlyAll316, - NullableAll316, - TypeNames316, - Action316, - AllPerms316, -}; +export type { Entity_03_16, Registry_03_16, CK_0316, EP_0316, EV_0316, DeepMerge_0316 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts index 45d999c6..a3d3ca6b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-17.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-17 (seed 317) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-17 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0317 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0317 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord317 { - a317: { x: number; y: string; z: boolean }; - b317: { p: string[]; q: Record }; - c317: { nested: { deep: { deeper: { deepest: string } } } }; - d317: number; - e317: string; - f317: boolean; - g317: null; - h317: undefined; - i317: bigint; - j317: symbol; +interface Entity_03_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_17 | null; children: Entity_03_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0317: number; y0317: string; z0317: boolean }; } -type PartialBig317 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten317 = T extends Array ? Flatten317 : T; -type Nested317 = number[][][][][][][][][][]; -type Flat317 = Flatten317; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly317 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly317 : T[K]; -}; -type DeepRequired317 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired317 : T[K]; +type Path_0317 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0317}` }[keyof T & string] : never; +type EP_0317 = Path_0317; + +type Val_0317 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0317 } + : T[K] extends object ? { t: 'o'; props: Val_0317 } + : { t: 'u' }; }; -type FR317 = DeepReadonly317>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion317 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha317 = Extract; -type ExcludeZulu317 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA317 { width: number; height: number; depth: number } -interface ShapeB317 { color: string; opacity: number; blend: string } -interface ShapeC317 { x: number; y: number; z: number; w: number } -interface ShapeD317 { label: string; title: string; summary: string } - -type Combined317 = ShapeA317 & ShapeB317 & ShapeC317 & ShapeD317; -type OptionalAll317 = { [K in keyof Combined317]?: Combined317[K] }; -type RequiredAll317 = { [K in keyof Combined317]-?: Combined317[K] }; -type ReadonlyAll317 = { readonly [K in keyof Combined317]: Combined317[K] }; -type NullableAll317 = { [K in keyof Combined317]: Combined317[K] | null }; +type EV_0317 = Val_0317; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString317 = T extends string ? true : false; -type IsNumber317 = T extends number ? true : false; -type TypeName317 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames317 = { - [K in keyof BigRecord317]: TypeName317; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb317 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource317 = "user" | "post" | "comment" | "tag" | "category"; -type Action317 = `${Verb317}_${Resource317}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise317 = T extends Promise ? UnwrapPromise317 : T; -type UnwrapArray317 = T extends (infer U)[] ? UnwrapArray317 : T; -type Head317 = T extends [infer H, ...infer _] ? H : never; -type Tail317 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation317 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation317>] - : never; +interface Registry_03_17 { + entities: Map; + validators: EV_0317; + paths: Set; + merged: DeepMerge_0317; +} -type SmallUnion317 = "a" | "b" | "c" | "d"; -type AllPerms317 = Permutation317; +type CK_0317 = `p03.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig317, - Flat317, - FR317, - BigUnion317, - ExtractAlpha317, - ExcludeZulu317, - OptionalAll317, - RequiredAll317, - ReadonlyAll317, - NullableAll317, - TypeNames317, - Action317, - AllPerms317, -}; +export type { Entity_03_17, Registry_03_17, CK_0317, EP_0317, EV_0317, DeepMerge_0317 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts index 9e52641d..00005e0b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-18.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-18 (seed 318) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-18 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0318 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0318 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord318 { - a318: { x: number; y: string; z: boolean }; - b318: { p: string[]; q: Record }; - c318: { nested: { deep: { deeper: { deepest: string } } } }; - d318: number; - e318: string; - f318: boolean; - g318: null; - h318: undefined; - i318: bigint; - j318: symbol; +interface Entity_03_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_18 | null; children: Entity_03_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0318: number; y0318: string; z0318: boolean }; } -type PartialBig318 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten318 = T extends Array ? Flatten318 : T; -type Nested318 = number[][][][][][][][][][]; -type Flat318 = Flatten318; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly318 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly318 : T[K]; -}; -type DeepRequired318 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired318 : T[K]; +type Path_0318 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0318}` }[keyof T & string] : never; +type EP_0318 = Path_0318; + +type Val_0318 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0318 } + : T[K] extends object ? { t: 'o'; props: Val_0318 } + : { t: 'u' }; }; -type FR318 = DeepReadonly318>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion318 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha318 = Extract; -type ExcludeZulu318 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA318 { width: number; height: number; depth: number } -interface ShapeB318 { color: string; opacity: number; blend: string } -interface ShapeC318 { x: number; y: number; z: number; w: number } -interface ShapeD318 { label: string; title: string; summary: string } - -type Combined318 = ShapeA318 & ShapeB318 & ShapeC318 & ShapeD318; -type OptionalAll318 = { [K in keyof Combined318]?: Combined318[K] }; -type RequiredAll318 = { [K in keyof Combined318]-?: Combined318[K] }; -type ReadonlyAll318 = { readonly [K in keyof Combined318]: Combined318[K] }; -type NullableAll318 = { [K in keyof Combined318]: Combined318[K] | null }; +type EV_0318 = Val_0318; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString318 = T extends string ? true : false; -type IsNumber318 = T extends number ? true : false; -type TypeName318 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames318 = { - [K in keyof BigRecord318]: TypeName318; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb318 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource318 = "user" | "post" | "comment" | "tag" | "category"; -type Action318 = `${Verb318}_${Resource318}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise318 = T extends Promise ? UnwrapPromise318 : T; -type UnwrapArray318 = T extends (infer U)[] ? UnwrapArray318 : T; -type Head318 = T extends [infer H, ...infer _] ? H : never; -type Tail318 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation318 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation318>] - : never; +interface Registry_03_18 { + entities: Map; + validators: EV_0318; + paths: Set; + merged: DeepMerge_0318; +} -type SmallUnion318 = "a" | "b" | "c" | "d"; -type AllPerms318 = Permutation318; +type CK_0318 = `p03.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig318, - Flat318, - FR318, - BigUnion318, - ExtractAlpha318, - ExcludeZulu318, - OptionalAll318, - RequiredAll318, - ReadonlyAll318, - NullableAll318, - TypeNames318, - Action318, - AllPerms318, -}; +export type { Entity_03_18, Registry_03_18, CK_0318, EP_0318, EV_0318, DeepMerge_0318 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts index 49f0fe30..0b210b9b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-19.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-19 (seed 319) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-19 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0319 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0319 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord319 { - a319: { x: number; y: string; z: boolean }; - b319: { p: string[]; q: Record }; - c319: { nested: { deep: { deeper: { deepest: string } } } }; - d319: number; - e319: string; - f319: boolean; - g319: null; - h319: undefined; - i319: bigint; - j319: symbol; +interface Entity_03_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_19 | null; children: Entity_03_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0319: number; y0319: string; z0319: boolean }; } -type PartialBig319 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten319 = T extends Array ? Flatten319 : T; -type Nested319 = number[][][][][][][][][][]; -type Flat319 = Flatten319; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly319 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly319 : T[K]; -}; -type DeepRequired319 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired319 : T[K]; +type Path_0319 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0319}` }[keyof T & string] : never; +type EP_0319 = Path_0319; + +type Val_0319 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0319 } + : T[K] extends object ? { t: 'o'; props: Val_0319 } + : { t: 'u' }; }; -type FR319 = DeepReadonly319>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion319 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha319 = Extract; -type ExcludeZulu319 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA319 { width: number; height: number; depth: number } -interface ShapeB319 { color: string; opacity: number; blend: string } -interface ShapeC319 { x: number; y: number; z: number; w: number } -interface ShapeD319 { label: string; title: string; summary: string } - -type Combined319 = ShapeA319 & ShapeB319 & ShapeC319 & ShapeD319; -type OptionalAll319 = { [K in keyof Combined319]?: Combined319[K] }; -type RequiredAll319 = { [K in keyof Combined319]-?: Combined319[K] }; -type ReadonlyAll319 = { readonly [K in keyof Combined319]: Combined319[K] }; -type NullableAll319 = { [K in keyof Combined319]: Combined319[K] | null }; +type EV_0319 = Val_0319; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString319 = T extends string ? true : false; -type IsNumber319 = T extends number ? true : false; -type TypeName319 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames319 = { - [K in keyof BigRecord319]: TypeName319; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb319 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource319 = "user" | "post" | "comment" | "tag" | "category"; -type Action319 = `${Verb319}_${Resource319}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise319 = T extends Promise ? UnwrapPromise319 : T; -type UnwrapArray319 = T extends (infer U)[] ? UnwrapArray319 : T; -type Head319 = T extends [infer H, ...infer _] ? H : never; -type Tail319 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation319 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation319>] - : never; +interface Registry_03_19 { + entities: Map; + validators: EV_0319; + paths: Set; + merged: DeepMerge_0319; +} -type SmallUnion319 = "a" | "b" | "c" | "d"; -type AllPerms319 = Permutation319; +type CK_0319 = `p03.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig319, - Flat319, - FR319, - BigUnion319, - ExtractAlpha319, - ExcludeZulu319, - OptionalAll319, - RequiredAll319, - ReadonlyAll319, - NullableAll319, - TypeNames319, - Action319, - AllPerms319, -}; +export type { Entity_03_19, Registry_03_19, CK_0319, EP_0319, EV_0319, DeepMerge_0319 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts index 99ba0cd1..67b68c33 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-20.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-20 (seed 320) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-20 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0320 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0320 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord320 { - a320: { x: number; y: string; z: boolean }; - b320: { p: string[]; q: Record }; - c320: { nested: { deep: { deeper: { deepest: string } } } }; - d320: number; - e320: string; - f320: boolean; - g320: null; - h320: undefined; - i320: bigint; - j320: symbol; +interface Entity_03_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_20 | null; children: Entity_03_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0320: number; y0320: string; z0320: boolean }; } -type PartialBig320 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten320 = T extends Array ? Flatten320 : T; -type Nested320 = number[][][][][][][][][][]; -type Flat320 = Flatten320; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly320 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly320 : T[K]; -}; -type DeepRequired320 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired320 : T[K]; +type Path_0320 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0320}` }[keyof T & string] : never; +type EP_0320 = Path_0320; + +type Val_0320 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0320 } + : T[K] extends object ? { t: 'o'; props: Val_0320 } + : { t: 'u' }; }; -type FR320 = DeepReadonly320>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion320 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha320 = Extract; -type ExcludeZulu320 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA320 { width: number; height: number; depth: number } -interface ShapeB320 { color: string; opacity: number; blend: string } -interface ShapeC320 { x: number; y: number; z: number; w: number } -interface ShapeD320 { label: string; title: string; summary: string } - -type Combined320 = ShapeA320 & ShapeB320 & ShapeC320 & ShapeD320; -type OptionalAll320 = { [K in keyof Combined320]?: Combined320[K] }; -type RequiredAll320 = { [K in keyof Combined320]-?: Combined320[K] }; -type ReadonlyAll320 = { readonly [K in keyof Combined320]: Combined320[K] }; -type NullableAll320 = { [K in keyof Combined320]: Combined320[K] | null }; +type EV_0320 = Val_0320; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString320 = T extends string ? true : false; -type IsNumber320 = T extends number ? true : false; -type TypeName320 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames320 = { - [K in keyof BigRecord320]: TypeName320; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb320 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource320 = "user" | "post" | "comment" | "tag" | "category"; -type Action320 = `${Verb320}_${Resource320}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise320 = T extends Promise ? UnwrapPromise320 : T; -type UnwrapArray320 = T extends (infer U)[] ? UnwrapArray320 : T; -type Head320 = T extends [infer H, ...infer _] ? H : never; -type Tail320 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation320 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation320>] - : never; +interface Registry_03_20 { + entities: Map; + validators: EV_0320; + paths: Set; + merged: DeepMerge_0320; +} -type SmallUnion320 = "a" | "b" | "c" | "d"; -type AllPerms320 = Permutation320; +type CK_0320 = `p03.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig320, - Flat320, - FR320, - BigUnion320, - ExtractAlpha320, - ExcludeZulu320, - OptionalAll320, - RequiredAll320, - ReadonlyAll320, - NullableAll320, - TypeNames320, - Action320, - AllPerms320, -}; +export type { Entity_03_20, Registry_03_20, CK_0320, EP_0320, EV_0320, DeepMerge_0320 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts index 9cb4c1bf..38781bab 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-21.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-21 (seed 321) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-21 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0321 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0321 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord321 { - a321: { x: number; y: string; z: boolean }; - b321: { p: string[]; q: Record }; - c321: { nested: { deep: { deeper: { deepest: string } } } }; - d321: number; - e321: string; - f321: boolean; - g321: null; - h321: undefined; - i321: bigint; - j321: symbol; +interface Entity_03_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_21 | null; children: Entity_03_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0321: number; y0321: string; z0321: boolean }; } -type PartialBig321 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten321 = T extends Array ? Flatten321 : T; -type Nested321 = number[][][][][][][][][][]; -type Flat321 = Flatten321; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly321 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly321 : T[K]; -}; -type DeepRequired321 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired321 : T[K]; +type Path_0321 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0321}` }[keyof T & string] : never; +type EP_0321 = Path_0321; + +type Val_0321 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0321 } + : T[K] extends object ? { t: 'o'; props: Val_0321 } + : { t: 'u' }; }; -type FR321 = DeepReadonly321>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion321 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha321 = Extract; -type ExcludeZulu321 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA321 { width: number; height: number; depth: number } -interface ShapeB321 { color: string; opacity: number; blend: string } -interface ShapeC321 { x: number; y: number; z: number; w: number } -interface ShapeD321 { label: string; title: string; summary: string } - -type Combined321 = ShapeA321 & ShapeB321 & ShapeC321 & ShapeD321; -type OptionalAll321 = { [K in keyof Combined321]?: Combined321[K] }; -type RequiredAll321 = { [K in keyof Combined321]-?: Combined321[K] }; -type ReadonlyAll321 = { readonly [K in keyof Combined321]: Combined321[K] }; -type NullableAll321 = { [K in keyof Combined321]: Combined321[K] | null }; +type EV_0321 = Val_0321; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString321 = T extends string ? true : false; -type IsNumber321 = T extends number ? true : false; -type TypeName321 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames321 = { - [K in keyof BigRecord321]: TypeName321; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb321 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource321 = "user" | "post" | "comment" | "tag" | "category"; -type Action321 = `${Verb321}_${Resource321}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise321 = T extends Promise ? UnwrapPromise321 : T; -type UnwrapArray321 = T extends (infer U)[] ? UnwrapArray321 : T; -type Head321 = T extends [infer H, ...infer _] ? H : never; -type Tail321 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation321 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation321>] - : never; +interface Registry_03_21 { + entities: Map; + validators: EV_0321; + paths: Set; + merged: DeepMerge_0321; +} -type SmallUnion321 = "a" | "b" | "c" | "d"; -type AllPerms321 = Permutation321; +type CK_0321 = `p03.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig321, - Flat321, - FR321, - BigUnion321, - ExtractAlpha321, - ExcludeZulu321, - OptionalAll321, - RequiredAll321, - ReadonlyAll321, - NullableAll321, - TypeNames321, - Action321, - AllPerms321, -}; +export type { Entity_03_21, Registry_03_21, CK_0321, EP_0321, EV_0321, DeepMerge_0321 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts index d12eff34..75ce50fc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-22.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-22 (seed 322) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-22 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0322 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0322 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord322 { - a322: { x: number; y: string; z: boolean }; - b322: { p: string[]; q: Record }; - c322: { nested: { deep: { deeper: { deepest: string } } } }; - d322: number; - e322: string; - f322: boolean; - g322: null; - h322: undefined; - i322: bigint; - j322: symbol; +interface Entity_03_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_22 | null; children: Entity_03_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0322: number; y0322: string; z0322: boolean }; } -type PartialBig322 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten322 = T extends Array ? Flatten322 : T; -type Nested322 = number[][][][][][][][][][]; -type Flat322 = Flatten322; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly322 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly322 : T[K]; -}; -type DeepRequired322 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired322 : T[K]; +type Path_0322 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0322}` }[keyof T & string] : never; +type EP_0322 = Path_0322; + +type Val_0322 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0322 } + : T[K] extends object ? { t: 'o'; props: Val_0322 } + : { t: 'u' }; }; -type FR322 = DeepReadonly322>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion322 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha322 = Extract; -type ExcludeZulu322 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA322 { width: number; height: number; depth: number } -interface ShapeB322 { color: string; opacity: number; blend: string } -interface ShapeC322 { x: number; y: number; z: number; w: number } -interface ShapeD322 { label: string; title: string; summary: string } - -type Combined322 = ShapeA322 & ShapeB322 & ShapeC322 & ShapeD322; -type OptionalAll322 = { [K in keyof Combined322]?: Combined322[K] }; -type RequiredAll322 = { [K in keyof Combined322]-?: Combined322[K] }; -type ReadonlyAll322 = { readonly [K in keyof Combined322]: Combined322[K] }; -type NullableAll322 = { [K in keyof Combined322]: Combined322[K] | null }; +type EV_0322 = Val_0322; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString322 = T extends string ? true : false; -type IsNumber322 = T extends number ? true : false; -type TypeName322 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames322 = { - [K in keyof BigRecord322]: TypeName322; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb322 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource322 = "user" | "post" | "comment" | "tag" | "category"; -type Action322 = `${Verb322}_${Resource322}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise322 = T extends Promise ? UnwrapPromise322 : T; -type UnwrapArray322 = T extends (infer U)[] ? UnwrapArray322 : T; -type Head322 = T extends [infer H, ...infer _] ? H : never; -type Tail322 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation322 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation322>] - : never; +interface Registry_03_22 { + entities: Map; + validators: EV_0322; + paths: Set; + merged: DeepMerge_0322; +} -type SmallUnion322 = "a" | "b" | "c" | "d"; -type AllPerms322 = Permutation322; +type CK_0322 = `p03.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig322, - Flat322, - FR322, - BigUnion322, - ExtractAlpha322, - ExcludeZulu322, - OptionalAll322, - RequiredAll322, - ReadonlyAll322, - NullableAll322, - TypeNames322, - Action322, - AllPerms322, -}; +export type { Entity_03_22, Registry_03_22, CK_0322, EP_0322, EV_0322, DeepMerge_0322 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts index 1aa0daff..1990022b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-23.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-23 (seed 323) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-23 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0323 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0323 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord323 { - a323: { x: number; y: string; z: boolean }; - b323: { p: string[]; q: Record }; - c323: { nested: { deep: { deeper: { deepest: string } } } }; - d323: number; - e323: string; - f323: boolean; - g323: null; - h323: undefined; - i323: bigint; - j323: symbol; +interface Entity_03_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_23 | null; children: Entity_03_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0323: number; y0323: string; z0323: boolean }; } -type PartialBig323 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten323 = T extends Array ? Flatten323 : T; -type Nested323 = number[][][][][][][][][][]; -type Flat323 = Flatten323; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly323 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly323 : T[K]; -}; -type DeepRequired323 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired323 : T[K]; +type Path_0323 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0323}` }[keyof T & string] : never; +type EP_0323 = Path_0323; + +type Val_0323 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0323 } + : T[K] extends object ? { t: 'o'; props: Val_0323 } + : { t: 'u' }; }; -type FR323 = DeepReadonly323>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion323 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha323 = Extract; -type ExcludeZulu323 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA323 { width: number; height: number; depth: number } -interface ShapeB323 { color: string; opacity: number; blend: string } -interface ShapeC323 { x: number; y: number; z: number; w: number } -interface ShapeD323 { label: string; title: string; summary: string } - -type Combined323 = ShapeA323 & ShapeB323 & ShapeC323 & ShapeD323; -type OptionalAll323 = { [K in keyof Combined323]?: Combined323[K] }; -type RequiredAll323 = { [K in keyof Combined323]-?: Combined323[K] }; -type ReadonlyAll323 = { readonly [K in keyof Combined323]: Combined323[K] }; -type NullableAll323 = { [K in keyof Combined323]: Combined323[K] | null }; +type EV_0323 = Val_0323; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString323 = T extends string ? true : false; -type IsNumber323 = T extends number ? true : false; -type TypeName323 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames323 = { - [K in keyof BigRecord323]: TypeName323; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb323 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource323 = "user" | "post" | "comment" | "tag" | "category"; -type Action323 = `${Verb323}_${Resource323}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise323 = T extends Promise ? UnwrapPromise323 : T; -type UnwrapArray323 = T extends (infer U)[] ? UnwrapArray323 : T; -type Head323 = T extends [infer H, ...infer _] ? H : never; -type Tail323 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation323 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation323>] - : never; +interface Registry_03_23 { + entities: Map; + validators: EV_0323; + paths: Set; + merged: DeepMerge_0323; +} -type SmallUnion323 = "a" | "b" | "c" | "d"; -type AllPerms323 = Permutation323; +type CK_0323 = `p03.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig323, - Flat323, - FR323, - BigUnion323, - ExtractAlpha323, - ExcludeZulu323, - OptionalAll323, - RequiredAll323, - ReadonlyAll323, - NullableAll323, - TypeNames323, - Action323, - AllPerms323, -}; +export type { Entity_03_23, Registry_03_23, CK_0323, EP_0323, EV_0323, DeepMerge_0323 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts index d08b92d4..d043aa5a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-24.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-24 (seed 324) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-24 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0324 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0324 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord324 { - a324: { x: number; y: string; z: boolean }; - b324: { p: string[]; q: Record }; - c324: { nested: { deep: { deeper: { deepest: string } } } }; - d324: number; - e324: string; - f324: boolean; - g324: null; - h324: undefined; - i324: bigint; - j324: symbol; +interface Entity_03_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_24 | null; children: Entity_03_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0324: number; y0324: string; z0324: boolean }; } -type PartialBig324 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten324 = T extends Array ? Flatten324 : T; -type Nested324 = number[][][][][][][][][][]; -type Flat324 = Flatten324; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly324 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly324 : T[K]; -}; -type DeepRequired324 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired324 : T[K]; +type Path_0324 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0324}` }[keyof T & string] : never; +type EP_0324 = Path_0324; + +type Val_0324 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0324 } + : T[K] extends object ? { t: 'o'; props: Val_0324 } + : { t: 'u' }; }; -type FR324 = DeepReadonly324>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion324 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha324 = Extract; -type ExcludeZulu324 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA324 { width: number; height: number; depth: number } -interface ShapeB324 { color: string; opacity: number; blend: string } -interface ShapeC324 { x: number; y: number; z: number; w: number } -interface ShapeD324 { label: string; title: string; summary: string } - -type Combined324 = ShapeA324 & ShapeB324 & ShapeC324 & ShapeD324; -type OptionalAll324 = { [K in keyof Combined324]?: Combined324[K] }; -type RequiredAll324 = { [K in keyof Combined324]-?: Combined324[K] }; -type ReadonlyAll324 = { readonly [K in keyof Combined324]: Combined324[K] }; -type NullableAll324 = { [K in keyof Combined324]: Combined324[K] | null }; +type EV_0324 = Val_0324; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString324 = T extends string ? true : false; -type IsNumber324 = T extends number ? true : false; -type TypeName324 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames324 = { - [K in keyof BigRecord324]: TypeName324; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb324 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource324 = "user" | "post" | "comment" | "tag" | "category"; -type Action324 = `${Verb324}_${Resource324}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise324 = T extends Promise ? UnwrapPromise324 : T; -type UnwrapArray324 = T extends (infer U)[] ? UnwrapArray324 : T; -type Head324 = T extends [infer H, ...infer _] ? H : never; -type Tail324 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation324 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation324>] - : never; +interface Registry_03_24 { + entities: Map; + validators: EV_0324; + paths: Set; + merged: DeepMerge_0324; +} -type SmallUnion324 = "a" | "b" | "c" | "d"; -type AllPerms324 = Permutation324; +type CK_0324 = `p03.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig324, - Flat324, - FR324, - BigUnion324, - ExtractAlpha324, - ExcludeZulu324, - OptionalAll324, - RequiredAll324, - ReadonlyAll324, - NullableAll324, - TypeNames324, - Action324, - AllPerms324, -}; +export type { Entity_03_24, Registry_03_24, CK_0324, EP_0324, EV_0324, DeepMerge_0324 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts index 81b1d024..9585dff4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-25.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-25 (seed 325) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-25 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0325 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0325 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord325 { - a325: { x: number; y: string; z: boolean }; - b325: { p: string[]; q: Record }; - c325: { nested: { deep: { deeper: { deepest: string } } } }; - d325: number; - e325: string; - f325: boolean; - g325: null; - h325: undefined; - i325: bigint; - j325: symbol; +interface Entity_03_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_25 | null; children: Entity_03_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0325: number; y0325: string; z0325: boolean }; } -type PartialBig325 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten325 = T extends Array ? Flatten325 : T; -type Nested325 = number[][][][][][][][][][]; -type Flat325 = Flatten325; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly325 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly325 : T[K]; -}; -type DeepRequired325 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired325 : T[K]; +type Path_0325 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0325}` }[keyof T & string] : never; +type EP_0325 = Path_0325; + +type Val_0325 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0325 } + : T[K] extends object ? { t: 'o'; props: Val_0325 } + : { t: 'u' }; }; -type FR325 = DeepReadonly325>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion325 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha325 = Extract; -type ExcludeZulu325 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA325 { width: number; height: number; depth: number } -interface ShapeB325 { color: string; opacity: number; blend: string } -interface ShapeC325 { x: number; y: number; z: number; w: number } -interface ShapeD325 { label: string; title: string; summary: string } - -type Combined325 = ShapeA325 & ShapeB325 & ShapeC325 & ShapeD325; -type OptionalAll325 = { [K in keyof Combined325]?: Combined325[K] }; -type RequiredAll325 = { [K in keyof Combined325]-?: Combined325[K] }; -type ReadonlyAll325 = { readonly [K in keyof Combined325]: Combined325[K] }; -type NullableAll325 = { [K in keyof Combined325]: Combined325[K] | null }; +type EV_0325 = Val_0325; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString325 = T extends string ? true : false; -type IsNumber325 = T extends number ? true : false; -type TypeName325 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames325 = { - [K in keyof BigRecord325]: TypeName325; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb325 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource325 = "user" | "post" | "comment" | "tag" | "category"; -type Action325 = `${Verb325}_${Resource325}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise325 = T extends Promise ? UnwrapPromise325 : T; -type UnwrapArray325 = T extends (infer U)[] ? UnwrapArray325 : T; -type Head325 = T extends [infer H, ...infer _] ? H : never; -type Tail325 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation325 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation325>] - : never; +interface Registry_03_25 { + entities: Map; + validators: EV_0325; + paths: Set; + merged: DeepMerge_0325; +} -type SmallUnion325 = "a" | "b" | "c" | "d"; -type AllPerms325 = Permutation325; +type CK_0325 = `p03.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig325, - Flat325, - FR325, - BigUnion325, - ExtractAlpha325, - ExcludeZulu325, - OptionalAll325, - RequiredAll325, - ReadonlyAll325, - NullableAll325, - TypeNames325, - Action325, - AllPerms325, -}; +export type { Entity_03_25, Registry_03_25, CK_0325, EP_0325, EV_0325, DeepMerge_0325 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts index 00b8714a..72c7d5a5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-26.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-26 (seed 326) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-26 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0326 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0326 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord326 { - a326: { x: number; y: string; z: boolean }; - b326: { p: string[]; q: Record }; - c326: { nested: { deep: { deeper: { deepest: string } } } }; - d326: number; - e326: string; - f326: boolean; - g326: null; - h326: undefined; - i326: bigint; - j326: symbol; +interface Entity_03_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_26 | null; children: Entity_03_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0326: number; y0326: string; z0326: boolean }; } -type PartialBig326 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten326 = T extends Array ? Flatten326 : T; -type Nested326 = number[][][][][][][][][][]; -type Flat326 = Flatten326; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly326 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly326 : T[K]; -}; -type DeepRequired326 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired326 : T[K]; +type Path_0326 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0326}` }[keyof T & string] : never; +type EP_0326 = Path_0326; + +type Val_0326 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0326 } + : T[K] extends object ? { t: 'o'; props: Val_0326 } + : { t: 'u' }; }; -type FR326 = DeepReadonly326>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion326 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha326 = Extract; -type ExcludeZulu326 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA326 { width: number; height: number; depth: number } -interface ShapeB326 { color: string; opacity: number; blend: string } -interface ShapeC326 { x: number; y: number; z: number; w: number } -interface ShapeD326 { label: string; title: string; summary: string } - -type Combined326 = ShapeA326 & ShapeB326 & ShapeC326 & ShapeD326; -type OptionalAll326 = { [K in keyof Combined326]?: Combined326[K] }; -type RequiredAll326 = { [K in keyof Combined326]-?: Combined326[K] }; -type ReadonlyAll326 = { readonly [K in keyof Combined326]: Combined326[K] }; -type NullableAll326 = { [K in keyof Combined326]: Combined326[K] | null }; +type EV_0326 = Val_0326; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString326 = T extends string ? true : false; -type IsNumber326 = T extends number ? true : false; -type TypeName326 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames326 = { - [K in keyof BigRecord326]: TypeName326; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb326 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource326 = "user" | "post" | "comment" | "tag" | "category"; -type Action326 = `${Verb326}_${Resource326}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise326 = T extends Promise ? UnwrapPromise326 : T; -type UnwrapArray326 = T extends (infer U)[] ? UnwrapArray326 : T; -type Head326 = T extends [infer H, ...infer _] ? H : never; -type Tail326 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation326 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation326>] - : never; +interface Registry_03_26 { + entities: Map; + validators: EV_0326; + paths: Set; + merged: DeepMerge_0326; +} -type SmallUnion326 = "a" | "b" | "c" | "d"; -type AllPerms326 = Permutation326; +type CK_0326 = `p03.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig326, - Flat326, - FR326, - BigUnion326, - ExtractAlpha326, - ExcludeZulu326, - OptionalAll326, - RequiredAll326, - ReadonlyAll326, - NullableAll326, - TypeNames326, - Action326, - AllPerms326, -}; +export type { Entity_03_26, Registry_03_26, CK_0326, EP_0326, EV_0326, DeepMerge_0326 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts index 5c73aa7f..137819a1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-27.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-27 (seed 327) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-27 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0327 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0327 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord327 { - a327: { x: number; y: string; z: boolean }; - b327: { p: string[]; q: Record }; - c327: { nested: { deep: { deeper: { deepest: string } } } }; - d327: number; - e327: string; - f327: boolean; - g327: null; - h327: undefined; - i327: bigint; - j327: symbol; +interface Entity_03_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_27 | null; children: Entity_03_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0327: number; y0327: string; z0327: boolean }; } -type PartialBig327 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten327 = T extends Array ? Flatten327 : T; -type Nested327 = number[][][][][][][][][][]; -type Flat327 = Flatten327; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly327 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly327 : T[K]; -}; -type DeepRequired327 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired327 : T[K]; +type Path_0327 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0327}` }[keyof T & string] : never; +type EP_0327 = Path_0327; + +type Val_0327 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0327 } + : T[K] extends object ? { t: 'o'; props: Val_0327 } + : { t: 'u' }; }; -type FR327 = DeepReadonly327>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion327 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha327 = Extract; -type ExcludeZulu327 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA327 { width: number; height: number; depth: number } -interface ShapeB327 { color: string; opacity: number; blend: string } -interface ShapeC327 { x: number; y: number; z: number; w: number } -interface ShapeD327 { label: string; title: string; summary: string } - -type Combined327 = ShapeA327 & ShapeB327 & ShapeC327 & ShapeD327; -type OptionalAll327 = { [K in keyof Combined327]?: Combined327[K] }; -type RequiredAll327 = { [K in keyof Combined327]-?: Combined327[K] }; -type ReadonlyAll327 = { readonly [K in keyof Combined327]: Combined327[K] }; -type NullableAll327 = { [K in keyof Combined327]: Combined327[K] | null }; +type EV_0327 = Val_0327; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString327 = T extends string ? true : false; -type IsNumber327 = T extends number ? true : false; -type TypeName327 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames327 = { - [K in keyof BigRecord327]: TypeName327; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb327 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource327 = "user" | "post" | "comment" | "tag" | "category"; -type Action327 = `${Verb327}_${Resource327}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise327 = T extends Promise ? UnwrapPromise327 : T; -type UnwrapArray327 = T extends (infer U)[] ? UnwrapArray327 : T; -type Head327 = T extends [infer H, ...infer _] ? H : never; -type Tail327 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation327 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation327>] - : never; +interface Registry_03_27 { + entities: Map; + validators: EV_0327; + paths: Set; + merged: DeepMerge_0327; +} -type SmallUnion327 = "a" | "b" | "c" | "d"; -type AllPerms327 = Permutation327; +type CK_0327 = `p03.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig327, - Flat327, - FR327, - BigUnion327, - ExtractAlpha327, - ExcludeZulu327, - OptionalAll327, - RequiredAll327, - ReadonlyAll327, - NullableAll327, - TypeNames327, - Action327, - AllPerms327, -}; +export type { Entity_03_27, Registry_03_27, CK_0327, EP_0327, EV_0327, DeepMerge_0327 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts index e21c1bc2..aa83652e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-28.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-28 (seed 328) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-28 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0328 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0328 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord328 { - a328: { x: number; y: string; z: boolean }; - b328: { p: string[]; q: Record }; - c328: { nested: { deep: { deeper: { deepest: string } } } }; - d328: number; - e328: string; - f328: boolean; - g328: null; - h328: undefined; - i328: bigint; - j328: symbol; +interface Entity_03_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_28 | null; children: Entity_03_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0328: number; y0328: string; z0328: boolean }; } -type PartialBig328 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten328 = T extends Array ? Flatten328 : T; -type Nested328 = number[][][][][][][][][][]; -type Flat328 = Flatten328; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly328 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly328 : T[K]; -}; -type DeepRequired328 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired328 : T[K]; +type Path_0328 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0328}` }[keyof T & string] : never; +type EP_0328 = Path_0328; + +type Val_0328 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0328 } + : T[K] extends object ? { t: 'o'; props: Val_0328 } + : { t: 'u' }; }; -type FR328 = DeepReadonly328>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion328 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha328 = Extract; -type ExcludeZulu328 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA328 { width: number; height: number; depth: number } -interface ShapeB328 { color: string; opacity: number; blend: string } -interface ShapeC328 { x: number; y: number; z: number; w: number } -interface ShapeD328 { label: string; title: string; summary: string } - -type Combined328 = ShapeA328 & ShapeB328 & ShapeC328 & ShapeD328; -type OptionalAll328 = { [K in keyof Combined328]?: Combined328[K] }; -type RequiredAll328 = { [K in keyof Combined328]-?: Combined328[K] }; -type ReadonlyAll328 = { readonly [K in keyof Combined328]: Combined328[K] }; -type NullableAll328 = { [K in keyof Combined328]: Combined328[K] | null }; +type EV_0328 = Val_0328; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString328 = T extends string ? true : false; -type IsNumber328 = T extends number ? true : false; -type TypeName328 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames328 = { - [K in keyof BigRecord328]: TypeName328; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb328 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource328 = "user" | "post" | "comment" | "tag" | "category"; -type Action328 = `${Verb328}_${Resource328}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise328 = T extends Promise ? UnwrapPromise328 : T; -type UnwrapArray328 = T extends (infer U)[] ? UnwrapArray328 : T; -type Head328 = T extends [infer H, ...infer _] ? H : never; -type Tail328 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation328 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation328>] - : never; +interface Registry_03_28 { + entities: Map; + validators: EV_0328; + paths: Set; + merged: DeepMerge_0328; +} -type SmallUnion328 = "a" | "b" | "c" | "d"; -type AllPerms328 = Permutation328; +type CK_0328 = `p03.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig328, - Flat328, - FR328, - BigUnion328, - ExtractAlpha328, - ExcludeZulu328, - OptionalAll328, - RequiredAll328, - ReadonlyAll328, - NullableAll328, - TypeNames328, - Action328, - AllPerms328, -}; +export type { Entity_03_28, Registry_03_28, CK_0328, EP_0328, EV_0328, DeepMerge_0328 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts index 5806a0aa..e5dd3181 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-29.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-29 (seed 329) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-29 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0329 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0329 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord329 { - a329: { x: number; y: string; z: boolean }; - b329: { p: string[]; q: Record }; - c329: { nested: { deep: { deeper: { deepest: string } } } }; - d329: number; - e329: string; - f329: boolean; - g329: null; - h329: undefined; - i329: bigint; - j329: symbol; +interface Entity_03_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_29 | null; children: Entity_03_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0329: number; y0329: string; z0329: boolean }; } -type PartialBig329 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten329 = T extends Array ? Flatten329 : T; -type Nested329 = number[][][][][][][][][][]; -type Flat329 = Flatten329; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly329 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly329 : T[K]; -}; -type DeepRequired329 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired329 : T[K]; +type Path_0329 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0329}` }[keyof T & string] : never; +type EP_0329 = Path_0329; + +type Val_0329 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0329 } + : T[K] extends object ? { t: 'o'; props: Val_0329 } + : { t: 'u' }; }; -type FR329 = DeepReadonly329>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion329 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha329 = Extract; -type ExcludeZulu329 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA329 { width: number; height: number; depth: number } -interface ShapeB329 { color: string; opacity: number; blend: string } -interface ShapeC329 { x: number; y: number; z: number; w: number } -interface ShapeD329 { label: string; title: string; summary: string } - -type Combined329 = ShapeA329 & ShapeB329 & ShapeC329 & ShapeD329; -type OptionalAll329 = { [K in keyof Combined329]?: Combined329[K] }; -type RequiredAll329 = { [K in keyof Combined329]-?: Combined329[K] }; -type ReadonlyAll329 = { readonly [K in keyof Combined329]: Combined329[K] }; -type NullableAll329 = { [K in keyof Combined329]: Combined329[K] | null }; +type EV_0329 = Val_0329; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString329 = T extends string ? true : false; -type IsNumber329 = T extends number ? true : false; -type TypeName329 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames329 = { - [K in keyof BigRecord329]: TypeName329; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb329 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource329 = "user" | "post" | "comment" | "tag" | "category"; -type Action329 = `${Verb329}_${Resource329}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise329 = T extends Promise ? UnwrapPromise329 : T; -type UnwrapArray329 = T extends (infer U)[] ? UnwrapArray329 : T; -type Head329 = T extends [infer H, ...infer _] ? H : never; -type Tail329 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation329 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation329>] - : never; +interface Registry_03_29 { + entities: Map; + validators: EV_0329; + paths: Set; + merged: DeepMerge_0329; +} -type SmallUnion329 = "a" | "b" | "c" | "d"; -type AllPerms329 = Permutation329; +type CK_0329 = `p03.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig329, - Flat329, - FR329, - BigUnion329, - ExtractAlpha329, - ExcludeZulu329, - OptionalAll329, - RequiredAll329, - ReadonlyAll329, - NullableAll329, - TypeNames329, - Action329, - AllPerms329, -}; +export type { Entity_03_29, Registry_03_29, CK_0329, EP_0329, EV_0329, DeepMerge_0329 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts index 0f66c14b..87b18432 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-30.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-30 (seed 330) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-30 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0330 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0330 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord330 { - a330: { x: number; y: string; z: boolean }; - b330: { p: string[]; q: Record }; - c330: { nested: { deep: { deeper: { deepest: string } } } }; - d330: number; - e330: string; - f330: boolean; - g330: null; - h330: undefined; - i330: bigint; - j330: symbol; +interface Entity_03_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_30 | null; children: Entity_03_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0330: number; y0330: string; z0330: boolean }; } -type PartialBig330 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten330 = T extends Array ? Flatten330 : T; -type Nested330 = number[][][][][][][][][][]; -type Flat330 = Flatten330; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly330 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly330 : T[K]; -}; -type DeepRequired330 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired330 : T[K]; +type Path_0330 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0330}` }[keyof T & string] : never; +type EP_0330 = Path_0330; + +type Val_0330 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0330 } + : T[K] extends object ? { t: 'o'; props: Val_0330 } + : { t: 'u' }; }; -type FR330 = DeepReadonly330>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion330 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha330 = Extract; -type ExcludeZulu330 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA330 { width: number; height: number; depth: number } -interface ShapeB330 { color: string; opacity: number; blend: string } -interface ShapeC330 { x: number; y: number; z: number; w: number } -interface ShapeD330 { label: string; title: string; summary: string } - -type Combined330 = ShapeA330 & ShapeB330 & ShapeC330 & ShapeD330; -type OptionalAll330 = { [K in keyof Combined330]?: Combined330[K] }; -type RequiredAll330 = { [K in keyof Combined330]-?: Combined330[K] }; -type ReadonlyAll330 = { readonly [K in keyof Combined330]: Combined330[K] }; -type NullableAll330 = { [K in keyof Combined330]: Combined330[K] | null }; +type EV_0330 = Val_0330; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString330 = T extends string ? true : false; -type IsNumber330 = T extends number ? true : false; -type TypeName330 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames330 = { - [K in keyof BigRecord330]: TypeName330; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb330 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource330 = "user" | "post" | "comment" | "tag" | "category"; -type Action330 = `${Verb330}_${Resource330}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise330 = T extends Promise ? UnwrapPromise330 : T; -type UnwrapArray330 = T extends (infer U)[] ? UnwrapArray330 : T; -type Head330 = T extends [infer H, ...infer _] ? H : never; -type Tail330 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation330 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation330>] - : never; +interface Registry_03_30 { + entities: Map; + validators: EV_0330; + paths: Set; + merged: DeepMerge_0330; +} -type SmallUnion330 = "a" | "b" | "c" | "d"; -type AllPerms330 = Permutation330; +type CK_0330 = `p03.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig330, - Flat330, - FR330, - BigUnion330, - ExtractAlpha330, - ExcludeZulu330, - OptionalAll330, - RequiredAll330, - ReadonlyAll330, - NullableAll330, - TypeNames330, - Action330, - AllPerms330, -}; +export type { Entity_03_30, Registry_03_30, CK_0330, EP_0330, EV_0330, DeepMerge_0330 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts index 79021e4f..bac1ec54 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-31.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-31 (seed 331) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-31 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0331 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0331 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord331 { - a331: { x: number; y: string; z: boolean }; - b331: { p: string[]; q: Record }; - c331: { nested: { deep: { deeper: { deepest: string } } } }; - d331: number; - e331: string; - f331: boolean; - g331: null; - h331: undefined; - i331: bigint; - j331: symbol; +interface Entity_03_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_31 | null; children: Entity_03_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0331: number; y0331: string; z0331: boolean }; } -type PartialBig331 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten331 = T extends Array ? Flatten331 : T; -type Nested331 = number[][][][][][][][][][]; -type Flat331 = Flatten331; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly331 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly331 : T[K]; -}; -type DeepRequired331 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired331 : T[K]; +type Path_0331 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0331}` }[keyof T & string] : never; +type EP_0331 = Path_0331; + +type Val_0331 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0331 } + : T[K] extends object ? { t: 'o'; props: Val_0331 } + : { t: 'u' }; }; -type FR331 = DeepReadonly331>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion331 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha331 = Extract; -type ExcludeZulu331 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA331 { width: number; height: number; depth: number } -interface ShapeB331 { color: string; opacity: number; blend: string } -interface ShapeC331 { x: number; y: number; z: number; w: number } -interface ShapeD331 { label: string; title: string; summary: string } - -type Combined331 = ShapeA331 & ShapeB331 & ShapeC331 & ShapeD331; -type OptionalAll331 = { [K in keyof Combined331]?: Combined331[K] }; -type RequiredAll331 = { [K in keyof Combined331]-?: Combined331[K] }; -type ReadonlyAll331 = { readonly [K in keyof Combined331]: Combined331[K] }; -type NullableAll331 = { [K in keyof Combined331]: Combined331[K] | null }; +type EV_0331 = Val_0331; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString331 = T extends string ? true : false; -type IsNumber331 = T extends number ? true : false; -type TypeName331 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames331 = { - [K in keyof BigRecord331]: TypeName331; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb331 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource331 = "user" | "post" | "comment" | "tag" | "category"; -type Action331 = `${Verb331}_${Resource331}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise331 = T extends Promise ? UnwrapPromise331 : T; -type UnwrapArray331 = T extends (infer U)[] ? UnwrapArray331 : T; -type Head331 = T extends [infer H, ...infer _] ? H : never; -type Tail331 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation331 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation331>] - : never; +interface Registry_03_31 { + entities: Map; + validators: EV_0331; + paths: Set; + merged: DeepMerge_0331; +} -type SmallUnion331 = "a" | "b" | "c" | "d"; -type AllPerms331 = Permutation331; +type CK_0331 = `p03.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig331, - Flat331, - FR331, - BigUnion331, - ExtractAlpha331, - ExcludeZulu331, - OptionalAll331, - RequiredAll331, - ReadonlyAll331, - NullableAll331, - TypeNames331, - Action331, - AllPerms331, -}; +export type { Entity_03_31, Registry_03_31, CK_0331, EP_0331, EV_0331, DeepMerge_0331 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts index 93c37b82..6d5196c9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-32.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-32 (seed 332) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-32 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0332 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0332 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord332 { - a332: { x: number; y: string; z: boolean }; - b332: { p: string[]; q: Record }; - c332: { nested: { deep: { deeper: { deepest: string } } } }; - d332: number; - e332: string; - f332: boolean; - g332: null; - h332: undefined; - i332: bigint; - j332: symbol; +interface Entity_03_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_32 | null; children: Entity_03_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0332: number; y0332: string; z0332: boolean }; } -type PartialBig332 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten332 = T extends Array ? Flatten332 : T; -type Nested332 = number[][][][][][][][][][]; -type Flat332 = Flatten332; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly332 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly332 : T[K]; -}; -type DeepRequired332 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired332 : T[K]; +type Path_0332 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0332}` }[keyof T & string] : never; +type EP_0332 = Path_0332; + +type Val_0332 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0332 } + : T[K] extends object ? { t: 'o'; props: Val_0332 } + : { t: 'u' }; }; -type FR332 = DeepReadonly332>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion332 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha332 = Extract; -type ExcludeZulu332 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA332 { width: number; height: number; depth: number } -interface ShapeB332 { color: string; opacity: number; blend: string } -interface ShapeC332 { x: number; y: number; z: number; w: number } -interface ShapeD332 { label: string; title: string; summary: string } - -type Combined332 = ShapeA332 & ShapeB332 & ShapeC332 & ShapeD332; -type OptionalAll332 = { [K in keyof Combined332]?: Combined332[K] }; -type RequiredAll332 = { [K in keyof Combined332]-?: Combined332[K] }; -type ReadonlyAll332 = { readonly [K in keyof Combined332]: Combined332[K] }; -type NullableAll332 = { [K in keyof Combined332]: Combined332[K] | null }; +type EV_0332 = Val_0332; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString332 = T extends string ? true : false; -type IsNumber332 = T extends number ? true : false; -type TypeName332 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames332 = { - [K in keyof BigRecord332]: TypeName332; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb332 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource332 = "user" | "post" | "comment" | "tag" | "category"; -type Action332 = `${Verb332}_${Resource332}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise332 = T extends Promise ? UnwrapPromise332 : T; -type UnwrapArray332 = T extends (infer U)[] ? UnwrapArray332 : T; -type Head332 = T extends [infer H, ...infer _] ? H : never; -type Tail332 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation332 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation332>] - : never; +interface Registry_03_32 { + entities: Map; + validators: EV_0332; + paths: Set; + merged: DeepMerge_0332; +} -type SmallUnion332 = "a" | "b" | "c" | "d"; -type AllPerms332 = Permutation332; +type CK_0332 = `p03.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig332, - Flat332, - FR332, - BigUnion332, - ExtractAlpha332, - ExcludeZulu332, - OptionalAll332, - RequiredAll332, - ReadonlyAll332, - NullableAll332, - TypeNames332, - Action332, - AllPerms332, -}; +export type { Entity_03_32, Registry_03_32, CK_0332, EP_0332, EV_0332, DeepMerge_0332 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts index 72a79500..38c15c5b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-33.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-33 (seed 333) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-33 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0333 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0333 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord333 { - a333: { x: number; y: string; z: boolean }; - b333: { p: string[]; q: Record }; - c333: { nested: { deep: { deeper: { deepest: string } } } }; - d333: number; - e333: string; - f333: boolean; - g333: null; - h333: undefined; - i333: bigint; - j333: symbol; +interface Entity_03_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_33 | null; children: Entity_03_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0333: number; y0333: string; z0333: boolean }; } -type PartialBig333 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten333 = T extends Array ? Flatten333 : T; -type Nested333 = number[][][][][][][][][][]; -type Flat333 = Flatten333; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly333 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly333 : T[K]; -}; -type DeepRequired333 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired333 : T[K]; +type Path_0333 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0333}` }[keyof T & string] : never; +type EP_0333 = Path_0333; + +type Val_0333 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0333 } + : T[K] extends object ? { t: 'o'; props: Val_0333 } + : { t: 'u' }; }; -type FR333 = DeepReadonly333>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion333 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha333 = Extract; -type ExcludeZulu333 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA333 { width: number; height: number; depth: number } -interface ShapeB333 { color: string; opacity: number; blend: string } -interface ShapeC333 { x: number; y: number; z: number; w: number } -interface ShapeD333 { label: string; title: string; summary: string } - -type Combined333 = ShapeA333 & ShapeB333 & ShapeC333 & ShapeD333; -type OptionalAll333 = { [K in keyof Combined333]?: Combined333[K] }; -type RequiredAll333 = { [K in keyof Combined333]-?: Combined333[K] }; -type ReadonlyAll333 = { readonly [K in keyof Combined333]: Combined333[K] }; -type NullableAll333 = { [K in keyof Combined333]: Combined333[K] | null }; +type EV_0333 = Val_0333; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString333 = T extends string ? true : false; -type IsNumber333 = T extends number ? true : false; -type TypeName333 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames333 = { - [K in keyof BigRecord333]: TypeName333; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb333 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource333 = "user" | "post" | "comment" | "tag" | "category"; -type Action333 = `${Verb333}_${Resource333}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise333 = T extends Promise ? UnwrapPromise333 : T; -type UnwrapArray333 = T extends (infer U)[] ? UnwrapArray333 : T; -type Head333 = T extends [infer H, ...infer _] ? H : never; -type Tail333 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation333 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation333>] - : never; +interface Registry_03_33 { + entities: Map; + validators: EV_0333; + paths: Set; + merged: DeepMerge_0333; +} -type SmallUnion333 = "a" | "b" | "c" | "d"; -type AllPerms333 = Permutation333; +type CK_0333 = `p03.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig333, - Flat333, - FR333, - BigUnion333, - ExtractAlpha333, - ExcludeZulu333, - OptionalAll333, - RequiredAll333, - ReadonlyAll333, - NullableAll333, - TypeNames333, - Action333, - AllPerms333, -}; +export type { Entity_03_33, Registry_03_33, CK_0333, EP_0333, EV_0333, DeepMerge_0333 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts index 22d7be1d..e58005f9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-34.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-34 (seed 334) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-34 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0334 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0334 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord334 { - a334: { x: number; y: string; z: boolean }; - b334: { p: string[]; q: Record }; - c334: { nested: { deep: { deeper: { deepest: string } } } }; - d334: number; - e334: string; - f334: boolean; - g334: null; - h334: undefined; - i334: bigint; - j334: symbol; +interface Entity_03_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_34 | null; children: Entity_03_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0334: number; y0334: string; z0334: boolean }; } -type PartialBig334 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten334 = T extends Array ? Flatten334 : T; -type Nested334 = number[][][][][][][][][][]; -type Flat334 = Flatten334; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly334 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly334 : T[K]; -}; -type DeepRequired334 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired334 : T[K]; +type Path_0334 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0334}` }[keyof T & string] : never; +type EP_0334 = Path_0334; + +type Val_0334 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0334 } + : T[K] extends object ? { t: 'o'; props: Val_0334 } + : { t: 'u' }; }; -type FR334 = DeepReadonly334>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion334 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha334 = Extract; -type ExcludeZulu334 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA334 { width: number; height: number; depth: number } -interface ShapeB334 { color: string; opacity: number; blend: string } -interface ShapeC334 { x: number; y: number; z: number; w: number } -interface ShapeD334 { label: string; title: string; summary: string } - -type Combined334 = ShapeA334 & ShapeB334 & ShapeC334 & ShapeD334; -type OptionalAll334 = { [K in keyof Combined334]?: Combined334[K] }; -type RequiredAll334 = { [K in keyof Combined334]-?: Combined334[K] }; -type ReadonlyAll334 = { readonly [K in keyof Combined334]: Combined334[K] }; -type NullableAll334 = { [K in keyof Combined334]: Combined334[K] | null }; +type EV_0334 = Val_0334; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString334 = T extends string ? true : false; -type IsNumber334 = T extends number ? true : false; -type TypeName334 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames334 = { - [K in keyof BigRecord334]: TypeName334; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb334 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource334 = "user" | "post" | "comment" | "tag" | "category"; -type Action334 = `${Verb334}_${Resource334}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise334 = T extends Promise ? UnwrapPromise334 : T; -type UnwrapArray334 = T extends (infer U)[] ? UnwrapArray334 : T; -type Head334 = T extends [infer H, ...infer _] ? H : never; -type Tail334 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation334 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation334>] - : never; +interface Registry_03_34 { + entities: Map; + validators: EV_0334; + paths: Set; + merged: DeepMerge_0334; +} -type SmallUnion334 = "a" | "b" | "c" | "d"; -type AllPerms334 = Permutation334; +type CK_0334 = `p03.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig334, - Flat334, - FR334, - BigUnion334, - ExtractAlpha334, - ExcludeZulu334, - OptionalAll334, - RequiredAll334, - ReadonlyAll334, - NullableAll334, - TypeNames334, - Action334, - AllPerms334, -}; +export type { Entity_03_34, Registry_03_34, CK_0334, EP_0334, EV_0334, DeepMerge_0334 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts index d4ef9e5d..8bfa8c0e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-35.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-35 (seed 335) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-35 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0335 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0335 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord335 { - a335: { x: number; y: string; z: boolean }; - b335: { p: string[]; q: Record }; - c335: { nested: { deep: { deeper: { deepest: string } } } }; - d335: number; - e335: string; - f335: boolean; - g335: null; - h335: undefined; - i335: bigint; - j335: symbol; +interface Entity_03_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_35 | null; children: Entity_03_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0335: number; y0335: string; z0335: boolean }; } -type PartialBig335 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten335 = T extends Array ? Flatten335 : T; -type Nested335 = number[][][][][][][][][][]; -type Flat335 = Flatten335; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly335 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly335 : T[K]; -}; -type DeepRequired335 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired335 : T[K]; +type Path_0335 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0335}` }[keyof T & string] : never; +type EP_0335 = Path_0335; + +type Val_0335 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0335 } + : T[K] extends object ? { t: 'o'; props: Val_0335 } + : { t: 'u' }; }; -type FR335 = DeepReadonly335>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion335 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha335 = Extract; -type ExcludeZulu335 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA335 { width: number; height: number; depth: number } -interface ShapeB335 { color: string; opacity: number; blend: string } -interface ShapeC335 { x: number; y: number; z: number; w: number } -interface ShapeD335 { label: string; title: string; summary: string } - -type Combined335 = ShapeA335 & ShapeB335 & ShapeC335 & ShapeD335; -type OptionalAll335 = { [K in keyof Combined335]?: Combined335[K] }; -type RequiredAll335 = { [K in keyof Combined335]-?: Combined335[K] }; -type ReadonlyAll335 = { readonly [K in keyof Combined335]: Combined335[K] }; -type NullableAll335 = { [K in keyof Combined335]: Combined335[K] | null }; +type EV_0335 = Val_0335; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString335 = T extends string ? true : false; -type IsNumber335 = T extends number ? true : false; -type TypeName335 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames335 = { - [K in keyof BigRecord335]: TypeName335; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb335 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource335 = "user" | "post" | "comment" | "tag" | "category"; -type Action335 = `${Verb335}_${Resource335}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise335 = T extends Promise ? UnwrapPromise335 : T; -type UnwrapArray335 = T extends (infer U)[] ? UnwrapArray335 : T; -type Head335 = T extends [infer H, ...infer _] ? H : never; -type Tail335 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation335 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation335>] - : never; +interface Registry_03_35 { + entities: Map; + validators: EV_0335; + paths: Set; + merged: DeepMerge_0335; +} -type SmallUnion335 = "a" | "b" | "c" | "d"; -type AllPerms335 = Permutation335; +type CK_0335 = `p03.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig335, - Flat335, - FR335, - BigUnion335, - ExtractAlpha335, - ExcludeZulu335, - OptionalAll335, - RequiredAll335, - ReadonlyAll335, - NullableAll335, - TypeNames335, - Action335, - AllPerms335, -}; +export type { Entity_03_35, Registry_03_35, CK_0335, EP_0335, EV_0335, DeepMerge_0335 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts index 5535de13..76a9f09b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-36.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-36 (seed 336) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-36 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0336 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0336 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord336 { - a336: { x: number; y: string; z: boolean }; - b336: { p: string[]; q: Record }; - c336: { nested: { deep: { deeper: { deepest: string } } } }; - d336: number; - e336: string; - f336: boolean; - g336: null; - h336: undefined; - i336: bigint; - j336: symbol; +interface Entity_03_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_36 | null; children: Entity_03_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0336: number; y0336: string; z0336: boolean }; } -type PartialBig336 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten336 = T extends Array ? Flatten336 : T; -type Nested336 = number[][][][][][][][][][]; -type Flat336 = Flatten336; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly336 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly336 : T[K]; -}; -type DeepRequired336 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired336 : T[K]; +type Path_0336 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0336}` }[keyof T & string] : never; +type EP_0336 = Path_0336; + +type Val_0336 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0336 } + : T[K] extends object ? { t: 'o'; props: Val_0336 } + : { t: 'u' }; }; -type FR336 = DeepReadonly336>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion336 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha336 = Extract; -type ExcludeZulu336 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA336 { width: number; height: number; depth: number } -interface ShapeB336 { color: string; opacity: number; blend: string } -interface ShapeC336 { x: number; y: number; z: number; w: number } -interface ShapeD336 { label: string; title: string; summary: string } - -type Combined336 = ShapeA336 & ShapeB336 & ShapeC336 & ShapeD336; -type OptionalAll336 = { [K in keyof Combined336]?: Combined336[K] }; -type RequiredAll336 = { [K in keyof Combined336]-?: Combined336[K] }; -type ReadonlyAll336 = { readonly [K in keyof Combined336]: Combined336[K] }; -type NullableAll336 = { [K in keyof Combined336]: Combined336[K] | null }; +type EV_0336 = Val_0336; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString336 = T extends string ? true : false; -type IsNumber336 = T extends number ? true : false; -type TypeName336 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames336 = { - [K in keyof BigRecord336]: TypeName336; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb336 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource336 = "user" | "post" | "comment" | "tag" | "category"; -type Action336 = `${Verb336}_${Resource336}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise336 = T extends Promise ? UnwrapPromise336 : T; -type UnwrapArray336 = T extends (infer U)[] ? UnwrapArray336 : T; -type Head336 = T extends [infer H, ...infer _] ? H : never; -type Tail336 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation336 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation336>] - : never; +interface Registry_03_36 { + entities: Map; + validators: EV_0336; + paths: Set; + merged: DeepMerge_0336; +} -type SmallUnion336 = "a" | "b" | "c" | "d"; -type AllPerms336 = Permutation336; +type CK_0336 = `p03.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig336, - Flat336, - FR336, - BigUnion336, - ExtractAlpha336, - ExcludeZulu336, - OptionalAll336, - RequiredAll336, - ReadonlyAll336, - NullableAll336, - TypeNames336, - Action336, - AllPerms336, -}; +export type { Entity_03_36, Registry_03_36, CK_0336, EP_0336, EV_0336, DeepMerge_0336 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts index e93866c6..d82f5fa1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-37.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-37 (seed 337) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-37 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0337 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0337 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord337 { - a337: { x: number; y: string; z: boolean }; - b337: { p: string[]; q: Record }; - c337: { nested: { deep: { deeper: { deepest: string } } } }; - d337: number; - e337: string; - f337: boolean; - g337: null; - h337: undefined; - i337: bigint; - j337: symbol; +interface Entity_03_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_37 | null; children: Entity_03_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0337: number; y0337: string; z0337: boolean }; } -type PartialBig337 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten337 = T extends Array ? Flatten337 : T; -type Nested337 = number[][][][][][][][][][]; -type Flat337 = Flatten337; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly337 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly337 : T[K]; -}; -type DeepRequired337 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired337 : T[K]; +type Path_0337 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0337}` }[keyof T & string] : never; +type EP_0337 = Path_0337; + +type Val_0337 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0337 } + : T[K] extends object ? { t: 'o'; props: Val_0337 } + : { t: 'u' }; }; -type FR337 = DeepReadonly337>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion337 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha337 = Extract; -type ExcludeZulu337 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA337 { width: number; height: number; depth: number } -interface ShapeB337 { color: string; opacity: number; blend: string } -interface ShapeC337 { x: number; y: number; z: number; w: number } -interface ShapeD337 { label: string; title: string; summary: string } - -type Combined337 = ShapeA337 & ShapeB337 & ShapeC337 & ShapeD337; -type OptionalAll337 = { [K in keyof Combined337]?: Combined337[K] }; -type RequiredAll337 = { [K in keyof Combined337]-?: Combined337[K] }; -type ReadonlyAll337 = { readonly [K in keyof Combined337]: Combined337[K] }; -type NullableAll337 = { [K in keyof Combined337]: Combined337[K] | null }; +type EV_0337 = Val_0337; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString337 = T extends string ? true : false; -type IsNumber337 = T extends number ? true : false; -type TypeName337 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames337 = { - [K in keyof BigRecord337]: TypeName337; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb337 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource337 = "user" | "post" | "comment" | "tag" | "category"; -type Action337 = `${Verb337}_${Resource337}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise337 = T extends Promise ? UnwrapPromise337 : T; -type UnwrapArray337 = T extends (infer U)[] ? UnwrapArray337 : T; -type Head337 = T extends [infer H, ...infer _] ? H : never; -type Tail337 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation337 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation337>] - : never; +interface Registry_03_37 { + entities: Map; + validators: EV_0337; + paths: Set; + merged: DeepMerge_0337; +} -type SmallUnion337 = "a" | "b" | "c" | "d"; -type AllPerms337 = Permutation337; +type CK_0337 = `p03.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig337, - Flat337, - FR337, - BigUnion337, - ExtractAlpha337, - ExcludeZulu337, - OptionalAll337, - RequiredAll337, - ReadonlyAll337, - NullableAll337, - TypeNames337, - Action337, - AllPerms337, -}; +export type { Entity_03_37, Registry_03_37, CK_0337, EP_0337, EV_0337, DeepMerge_0337 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts index 8b41be50..bdd02db8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-38.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-38 (seed 338) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-38 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0338 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0338 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord338 { - a338: { x: number; y: string; z: boolean }; - b338: { p: string[]; q: Record }; - c338: { nested: { deep: { deeper: { deepest: string } } } }; - d338: number; - e338: string; - f338: boolean; - g338: null; - h338: undefined; - i338: bigint; - j338: symbol; +interface Entity_03_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_38 | null; children: Entity_03_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0338: number; y0338: string; z0338: boolean }; } -type PartialBig338 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten338 = T extends Array ? Flatten338 : T; -type Nested338 = number[][][][][][][][][][]; -type Flat338 = Flatten338; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly338 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly338 : T[K]; -}; -type DeepRequired338 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired338 : T[K]; +type Path_0338 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0338}` }[keyof T & string] : never; +type EP_0338 = Path_0338; + +type Val_0338 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0338 } + : T[K] extends object ? { t: 'o'; props: Val_0338 } + : { t: 'u' }; }; -type FR338 = DeepReadonly338>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion338 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha338 = Extract; -type ExcludeZulu338 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA338 { width: number; height: number; depth: number } -interface ShapeB338 { color: string; opacity: number; blend: string } -interface ShapeC338 { x: number; y: number; z: number; w: number } -interface ShapeD338 { label: string; title: string; summary: string } - -type Combined338 = ShapeA338 & ShapeB338 & ShapeC338 & ShapeD338; -type OptionalAll338 = { [K in keyof Combined338]?: Combined338[K] }; -type RequiredAll338 = { [K in keyof Combined338]-?: Combined338[K] }; -type ReadonlyAll338 = { readonly [K in keyof Combined338]: Combined338[K] }; -type NullableAll338 = { [K in keyof Combined338]: Combined338[K] | null }; +type EV_0338 = Val_0338; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString338 = T extends string ? true : false; -type IsNumber338 = T extends number ? true : false; -type TypeName338 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames338 = { - [K in keyof BigRecord338]: TypeName338; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb338 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource338 = "user" | "post" | "comment" | "tag" | "category"; -type Action338 = `${Verb338}_${Resource338}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise338 = T extends Promise ? UnwrapPromise338 : T; -type UnwrapArray338 = T extends (infer U)[] ? UnwrapArray338 : T; -type Head338 = T extends [infer H, ...infer _] ? H : never; -type Tail338 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation338 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation338>] - : never; +interface Registry_03_38 { + entities: Map; + validators: EV_0338; + paths: Set; + merged: DeepMerge_0338; +} -type SmallUnion338 = "a" | "b" | "c" | "d"; -type AllPerms338 = Permutation338; +type CK_0338 = `p03.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig338, - Flat338, - FR338, - BigUnion338, - ExtractAlpha338, - ExcludeZulu338, - OptionalAll338, - RequiredAll338, - ReadonlyAll338, - NullableAll338, - TypeNames338, - Action338, - AllPerms338, -}; +export type { Entity_03_38, Registry_03_38, CK_0338, EP_0338, EV_0338, DeepMerge_0338 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts index 7a667ec9..d9ab0080 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-39.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-39 (seed 339) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-39 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0339 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0339 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord339 { - a339: { x: number; y: string; z: boolean }; - b339: { p: string[]; q: Record }; - c339: { nested: { deep: { deeper: { deepest: string } } } }; - d339: number; - e339: string; - f339: boolean; - g339: null; - h339: undefined; - i339: bigint; - j339: symbol; +interface Entity_03_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_39 | null; children: Entity_03_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0339: number; y0339: string; z0339: boolean }; } -type PartialBig339 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten339 = T extends Array ? Flatten339 : T; -type Nested339 = number[][][][][][][][][][]; -type Flat339 = Flatten339; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly339 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly339 : T[K]; -}; -type DeepRequired339 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired339 : T[K]; +type Path_0339 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0339}` }[keyof T & string] : never; +type EP_0339 = Path_0339; + +type Val_0339 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0339 } + : T[K] extends object ? { t: 'o'; props: Val_0339 } + : { t: 'u' }; }; -type FR339 = DeepReadonly339>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion339 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha339 = Extract; -type ExcludeZulu339 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA339 { width: number; height: number; depth: number } -interface ShapeB339 { color: string; opacity: number; blend: string } -interface ShapeC339 { x: number; y: number; z: number; w: number } -interface ShapeD339 { label: string; title: string; summary: string } - -type Combined339 = ShapeA339 & ShapeB339 & ShapeC339 & ShapeD339; -type OptionalAll339 = { [K in keyof Combined339]?: Combined339[K] }; -type RequiredAll339 = { [K in keyof Combined339]-?: Combined339[K] }; -type ReadonlyAll339 = { readonly [K in keyof Combined339]: Combined339[K] }; -type NullableAll339 = { [K in keyof Combined339]: Combined339[K] | null }; +type EV_0339 = Val_0339; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString339 = T extends string ? true : false; -type IsNumber339 = T extends number ? true : false; -type TypeName339 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames339 = { - [K in keyof BigRecord339]: TypeName339; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb339 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource339 = "user" | "post" | "comment" | "tag" | "category"; -type Action339 = `${Verb339}_${Resource339}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise339 = T extends Promise ? UnwrapPromise339 : T; -type UnwrapArray339 = T extends (infer U)[] ? UnwrapArray339 : T; -type Head339 = T extends [infer H, ...infer _] ? H : never; -type Tail339 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation339 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation339>] - : never; +interface Registry_03_39 { + entities: Map; + validators: EV_0339; + paths: Set; + merged: DeepMerge_0339; +} -type SmallUnion339 = "a" | "b" | "c" | "d"; -type AllPerms339 = Permutation339; +type CK_0339 = `p03.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig339, - Flat339, - FR339, - BigUnion339, - ExtractAlpha339, - ExcludeZulu339, - OptionalAll339, - RequiredAll339, - ReadonlyAll339, - NullableAll339, - TypeNames339, - Action339, - AllPerms339, -}; +export type { Entity_03_39, Registry_03_39, CK_0339, EP_0339, EV_0339, DeepMerge_0339 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts index e901686f..da215989 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-40.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-40 (seed 340) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-40 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0340 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0340 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord340 { - a340: { x: number; y: string; z: boolean }; - b340: { p: string[]; q: Record }; - c340: { nested: { deep: { deeper: { deepest: string } } } }; - d340: number; - e340: string; - f340: boolean; - g340: null; - h340: undefined; - i340: bigint; - j340: symbol; +interface Entity_03_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_40 | null; children: Entity_03_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0340: number; y0340: string; z0340: boolean }; } -type PartialBig340 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten340 = T extends Array ? Flatten340 : T; -type Nested340 = number[][][][][][][][][][]; -type Flat340 = Flatten340; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly340 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly340 : T[K]; -}; -type DeepRequired340 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired340 : T[K]; +type Path_0340 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0340}` }[keyof T & string] : never; +type EP_0340 = Path_0340; + +type Val_0340 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0340 } + : T[K] extends object ? { t: 'o'; props: Val_0340 } + : { t: 'u' }; }; -type FR340 = DeepReadonly340>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion340 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha340 = Extract; -type ExcludeZulu340 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA340 { width: number; height: number; depth: number } -interface ShapeB340 { color: string; opacity: number; blend: string } -interface ShapeC340 { x: number; y: number; z: number; w: number } -interface ShapeD340 { label: string; title: string; summary: string } - -type Combined340 = ShapeA340 & ShapeB340 & ShapeC340 & ShapeD340; -type OptionalAll340 = { [K in keyof Combined340]?: Combined340[K] }; -type RequiredAll340 = { [K in keyof Combined340]-?: Combined340[K] }; -type ReadonlyAll340 = { readonly [K in keyof Combined340]: Combined340[K] }; -type NullableAll340 = { [K in keyof Combined340]: Combined340[K] | null }; +type EV_0340 = Val_0340; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString340 = T extends string ? true : false; -type IsNumber340 = T extends number ? true : false; -type TypeName340 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames340 = { - [K in keyof BigRecord340]: TypeName340; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb340 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource340 = "user" | "post" | "comment" | "tag" | "category"; -type Action340 = `${Verb340}_${Resource340}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise340 = T extends Promise ? UnwrapPromise340 : T; -type UnwrapArray340 = T extends (infer U)[] ? UnwrapArray340 : T; -type Head340 = T extends [infer H, ...infer _] ? H : never; -type Tail340 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation340 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation340>] - : never; +interface Registry_03_40 { + entities: Map; + validators: EV_0340; + paths: Set; + merged: DeepMerge_0340; +} -type SmallUnion340 = "a" | "b" | "c" | "d"; -type AllPerms340 = Permutation340; +type CK_0340 = `p03.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig340, - Flat340, - FR340, - BigUnion340, - ExtractAlpha340, - ExcludeZulu340, - OptionalAll340, - RequiredAll340, - ReadonlyAll340, - NullableAll340, - TypeNames340, - Action340, - AllPerms340, -}; +export type { Entity_03_40, Registry_03_40, CK_0340, EP_0340, EV_0340, DeepMerge_0340 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts index 6b45373b..8b9816f9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-41.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-41 (seed 341) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-41 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0341 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0341 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord341 { - a341: { x: number; y: string; z: boolean }; - b341: { p: string[]; q: Record }; - c341: { nested: { deep: { deeper: { deepest: string } } } }; - d341: number; - e341: string; - f341: boolean; - g341: null; - h341: undefined; - i341: bigint; - j341: symbol; +interface Entity_03_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_41 | null; children: Entity_03_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0341: number; y0341: string; z0341: boolean }; } -type PartialBig341 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten341 = T extends Array ? Flatten341 : T; -type Nested341 = number[][][][][][][][][][]; -type Flat341 = Flatten341; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly341 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly341 : T[K]; -}; -type DeepRequired341 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired341 : T[K]; +type Path_0341 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0341}` }[keyof T & string] : never; +type EP_0341 = Path_0341; + +type Val_0341 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0341 } + : T[K] extends object ? { t: 'o'; props: Val_0341 } + : { t: 'u' }; }; -type FR341 = DeepReadonly341>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion341 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha341 = Extract; -type ExcludeZulu341 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA341 { width: number; height: number; depth: number } -interface ShapeB341 { color: string; opacity: number; blend: string } -interface ShapeC341 { x: number; y: number; z: number; w: number } -interface ShapeD341 { label: string; title: string; summary: string } - -type Combined341 = ShapeA341 & ShapeB341 & ShapeC341 & ShapeD341; -type OptionalAll341 = { [K in keyof Combined341]?: Combined341[K] }; -type RequiredAll341 = { [K in keyof Combined341]-?: Combined341[K] }; -type ReadonlyAll341 = { readonly [K in keyof Combined341]: Combined341[K] }; -type NullableAll341 = { [K in keyof Combined341]: Combined341[K] | null }; +type EV_0341 = Val_0341; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString341 = T extends string ? true : false; -type IsNumber341 = T extends number ? true : false; -type TypeName341 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames341 = { - [K in keyof BigRecord341]: TypeName341; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb341 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource341 = "user" | "post" | "comment" | "tag" | "category"; -type Action341 = `${Verb341}_${Resource341}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise341 = T extends Promise ? UnwrapPromise341 : T; -type UnwrapArray341 = T extends (infer U)[] ? UnwrapArray341 : T; -type Head341 = T extends [infer H, ...infer _] ? H : never; -type Tail341 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation341 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation341>] - : never; +interface Registry_03_41 { + entities: Map; + validators: EV_0341; + paths: Set; + merged: DeepMerge_0341; +} -type SmallUnion341 = "a" | "b" | "c" | "d"; -type AllPerms341 = Permutation341; +type CK_0341 = `p03.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig341, - Flat341, - FR341, - BigUnion341, - ExtractAlpha341, - ExcludeZulu341, - OptionalAll341, - RequiredAll341, - ReadonlyAll341, - NullableAll341, - TypeNames341, - Action341, - AllPerms341, -}; +export type { Entity_03_41, Registry_03_41, CK_0341, EP_0341, EV_0341, DeepMerge_0341 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts index eb08ee58..5a6881d3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-42.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-42 (seed 342) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-42 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0342 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0342 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord342 { - a342: { x: number; y: string; z: boolean }; - b342: { p: string[]; q: Record }; - c342: { nested: { deep: { deeper: { deepest: string } } } }; - d342: number; - e342: string; - f342: boolean; - g342: null; - h342: undefined; - i342: bigint; - j342: symbol; +interface Entity_03_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_42 | null; children: Entity_03_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0342: number; y0342: string; z0342: boolean }; } -type PartialBig342 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten342 = T extends Array ? Flatten342 : T; -type Nested342 = number[][][][][][][][][][]; -type Flat342 = Flatten342; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly342 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly342 : T[K]; -}; -type DeepRequired342 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired342 : T[K]; +type Path_0342 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0342}` }[keyof T & string] : never; +type EP_0342 = Path_0342; + +type Val_0342 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0342 } + : T[K] extends object ? { t: 'o'; props: Val_0342 } + : { t: 'u' }; }; -type FR342 = DeepReadonly342>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion342 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha342 = Extract; -type ExcludeZulu342 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA342 { width: number; height: number; depth: number } -interface ShapeB342 { color: string; opacity: number; blend: string } -interface ShapeC342 { x: number; y: number; z: number; w: number } -interface ShapeD342 { label: string; title: string; summary: string } - -type Combined342 = ShapeA342 & ShapeB342 & ShapeC342 & ShapeD342; -type OptionalAll342 = { [K in keyof Combined342]?: Combined342[K] }; -type RequiredAll342 = { [K in keyof Combined342]-?: Combined342[K] }; -type ReadonlyAll342 = { readonly [K in keyof Combined342]: Combined342[K] }; -type NullableAll342 = { [K in keyof Combined342]: Combined342[K] | null }; +type EV_0342 = Val_0342; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString342 = T extends string ? true : false; -type IsNumber342 = T extends number ? true : false; -type TypeName342 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames342 = { - [K in keyof BigRecord342]: TypeName342; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb342 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource342 = "user" | "post" | "comment" | "tag" | "category"; -type Action342 = `${Verb342}_${Resource342}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise342 = T extends Promise ? UnwrapPromise342 : T; -type UnwrapArray342 = T extends (infer U)[] ? UnwrapArray342 : T; -type Head342 = T extends [infer H, ...infer _] ? H : never; -type Tail342 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation342 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation342>] - : never; +interface Registry_03_42 { + entities: Map; + validators: EV_0342; + paths: Set; + merged: DeepMerge_0342; +} -type SmallUnion342 = "a" | "b" | "c" | "d"; -type AllPerms342 = Permutation342; +type CK_0342 = `p03.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig342, - Flat342, - FR342, - BigUnion342, - ExtractAlpha342, - ExcludeZulu342, - OptionalAll342, - RequiredAll342, - ReadonlyAll342, - NullableAll342, - TypeNames342, - Action342, - AllPerms342, -}; +export type { Entity_03_42, Registry_03_42, CK_0342, EP_0342, EV_0342, DeepMerge_0342 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts index 5463a5df..59a06065 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-43.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-43 (seed 343) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-43 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0343 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0343 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord343 { - a343: { x: number; y: string; z: boolean }; - b343: { p: string[]; q: Record }; - c343: { nested: { deep: { deeper: { deepest: string } } } }; - d343: number; - e343: string; - f343: boolean; - g343: null; - h343: undefined; - i343: bigint; - j343: symbol; +interface Entity_03_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_43 | null; children: Entity_03_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0343: number; y0343: string; z0343: boolean }; } -type PartialBig343 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten343 = T extends Array ? Flatten343 : T; -type Nested343 = number[][][][][][][][][][]; -type Flat343 = Flatten343; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly343 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly343 : T[K]; -}; -type DeepRequired343 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired343 : T[K]; +type Path_0343 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0343}` }[keyof T & string] : never; +type EP_0343 = Path_0343; + +type Val_0343 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0343 } + : T[K] extends object ? { t: 'o'; props: Val_0343 } + : { t: 'u' }; }; -type FR343 = DeepReadonly343>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion343 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha343 = Extract; -type ExcludeZulu343 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA343 { width: number; height: number; depth: number } -interface ShapeB343 { color: string; opacity: number; blend: string } -interface ShapeC343 { x: number; y: number; z: number; w: number } -interface ShapeD343 { label: string; title: string; summary: string } - -type Combined343 = ShapeA343 & ShapeB343 & ShapeC343 & ShapeD343; -type OptionalAll343 = { [K in keyof Combined343]?: Combined343[K] }; -type RequiredAll343 = { [K in keyof Combined343]-?: Combined343[K] }; -type ReadonlyAll343 = { readonly [K in keyof Combined343]: Combined343[K] }; -type NullableAll343 = { [K in keyof Combined343]: Combined343[K] | null }; +type EV_0343 = Val_0343; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString343 = T extends string ? true : false; -type IsNumber343 = T extends number ? true : false; -type TypeName343 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames343 = { - [K in keyof BigRecord343]: TypeName343; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb343 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource343 = "user" | "post" | "comment" | "tag" | "category"; -type Action343 = `${Verb343}_${Resource343}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise343 = T extends Promise ? UnwrapPromise343 : T; -type UnwrapArray343 = T extends (infer U)[] ? UnwrapArray343 : T; -type Head343 = T extends [infer H, ...infer _] ? H : never; -type Tail343 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation343 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation343>] - : never; +interface Registry_03_43 { + entities: Map; + validators: EV_0343; + paths: Set; + merged: DeepMerge_0343; +} -type SmallUnion343 = "a" | "b" | "c" | "d"; -type AllPerms343 = Permutation343; +type CK_0343 = `p03.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig343, - Flat343, - FR343, - BigUnion343, - ExtractAlpha343, - ExcludeZulu343, - OptionalAll343, - RequiredAll343, - ReadonlyAll343, - NullableAll343, - TypeNames343, - Action343, - AllPerms343, -}; +export type { Entity_03_43, Registry_03_43, CK_0343, EP_0343, EV_0343, DeepMerge_0343 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts index a831a492..51f6ba99 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-44.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-44 (seed 344) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-44 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0344 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0344 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord344 { - a344: { x: number; y: string; z: boolean }; - b344: { p: string[]; q: Record }; - c344: { nested: { deep: { deeper: { deepest: string } } } }; - d344: number; - e344: string; - f344: boolean; - g344: null; - h344: undefined; - i344: bigint; - j344: symbol; +interface Entity_03_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_44 | null; children: Entity_03_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0344: number; y0344: string; z0344: boolean }; } -type PartialBig344 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten344 = T extends Array ? Flatten344 : T; -type Nested344 = number[][][][][][][][][][]; -type Flat344 = Flatten344; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly344 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly344 : T[K]; -}; -type DeepRequired344 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired344 : T[K]; +type Path_0344 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0344}` }[keyof T & string] : never; +type EP_0344 = Path_0344; + +type Val_0344 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0344 } + : T[K] extends object ? { t: 'o'; props: Val_0344 } + : { t: 'u' }; }; -type FR344 = DeepReadonly344>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion344 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha344 = Extract; -type ExcludeZulu344 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA344 { width: number; height: number; depth: number } -interface ShapeB344 { color: string; opacity: number; blend: string } -interface ShapeC344 { x: number; y: number; z: number; w: number } -interface ShapeD344 { label: string; title: string; summary: string } - -type Combined344 = ShapeA344 & ShapeB344 & ShapeC344 & ShapeD344; -type OptionalAll344 = { [K in keyof Combined344]?: Combined344[K] }; -type RequiredAll344 = { [K in keyof Combined344]-?: Combined344[K] }; -type ReadonlyAll344 = { readonly [K in keyof Combined344]: Combined344[K] }; -type NullableAll344 = { [K in keyof Combined344]: Combined344[K] | null }; +type EV_0344 = Val_0344; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString344 = T extends string ? true : false; -type IsNumber344 = T extends number ? true : false; -type TypeName344 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames344 = { - [K in keyof BigRecord344]: TypeName344; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb344 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource344 = "user" | "post" | "comment" | "tag" | "category"; -type Action344 = `${Verb344}_${Resource344}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise344 = T extends Promise ? UnwrapPromise344 : T; -type UnwrapArray344 = T extends (infer U)[] ? UnwrapArray344 : T; -type Head344 = T extends [infer H, ...infer _] ? H : never; -type Tail344 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation344 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation344>] - : never; +interface Registry_03_44 { + entities: Map; + validators: EV_0344; + paths: Set; + merged: DeepMerge_0344; +} -type SmallUnion344 = "a" | "b" | "c" | "d"; -type AllPerms344 = Permutation344; +type CK_0344 = `p03.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig344, - Flat344, - FR344, - BigUnion344, - ExtractAlpha344, - ExcludeZulu344, - OptionalAll344, - RequiredAll344, - ReadonlyAll344, - NullableAll344, - TypeNames344, - Action344, - AllPerms344, -}; +export type { Entity_03_44, Registry_03_44, CK_0344, EP_0344, EV_0344, DeepMerge_0344 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts index 59df2730..f5f32082 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-45.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-45 (seed 345) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-45 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0345 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0345 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord345 { - a345: { x: number; y: string; z: boolean }; - b345: { p: string[]; q: Record }; - c345: { nested: { deep: { deeper: { deepest: string } } } }; - d345: number; - e345: string; - f345: boolean; - g345: null; - h345: undefined; - i345: bigint; - j345: symbol; +interface Entity_03_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_45 | null; children: Entity_03_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0345: number; y0345: string; z0345: boolean }; } -type PartialBig345 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten345 = T extends Array ? Flatten345 : T; -type Nested345 = number[][][][][][][][][][]; -type Flat345 = Flatten345; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly345 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly345 : T[K]; -}; -type DeepRequired345 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired345 : T[K]; +type Path_0345 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0345}` }[keyof T & string] : never; +type EP_0345 = Path_0345; + +type Val_0345 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0345 } + : T[K] extends object ? { t: 'o'; props: Val_0345 } + : { t: 'u' }; }; -type FR345 = DeepReadonly345>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion345 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha345 = Extract; -type ExcludeZulu345 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA345 { width: number; height: number; depth: number } -interface ShapeB345 { color: string; opacity: number; blend: string } -interface ShapeC345 { x: number; y: number; z: number; w: number } -interface ShapeD345 { label: string; title: string; summary: string } - -type Combined345 = ShapeA345 & ShapeB345 & ShapeC345 & ShapeD345; -type OptionalAll345 = { [K in keyof Combined345]?: Combined345[K] }; -type RequiredAll345 = { [K in keyof Combined345]-?: Combined345[K] }; -type ReadonlyAll345 = { readonly [K in keyof Combined345]: Combined345[K] }; -type NullableAll345 = { [K in keyof Combined345]: Combined345[K] | null }; +type EV_0345 = Val_0345; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString345 = T extends string ? true : false; -type IsNumber345 = T extends number ? true : false; -type TypeName345 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames345 = { - [K in keyof BigRecord345]: TypeName345; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb345 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource345 = "user" | "post" | "comment" | "tag" | "category"; -type Action345 = `${Verb345}_${Resource345}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise345 = T extends Promise ? UnwrapPromise345 : T; -type UnwrapArray345 = T extends (infer U)[] ? UnwrapArray345 : T; -type Head345 = T extends [infer H, ...infer _] ? H : never; -type Tail345 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation345 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation345>] - : never; +interface Registry_03_45 { + entities: Map; + validators: EV_0345; + paths: Set; + merged: DeepMerge_0345; +} -type SmallUnion345 = "a" | "b" | "c" | "d"; -type AllPerms345 = Permutation345; +type CK_0345 = `p03.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig345, - Flat345, - FR345, - BigUnion345, - ExtractAlpha345, - ExcludeZulu345, - OptionalAll345, - RequiredAll345, - ReadonlyAll345, - NullableAll345, - TypeNames345, - Action345, - AllPerms345, -}; +export type { Entity_03_45, Registry_03_45, CK_0345, EP_0345, EV_0345, DeepMerge_0345 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts index b3a5de26..0d084b2b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-46.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-46 (seed 346) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-46 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0346 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0346 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord346 { - a346: { x: number; y: string; z: boolean }; - b346: { p: string[]; q: Record }; - c346: { nested: { deep: { deeper: { deepest: string } } } }; - d346: number; - e346: string; - f346: boolean; - g346: null; - h346: undefined; - i346: bigint; - j346: symbol; +interface Entity_03_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_46 | null; children: Entity_03_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0346: number; y0346: string; z0346: boolean }; } -type PartialBig346 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten346 = T extends Array ? Flatten346 : T; -type Nested346 = number[][][][][][][][][][]; -type Flat346 = Flatten346; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly346 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly346 : T[K]; -}; -type DeepRequired346 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired346 : T[K]; +type Path_0346 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0346}` }[keyof T & string] : never; +type EP_0346 = Path_0346; + +type Val_0346 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0346 } + : T[K] extends object ? { t: 'o'; props: Val_0346 } + : { t: 'u' }; }; -type FR346 = DeepReadonly346>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion346 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha346 = Extract; -type ExcludeZulu346 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA346 { width: number; height: number; depth: number } -interface ShapeB346 { color: string; opacity: number; blend: string } -interface ShapeC346 { x: number; y: number; z: number; w: number } -interface ShapeD346 { label: string; title: string; summary: string } - -type Combined346 = ShapeA346 & ShapeB346 & ShapeC346 & ShapeD346; -type OptionalAll346 = { [K in keyof Combined346]?: Combined346[K] }; -type RequiredAll346 = { [K in keyof Combined346]-?: Combined346[K] }; -type ReadonlyAll346 = { readonly [K in keyof Combined346]: Combined346[K] }; -type NullableAll346 = { [K in keyof Combined346]: Combined346[K] | null }; +type EV_0346 = Val_0346; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString346 = T extends string ? true : false; -type IsNumber346 = T extends number ? true : false; -type TypeName346 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames346 = { - [K in keyof BigRecord346]: TypeName346; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb346 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource346 = "user" | "post" | "comment" | "tag" | "category"; -type Action346 = `${Verb346}_${Resource346}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise346 = T extends Promise ? UnwrapPromise346 : T; -type UnwrapArray346 = T extends (infer U)[] ? UnwrapArray346 : T; -type Head346 = T extends [infer H, ...infer _] ? H : never; -type Tail346 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation346 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation346>] - : never; +interface Registry_03_46 { + entities: Map; + validators: EV_0346; + paths: Set; + merged: DeepMerge_0346; +} -type SmallUnion346 = "a" | "b" | "c" | "d"; -type AllPerms346 = Permutation346; +type CK_0346 = `p03.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig346, - Flat346, - FR346, - BigUnion346, - ExtractAlpha346, - ExcludeZulu346, - OptionalAll346, - RequiredAll346, - ReadonlyAll346, - NullableAll346, - TypeNames346, - Action346, - AllPerms346, -}; +export type { Entity_03_46, Registry_03_46, CK_0346, EP_0346, EV_0346, DeepMerge_0346 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts index 2d6efdd7..507f9836 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-47.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-47 (seed 347) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-47 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0347 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0347 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord347 { - a347: { x: number; y: string; z: boolean }; - b347: { p: string[]; q: Record }; - c347: { nested: { deep: { deeper: { deepest: string } } } }; - d347: number; - e347: string; - f347: boolean; - g347: null; - h347: undefined; - i347: bigint; - j347: symbol; +interface Entity_03_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_47 | null; children: Entity_03_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0347: number; y0347: string; z0347: boolean }; } -type PartialBig347 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten347 = T extends Array ? Flatten347 : T; -type Nested347 = number[][][][][][][][][][]; -type Flat347 = Flatten347; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly347 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly347 : T[K]; -}; -type DeepRequired347 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired347 : T[K]; +type Path_0347 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0347}` }[keyof T & string] : never; +type EP_0347 = Path_0347; + +type Val_0347 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0347 } + : T[K] extends object ? { t: 'o'; props: Val_0347 } + : { t: 'u' }; }; -type FR347 = DeepReadonly347>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion347 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha347 = Extract; -type ExcludeZulu347 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA347 { width: number; height: number; depth: number } -interface ShapeB347 { color: string; opacity: number; blend: string } -interface ShapeC347 { x: number; y: number; z: number; w: number } -interface ShapeD347 { label: string; title: string; summary: string } - -type Combined347 = ShapeA347 & ShapeB347 & ShapeC347 & ShapeD347; -type OptionalAll347 = { [K in keyof Combined347]?: Combined347[K] }; -type RequiredAll347 = { [K in keyof Combined347]-?: Combined347[K] }; -type ReadonlyAll347 = { readonly [K in keyof Combined347]: Combined347[K] }; -type NullableAll347 = { [K in keyof Combined347]: Combined347[K] | null }; +type EV_0347 = Val_0347; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString347 = T extends string ? true : false; -type IsNumber347 = T extends number ? true : false; -type TypeName347 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames347 = { - [K in keyof BigRecord347]: TypeName347; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb347 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource347 = "user" | "post" | "comment" | "tag" | "category"; -type Action347 = `${Verb347}_${Resource347}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise347 = T extends Promise ? UnwrapPromise347 : T; -type UnwrapArray347 = T extends (infer U)[] ? UnwrapArray347 : T; -type Head347 = T extends [infer H, ...infer _] ? H : never; -type Tail347 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation347 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation347>] - : never; +interface Registry_03_47 { + entities: Map; + validators: EV_0347; + paths: Set; + merged: DeepMerge_0347; +} -type SmallUnion347 = "a" | "b" | "c" | "d"; -type AllPerms347 = Permutation347; +type CK_0347 = `p03.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig347, - Flat347, - FR347, - BigUnion347, - ExtractAlpha347, - ExcludeZulu347, - OptionalAll347, - RequiredAll347, - ReadonlyAll347, - NullableAll347, - TypeNames347, - Action347, - AllPerms347, -}; +export type { Entity_03_47, Registry_03_47, CK_0347, EP_0347, EV_0347, DeepMerge_0347 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts index d178e5ea..721811f3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-48.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-48 (seed 348) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-48 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0348 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0348 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord348 { - a348: { x: number; y: string; z: boolean }; - b348: { p: string[]; q: Record }; - c348: { nested: { deep: { deeper: { deepest: string } } } }; - d348: number; - e348: string; - f348: boolean; - g348: null; - h348: undefined; - i348: bigint; - j348: symbol; +interface Entity_03_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_48 | null; children: Entity_03_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0348: number; y0348: string; z0348: boolean }; } -type PartialBig348 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten348 = T extends Array ? Flatten348 : T; -type Nested348 = number[][][][][][][][][][]; -type Flat348 = Flatten348; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly348 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly348 : T[K]; -}; -type DeepRequired348 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired348 : T[K]; +type Path_0348 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0348}` }[keyof T & string] : never; +type EP_0348 = Path_0348; + +type Val_0348 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0348 } + : T[K] extends object ? { t: 'o'; props: Val_0348 } + : { t: 'u' }; }; -type FR348 = DeepReadonly348>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion348 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha348 = Extract; -type ExcludeZulu348 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA348 { width: number; height: number; depth: number } -interface ShapeB348 { color: string; opacity: number; blend: string } -interface ShapeC348 { x: number; y: number; z: number; w: number } -interface ShapeD348 { label: string; title: string; summary: string } - -type Combined348 = ShapeA348 & ShapeB348 & ShapeC348 & ShapeD348; -type OptionalAll348 = { [K in keyof Combined348]?: Combined348[K] }; -type RequiredAll348 = { [K in keyof Combined348]-?: Combined348[K] }; -type ReadonlyAll348 = { readonly [K in keyof Combined348]: Combined348[K] }; -type NullableAll348 = { [K in keyof Combined348]: Combined348[K] | null }; +type EV_0348 = Val_0348; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString348 = T extends string ? true : false; -type IsNumber348 = T extends number ? true : false; -type TypeName348 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames348 = { - [K in keyof BigRecord348]: TypeName348; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb348 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource348 = "user" | "post" | "comment" | "tag" | "category"; -type Action348 = `${Verb348}_${Resource348}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise348 = T extends Promise ? UnwrapPromise348 : T; -type UnwrapArray348 = T extends (infer U)[] ? UnwrapArray348 : T; -type Head348 = T extends [infer H, ...infer _] ? H : never; -type Tail348 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation348 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation348>] - : never; +interface Registry_03_48 { + entities: Map; + validators: EV_0348; + paths: Set; + merged: DeepMerge_0348; +} -type SmallUnion348 = "a" | "b" | "c" | "d"; -type AllPerms348 = Permutation348; +type CK_0348 = `p03.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig348, - Flat348, - FR348, - BigUnion348, - ExtractAlpha348, - ExcludeZulu348, - OptionalAll348, - RequiredAll348, - ReadonlyAll348, - NullableAll348, - TypeNames348, - Action348, - AllPerms348, -}; +export type { Entity_03_48, Registry_03_48, CK_0348, EP_0348, EV_0348, DeepMerge_0348 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts index c8495671..1a54285b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-49.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-49 (seed 349) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-49 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0349 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0349 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord349 { - a349: { x: number; y: string; z: boolean }; - b349: { p: string[]; q: Record }; - c349: { nested: { deep: { deeper: { deepest: string } } } }; - d349: number; - e349: string; - f349: boolean; - g349: null; - h349: undefined; - i349: bigint; - j349: symbol; +interface Entity_03_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_49 | null; children: Entity_03_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0349: number; y0349: string; z0349: boolean }; } -type PartialBig349 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten349 = T extends Array ? Flatten349 : T; -type Nested349 = number[][][][][][][][][][]; -type Flat349 = Flatten349; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly349 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly349 : T[K]; -}; -type DeepRequired349 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired349 : T[K]; +type Path_0349 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0349}` }[keyof T & string] : never; +type EP_0349 = Path_0349; + +type Val_0349 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0349 } + : T[K] extends object ? { t: 'o'; props: Val_0349 } + : { t: 'u' }; }; -type FR349 = DeepReadonly349>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion349 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha349 = Extract; -type ExcludeZulu349 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA349 { width: number; height: number; depth: number } -interface ShapeB349 { color: string; opacity: number; blend: string } -interface ShapeC349 { x: number; y: number; z: number; w: number } -interface ShapeD349 { label: string; title: string; summary: string } - -type Combined349 = ShapeA349 & ShapeB349 & ShapeC349 & ShapeD349; -type OptionalAll349 = { [K in keyof Combined349]?: Combined349[K] }; -type RequiredAll349 = { [K in keyof Combined349]-?: Combined349[K] }; -type ReadonlyAll349 = { readonly [K in keyof Combined349]: Combined349[K] }; -type NullableAll349 = { [K in keyof Combined349]: Combined349[K] | null }; +type EV_0349 = Val_0349; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString349 = T extends string ? true : false; -type IsNumber349 = T extends number ? true : false; -type TypeName349 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames349 = { - [K in keyof BigRecord349]: TypeName349; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb349 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource349 = "user" | "post" | "comment" | "tag" | "category"; -type Action349 = `${Verb349}_${Resource349}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise349 = T extends Promise ? UnwrapPromise349 : T; -type UnwrapArray349 = T extends (infer U)[] ? UnwrapArray349 : T; -type Head349 = T extends [infer H, ...infer _] ? H : never; -type Tail349 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation349 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation349>] - : never; +interface Registry_03_49 { + entities: Map; + validators: EV_0349; + paths: Set; + merged: DeepMerge_0349; +} -type SmallUnion349 = "a" | "b" | "c" | "d"; -type AllPerms349 = Permutation349; +type CK_0349 = `p03.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig349, - Flat349, - FR349, - BigUnion349, - ExtractAlpha349, - ExcludeZulu349, - OptionalAll349, - RequiredAll349, - ReadonlyAll349, - NullableAll349, - TypeNames349, - Action349, - AllPerms349, -}; +export type { Entity_03_49, Registry_03_49, CK_0349, EP_0349, EV_0349, DeepMerge_0349 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts index 519bb220..926f9ef7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-03/types-50.ts @@ -1,125 +1,47 @@ -// pkg-03 / types-50 (seed 350) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-03/types-50 - heavy interconnected types + +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0350 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0350 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord350 { - a350: { x: number; y: string; z: boolean }; - b350: { p: string[]; q: Record }; - c350: { nested: { deep: { deeper: { deepest: string } } } }; - d350: number; - e350: string; - f350: boolean; - g350: null; - h350: undefined; - i350: bigint; - j350: symbol; +interface Entity_03_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_03_50 | null; children: Entity_03_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0350: number; y0350: string; z0350: boolean }; } -type PartialBig350 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten350 = T extends Array ? Flatten350 : T; -type Nested350 = number[][][][][][][][][][]; -type Flat350 = Flatten350; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly350 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly350 : T[K]; -}; -type DeepRequired350 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired350 : T[K]; +type Path_0350 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0350}` }[keyof T & string] : never; +type EP_0350 = Path_0350; + +type Val_0350 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0350 } + : T[K] extends object ? { t: 'o'; props: Val_0350 } + : { t: 'u' }; }; -type FR350 = DeepReadonly350>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion350 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha350 = Extract; -type ExcludeZulu350 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA350 { width: number; height: number; depth: number } -interface ShapeB350 { color: string; opacity: number; blend: string } -interface ShapeC350 { x: number; y: number; z: number; w: number } -interface ShapeD350 { label: string; title: string; summary: string } - -type Combined350 = ShapeA350 & ShapeB350 & ShapeC350 & ShapeD350; -type OptionalAll350 = { [K in keyof Combined350]?: Combined350[K] }; -type RequiredAll350 = { [K in keyof Combined350]-?: Combined350[K] }; -type ReadonlyAll350 = { readonly [K in keyof Combined350]: Combined350[K] }; -type NullableAll350 = { [K in keyof Combined350]: Combined350[K] | null }; +type EV_0350 = Val_0350; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString350 = T extends string ? true : false; -type IsNumber350 = T extends number ? true : false; -type TypeName350 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames350 = { - [K in keyof BigRecord350]: TypeName350; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb350 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource350 = "user" | "post" | "comment" | "tag" | "category"; -type Action350 = `${Verb350}_${Resource350}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise350 = T extends Promise ? UnwrapPromise350 : T; -type UnwrapArray350 = T extends (infer U)[] ? UnwrapArray350 : T; -type Head350 = T extends [infer H, ...infer _] ? H : never; -type Tail350 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation350 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation350>] - : never; +interface Registry_03_50 { + entities: Map; + validators: EV_0350; + paths: Set; + merged: DeepMerge_0350; +} -type SmallUnion350 = "a" | "b" | "c" | "d"; -type AllPerms350 = Permutation350; +type CK_0350 = `p03.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig350, - Flat350, - FR350, - BigUnion350, - ExtractAlpha350, - ExcludeZulu350, - OptionalAll350, - RequiredAll350, - ReadonlyAll350, - NullableAll350, - TypeNames350, - Action350, - AllPerms350, -}; +export type { Entity_03_50, Registry_03_50, CK_0350, EP_0350, EV_0350, DeepMerge_0350 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts index bad49b99..8e495496 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-01.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-01 (seed 401) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-01 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0401 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0401 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord401 { - a401: { x: number; y: string; z: boolean }; - b401: { p: string[]; q: Record }; - c401: { nested: { deep: { deeper: { deepest: string } } } }; - d401: number; - e401: string; - f401: boolean; - g401: null; - h401: undefined; - i401: bigint; - j401: symbol; +interface Entity_04_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_01 | null; children: Entity_04_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0401: number; y0401: string; z0401: boolean }; } -type PartialBig401 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten401 = T extends Array ? Flatten401 : T; -type Nested401 = number[][][][][][][][][][]; -type Flat401 = Flatten401; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly401 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly401 : T[K]; -}; -type DeepRequired401 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired401 : T[K]; +type Path_0401 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0401}` }[keyof T & string] : never; +type EP_0401 = Path_0401; + +type Val_0401 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0401 } + : T[K] extends object ? { t: 'o'; props: Val_0401 } + : { t: 'u' }; }; -type FR401 = DeepReadonly401>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion401 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha401 = Extract; -type ExcludeZulu401 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA401 { width: number; height: number; depth: number } -interface ShapeB401 { color: string; opacity: number; blend: string } -interface ShapeC401 { x: number; y: number; z: number; w: number } -interface ShapeD401 { label: string; title: string; summary: string } - -type Combined401 = ShapeA401 & ShapeB401 & ShapeC401 & ShapeD401; -type OptionalAll401 = { [K in keyof Combined401]?: Combined401[K] }; -type RequiredAll401 = { [K in keyof Combined401]-?: Combined401[K] }; -type ReadonlyAll401 = { readonly [K in keyof Combined401]: Combined401[K] }; -type NullableAll401 = { [K in keyof Combined401]: Combined401[K] | null }; +type EV_0401 = Val_0401; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString401 = T extends string ? true : false; -type IsNumber401 = T extends number ? true : false; -type TypeName401 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames401 = { - [K in keyof BigRecord401]: TypeName401; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb401 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource401 = "user" | "post" | "comment" | "tag" | "category"; -type Action401 = `${Verb401}_${Resource401}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise401 = T extends Promise ? UnwrapPromise401 : T; -type UnwrapArray401 = T extends (infer U)[] ? UnwrapArray401 : T; -type Head401 = T extends [infer H, ...infer _] ? H : never; -type Tail401 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation401 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation401>] - : never; +interface Registry_04_01 { + entities: Map; + validators: EV_0401; + paths: Set; + merged: DeepMerge_0401; +} -type SmallUnion401 = "a" | "b" | "c" | "d"; -type AllPerms401 = Permutation401; +type CK_0401 = `p04.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig401, - Flat401, - FR401, - BigUnion401, - ExtractAlpha401, - ExcludeZulu401, - OptionalAll401, - RequiredAll401, - ReadonlyAll401, - NullableAll401, - TypeNames401, - Action401, - AllPerms401, -}; +export type { Entity_04_01, Registry_04_01, CK_0401, EP_0401, EV_0401, DeepMerge_0401 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts index 18c7e2e8..fd13f02e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-02.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-02 (seed 402) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-02 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0402 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0402 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord402 { - a402: { x: number; y: string; z: boolean }; - b402: { p: string[]; q: Record }; - c402: { nested: { deep: { deeper: { deepest: string } } } }; - d402: number; - e402: string; - f402: boolean; - g402: null; - h402: undefined; - i402: bigint; - j402: symbol; +interface Entity_04_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_02 | null; children: Entity_04_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0402: number; y0402: string; z0402: boolean }; } -type PartialBig402 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten402 = T extends Array ? Flatten402 : T; -type Nested402 = number[][][][][][][][][][]; -type Flat402 = Flatten402; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly402 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly402 : T[K]; -}; -type DeepRequired402 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired402 : T[K]; +type Path_0402 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0402}` }[keyof T & string] : never; +type EP_0402 = Path_0402; + +type Val_0402 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0402 } + : T[K] extends object ? { t: 'o'; props: Val_0402 } + : { t: 'u' }; }; -type FR402 = DeepReadonly402>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion402 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha402 = Extract; -type ExcludeZulu402 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA402 { width: number; height: number; depth: number } -interface ShapeB402 { color: string; opacity: number; blend: string } -interface ShapeC402 { x: number; y: number; z: number; w: number } -interface ShapeD402 { label: string; title: string; summary: string } - -type Combined402 = ShapeA402 & ShapeB402 & ShapeC402 & ShapeD402; -type OptionalAll402 = { [K in keyof Combined402]?: Combined402[K] }; -type RequiredAll402 = { [K in keyof Combined402]-?: Combined402[K] }; -type ReadonlyAll402 = { readonly [K in keyof Combined402]: Combined402[K] }; -type NullableAll402 = { [K in keyof Combined402]: Combined402[K] | null }; +type EV_0402 = Val_0402; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString402 = T extends string ? true : false; -type IsNumber402 = T extends number ? true : false; -type TypeName402 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames402 = { - [K in keyof BigRecord402]: TypeName402; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb402 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource402 = "user" | "post" | "comment" | "tag" | "category"; -type Action402 = `${Verb402}_${Resource402}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise402 = T extends Promise ? UnwrapPromise402 : T; -type UnwrapArray402 = T extends (infer U)[] ? UnwrapArray402 : T; -type Head402 = T extends [infer H, ...infer _] ? H : never; -type Tail402 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation402 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation402>] - : never; +interface Registry_04_02 { + entities: Map; + validators: EV_0402; + paths: Set; + merged: DeepMerge_0402; +} -type SmallUnion402 = "a" | "b" | "c" | "d"; -type AllPerms402 = Permutation402; +type CK_0402 = `p04.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig402, - Flat402, - FR402, - BigUnion402, - ExtractAlpha402, - ExcludeZulu402, - OptionalAll402, - RequiredAll402, - ReadonlyAll402, - NullableAll402, - TypeNames402, - Action402, - AllPerms402, -}; +export type { Entity_04_02, Registry_04_02, CK_0402, EP_0402, EV_0402, DeepMerge_0402 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts index bd9c19d2..7b17f7a9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-03.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-03 (seed 403) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-03 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0403 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0403 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord403 { - a403: { x: number; y: string; z: boolean }; - b403: { p: string[]; q: Record }; - c403: { nested: { deep: { deeper: { deepest: string } } } }; - d403: number; - e403: string; - f403: boolean; - g403: null; - h403: undefined; - i403: bigint; - j403: symbol; +interface Entity_04_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_03 | null; children: Entity_04_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0403: number; y0403: string; z0403: boolean }; } -type PartialBig403 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten403 = T extends Array ? Flatten403 : T; -type Nested403 = number[][][][][][][][][][]; -type Flat403 = Flatten403; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly403 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly403 : T[K]; -}; -type DeepRequired403 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired403 : T[K]; +type Path_0403 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0403}` }[keyof T & string] : never; +type EP_0403 = Path_0403; + +type Val_0403 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0403 } + : T[K] extends object ? { t: 'o'; props: Val_0403 } + : { t: 'u' }; }; -type FR403 = DeepReadonly403>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion403 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha403 = Extract; -type ExcludeZulu403 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA403 { width: number; height: number; depth: number } -interface ShapeB403 { color: string; opacity: number; blend: string } -interface ShapeC403 { x: number; y: number; z: number; w: number } -interface ShapeD403 { label: string; title: string; summary: string } - -type Combined403 = ShapeA403 & ShapeB403 & ShapeC403 & ShapeD403; -type OptionalAll403 = { [K in keyof Combined403]?: Combined403[K] }; -type RequiredAll403 = { [K in keyof Combined403]-?: Combined403[K] }; -type ReadonlyAll403 = { readonly [K in keyof Combined403]: Combined403[K] }; -type NullableAll403 = { [K in keyof Combined403]: Combined403[K] | null }; +type EV_0403 = Val_0403; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString403 = T extends string ? true : false; -type IsNumber403 = T extends number ? true : false; -type TypeName403 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames403 = { - [K in keyof BigRecord403]: TypeName403; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb403 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource403 = "user" | "post" | "comment" | "tag" | "category"; -type Action403 = `${Verb403}_${Resource403}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise403 = T extends Promise ? UnwrapPromise403 : T; -type UnwrapArray403 = T extends (infer U)[] ? UnwrapArray403 : T; -type Head403 = T extends [infer H, ...infer _] ? H : never; -type Tail403 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation403 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation403>] - : never; +interface Registry_04_03 { + entities: Map; + validators: EV_0403; + paths: Set; + merged: DeepMerge_0403; +} -type SmallUnion403 = "a" | "b" | "c" | "d"; -type AllPerms403 = Permutation403; +type CK_0403 = `p04.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig403, - Flat403, - FR403, - BigUnion403, - ExtractAlpha403, - ExcludeZulu403, - OptionalAll403, - RequiredAll403, - ReadonlyAll403, - NullableAll403, - TypeNames403, - Action403, - AllPerms403, -}; +export type { Entity_04_03, Registry_04_03, CK_0403, EP_0403, EV_0403, DeepMerge_0403 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts index cb795a98..5d27d379 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-04.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-04 (seed 404) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-04 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0404 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0404 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord404 { - a404: { x: number; y: string; z: boolean }; - b404: { p: string[]; q: Record }; - c404: { nested: { deep: { deeper: { deepest: string } } } }; - d404: number; - e404: string; - f404: boolean; - g404: null; - h404: undefined; - i404: bigint; - j404: symbol; +interface Entity_04_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_04 | null; children: Entity_04_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0404: number; y0404: string; z0404: boolean }; } -type PartialBig404 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten404 = T extends Array ? Flatten404 : T; -type Nested404 = number[][][][][][][][][][]; -type Flat404 = Flatten404; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly404 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly404 : T[K]; -}; -type DeepRequired404 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired404 : T[K]; +type Path_0404 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0404}` }[keyof T & string] : never; +type EP_0404 = Path_0404; + +type Val_0404 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0404 } + : T[K] extends object ? { t: 'o'; props: Val_0404 } + : { t: 'u' }; }; -type FR404 = DeepReadonly404>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion404 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha404 = Extract; -type ExcludeZulu404 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA404 { width: number; height: number; depth: number } -interface ShapeB404 { color: string; opacity: number; blend: string } -interface ShapeC404 { x: number; y: number; z: number; w: number } -interface ShapeD404 { label: string; title: string; summary: string } - -type Combined404 = ShapeA404 & ShapeB404 & ShapeC404 & ShapeD404; -type OptionalAll404 = { [K in keyof Combined404]?: Combined404[K] }; -type RequiredAll404 = { [K in keyof Combined404]-?: Combined404[K] }; -type ReadonlyAll404 = { readonly [K in keyof Combined404]: Combined404[K] }; -type NullableAll404 = { [K in keyof Combined404]: Combined404[K] | null }; +type EV_0404 = Val_0404; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString404 = T extends string ? true : false; -type IsNumber404 = T extends number ? true : false; -type TypeName404 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames404 = { - [K in keyof BigRecord404]: TypeName404; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb404 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource404 = "user" | "post" | "comment" | "tag" | "category"; -type Action404 = `${Verb404}_${Resource404}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise404 = T extends Promise ? UnwrapPromise404 : T; -type UnwrapArray404 = T extends (infer U)[] ? UnwrapArray404 : T; -type Head404 = T extends [infer H, ...infer _] ? H : never; -type Tail404 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation404 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation404>] - : never; +interface Registry_04_04 { + entities: Map; + validators: EV_0404; + paths: Set; + merged: DeepMerge_0404; +} -type SmallUnion404 = "a" | "b" | "c" | "d"; -type AllPerms404 = Permutation404; +type CK_0404 = `p04.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig404, - Flat404, - FR404, - BigUnion404, - ExtractAlpha404, - ExcludeZulu404, - OptionalAll404, - RequiredAll404, - ReadonlyAll404, - NullableAll404, - TypeNames404, - Action404, - AllPerms404, -}; +export type { Entity_04_04, Registry_04_04, CK_0404, EP_0404, EV_0404, DeepMerge_0404 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts index a2e441fc..4b015ac2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-05.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-05 (seed 405) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-05 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0405 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0405 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord405 { - a405: { x: number; y: string; z: boolean }; - b405: { p: string[]; q: Record }; - c405: { nested: { deep: { deeper: { deepest: string } } } }; - d405: number; - e405: string; - f405: boolean; - g405: null; - h405: undefined; - i405: bigint; - j405: symbol; +interface Entity_04_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_05 | null; children: Entity_04_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0405: number; y0405: string; z0405: boolean }; } -type PartialBig405 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten405 = T extends Array ? Flatten405 : T; -type Nested405 = number[][][][][][][][][][]; -type Flat405 = Flatten405; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly405 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly405 : T[K]; -}; -type DeepRequired405 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired405 : T[K]; +type Path_0405 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0405}` }[keyof T & string] : never; +type EP_0405 = Path_0405; + +type Val_0405 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0405 } + : T[K] extends object ? { t: 'o'; props: Val_0405 } + : { t: 'u' }; }; -type FR405 = DeepReadonly405>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion405 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha405 = Extract; -type ExcludeZulu405 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA405 { width: number; height: number; depth: number } -interface ShapeB405 { color: string; opacity: number; blend: string } -interface ShapeC405 { x: number; y: number; z: number; w: number } -interface ShapeD405 { label: string; title: string; summary: string } - -type Combined405 = ShapeA405 & ShapeB405 & ShapeC405 & ShapeD405; -type OptionalAll405 = { [K in keyof Combined405]?: Combined405[K] }; -type RequiredAll405 = { [K in keyof Combined405]-?: Combined405[K] }; -type ReadonlyAll405 = { readonly [K in keyof Combined405]: Combined405[K] }; -type NullableAll405 = { [K in keyof Combined405]: Combined405[K] | null }; +type EV_0405 = Val_0405; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString405 = T extends string ? true : false; -type IsNumber405 = T extends number ? true : false; -type TypeName405 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames405 = { - [K in keyof BigRecord405]: TypeName405; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb405 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource405 = "user" | "post" | "comment" | "tag" | "category"; -type Action405 = `${Verb405}_${Resource405}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise405 = T extends Promise ? UnwrapPromise405 : T; -type UnwrapArray405 = T extends (infer U)[] ? UnwrapArray405 : T; -type Head405 = T extends [infer H, ...infer _] ? H : never; -type Tail405 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation405 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation405>] - : never; +interface Registry_04_05 { + entities: Map; + validators: EV_0405; + paths: Set; + merged: DeepMerge_0405; +} -type SmallUnion405 = "a" | "b" | "c" | "d"; -type AllPerms405 = Permutation405; +type CK_0405 = `p04.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig405, - Flat405, - FR405, - BigUnion405, - ExtractAlpha405, - ExcludeZulu405, - OptionalAll405, - RequiredAll405, - ReadonlyAll405, - NullableAll405, - TypeNames405, - Action405, - AllPerms405, -}; +export type { Entity_04_05, Registry_04_05, CK_0405, EP_0405, EV_0405, DeepMerge_0405 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts index 6e1f7e0b..9fa44731 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-06.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-06 (seed 406) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-06 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0406 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0406 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord406 { - a406: { x: number; y: string; z: boolean }; - b406: { p: string[]; q: Record }; - c406: { nested: { deep: { deeper: { deepest: string } } } }; - d406: number; - e406: string; - f406: boolean; - g406: null; - h406: undefined; - i406: bigint; - j406: symbol; +interface Entity_04_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_06 | null; children: Entity_04_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0406: number; y0406: string; z0406: boolean }; } -type PartialBig406 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten406 = T extends Array ? Flatten406 : T; -type Nested406 = number[][][][][][][][][][]; -type Flat406 = Flatten406; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly406 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly406 : T[K]; -}; -type DeepRequired406 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired406 : T[K]; +type Path_0406 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0406}` }[keyof T & string] : never; +type EP_0406 = Path_0406; + +type Val_0406 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0406 } + : T[K] extends object ? { t: 'o'; props: Val_0406 } + : { t: 'u' }; }; -type FR406 = DeepReadonly406>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion406 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha406 = Extract; -type ExcludeZulu406 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA406 { width: number; height: number; depth: number } -interface ShapeB406 { color: string; opacity: number; blend: string } -interface ShapeC406 { x: number; y: number; z: number; w: number } -interface ShapeD406 { label: string; title: string; summary: string } - -type Combined406 = ShapeA406 & ShapeB406 & ShapeC406 & ShapeD406; -type OptionalAll406 = { [K in keyof Combined406]?: Combined406[K] }; -type RequiredAll406 = { [K in keyof Combined406]-?: Combined406[K] }; -type ReadonlyAll406 = { readonly [K in keyof Combined406]: Combined406[K] }; -type NullableAll406 = { [K in keyof Combined406]: Combined406[K] | null }; +type EV_0406 = Val_0406; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString406 = T extends string ? true : false; -type IsNumber406 = T extends number ? true : false; -type TypeName406 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames406 = { - [K in keyof BigRecord406]: TypeName406; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb406 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource406 = "user" | "post" | "comment" | "tag" | "category"; -type Action406 = `${Verb406}_${Resource406}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise406 = T extends Promise ? UnwrapPromise406 : T; -type UnwrapArray406 = T extends (infer U)[] ? UnwrapArray406 : T; -type Head406 = T extends [infer H, ...infer _] ? H : never; -type Tail406 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation406 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation406>] - : never; +interface Registry_04_06 { + entities: Map; + validators: EV_0406; + paths: Set; + merged: DeepMerge_0406; +} -type SmallUnion406 = "a" | "b" | "c" | "d"; -type AllPerms406 = Permutation406; +type CK_0406 = `p04.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig406, - Flat406, - FR406, - BigUnion406, - ExtractAlpha406, - ExcludeZulu406, - OptionalAll406, - RequiredAll406, - ReadonlyAll406, - NullableAll406, - TypeNames406, - Action406, - AllPerms406, -}; +export type { Entity_04_06, Registry_04_06, CK_0406, EP_0406, EV_0406, DeepMerge_0406 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts index 7c72410e..c7c797bb 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-07.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-07 (seed 407) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-07 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0407 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0407 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord407 { - a407: { x: number; y: string; z: boolean }; - b407: { p: string[]; q: Record }; - c407: { nested: { deep: { deeper: { deepest: string } } } }; - d407: number; - e407: string; - f407: boolean; - g407: null; - h407: undefined; - i407: bigint; - j407: symbol; +interface Entity_04_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_07 | null; children: Entity_04_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0407: number; y0407: string; z0407: boolean }; } -type PartialBig407 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten407 = T extends Array ? Flatten407 : T; -type Nested407 = number[][][][][][][][][][]; -type Flat407 = Flatten407; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly407 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly407 : T[K]; -}; -type DeepRequired407 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired407 : T[K]; +type Path_0407 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0407}` }[keyof T & string] : never; +type EP_0407 = Path_0407; + +type Val_0407 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0407 } + : T[K] extends object ? { t: 'o'; props: Val_0407 } + : { t: 'u' }; }; -type FR407 = DeepReadonly407>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion407 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha407 = Extract; -type ExcludeZulu407 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA407 { width: number; height: number; depth: number } -interface ShapeB407 { color: string; opacity: number; blend: string } -interface ShapeC407 { x: number; y: number; z: number; w: number } -interface ShapeD407 { label: string; title: string; summary: string } - -type Combined407 = ShapeA407 & ShapeB407 & ShapeC407 & ShapeD407; -type OptionalAll407 = { [K in keyof Combined407]?: Combined407[K] }; -type RequiredAll407 = { [K in keyof Combined407]-?: Combined407[K] }; -type ReadonlyAll407 = { readonly [K in keyof Combined407]: Combined407[K] }; -type NullableAll407 = { [K in keyof Combined407]: Combined407[K] | null }; +type EV_0407 = Val_0407; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString407 = T extends string ? true : false; -type IsNumber407 = T extends number ? true : false; -type TypeName407 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames407 = { - [K in keyof BigRecord407]: TypeName407; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb407 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource407 = "user" | "post" | "comment" | "tag" | "category"; -type Action407 = `${Verb407}_${Resource407}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise407 = T extends Promise ? UnwrapPromise407 : T; -type UnwrapArray407 = T extends (infer U)[] ? UnwrapArray407 : T; -type Head407 = T extends [infer H, ...infer _] ? H : never; -type Tail407 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation407 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation407>] - : never; +interface Registry_04_07 { + entities: Map; + validators: EV_0407; + paths: Set; + merged: DeepMerge_0407; +} -type SmallUnion407 = "a" | "b" | "c" | "d"; -type AllPerms407 = Permutation407; +type CK_0407 = `p04.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig407, - Flat407, - FR407, - BigUnion407, - ExtractAlpha407, - ExcludeZulu407, - OptionalAll407, - RequiredAll407, - ReadonlyAll407, - NullableAll407, - TypeNames407, - Action407, - AllPerms407, -}; +export type { Entity_04_07, Registry_04_07, CK_0407, EP_0407, EV_0407, DeepMerge_0407 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts index 71c6be67..5545c2fc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-08.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-08 (seed 408) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-08 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0408 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0408 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord408 { - a408: { x: number; y: string; z: boolean }; - b408: { p: string[]; q: Record }; - c408: { nested: { deep: { deeper: { deepest: string } } } }; - d408: number; - e408: string; - f408: boolean; - g408: null; - h408: undefined; - i408: bigint; - j408: symbol; +interface Entity_04_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_08 | null; children: Entity_04_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0408: number; y0408: string; z0408: boolean }; } -type PartialBig408 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten408 = T extends Array ? Flatten408 : T; -type Nested408 = number[][][][][][][][][][]; -type Flat408 = Flatten408; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly408 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly408 : T[K]; -}; -type DeepRequired408 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired408 : T[K]; +type Path_0408 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0408}` }[keyof T & string] : never; +type EP_0408 = Path_0408; + +type Val_0408 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0408 } + : T[K] extends object ? { t: 'o'; props: Val_0408 } + : { t: 'u' }; }; -type FR408 = DeepReadonly408>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion408 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha408 = Extract; -type ExcludeZulu408 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA408 { width: number; height: number; depth: number } -interface ShapeB408 { color: string; opacity: number; blend: string } -interface ShapeC408 { x: number; y: number; z: number; w: number } -interface ShapeD408 { label: string; title: string; summary: string } - -type Combined408 = ShapeA408 & ShapeB408 & ShapeC408 & ShapeD408; -type OptionalAll408 = { [K in keyof Combined408]?: Combined408[K] }; -type RequiredAll408 = { [K in keyof Combined408]-?: Combined408[K] }; -type ReadonlyAll408 = { readonly [K in keyof Combined408]: Combined408[K] }; -type NullableAll408 = { [K in keyof Combined408]: Combined408[K] | null }; +type EV_0408 = Val_0408; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString408 = T extends string ? true : false; -type IsNumber408 = T extends number ? true : false; -type TypeName408 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames408 = { - [K in keyof BigRecord408]: TypeName408; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb408 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource408 = "user" | "post" | "comment" | "tag" | "category"; -type Action408 = `${Verb408}_${Resource408}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise408 = T extends Promise ? UnwrapPromise408 : T; -type UnwrapArray408 = T extends (infer U)[] ? UnwrapArray408 : T; -type Head408 = T extends [infer H, ...infer _] ? H : never; -type Tail408 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation408 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation408>] - : never; +interface Registry_04_08 { + entities: Map; + validators: EV_0408; + paths: Set; + merged: DeepMerge_0408; +} -type SmallUnion408 = "a" | "b" | "c" | "d"; -type AllPerms408 = Permutation408; +type CK_0408 = `p04.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig408, - Flat408, - FR408, - BigUnion408, - ExtractAlpha408, - ExcludeZulu408, - OptionalAll408, - RequiredAll408, - ReadonlyAll408, - NullableAll408, - TypeNames408, - Action408, - AllPerms408, -}; +export type { Entity_04_08, Registry_04_08, CK_0408, EP_0408, EV_0408, DeepMerge_0408 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts index 880b58b3..c9b47ed8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-09.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-09 (seed 409) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-09 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0409 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0409 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord409 { - a409: { x: number; y: string; z: boolean }; - b409: { p: string[]; q: Record }; - c409: { nested: { deep: { deeper: { deepest: string } } } }; - d409: number; - e409: string; - f409: boolean; - g409: null; - h409: undefined; - i409: bigint; - j409: symbol; +interface Entity_04_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_09 | null; children: Entity_04_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0409: number; y0409: string; z0409: boolean }; } -type PartialBig409 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten409 = T extends Array ? Flatten409 : T; -type Nested409 = number[][][][][][][][][][]; -type Flat409 = Flatten409; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly409 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly409 : T[K]; -}; -type DeepRequired409 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired409 : T[K]; +type Path_0409 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0409}` }[keyof T & string] : never; +type EP_0409 = Path_0409; + +type Val_0409 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0409 } + : T[K] extends object ? { t: 'o'; props: Val_0409 } + : { t: 'u' }; }; -type FR409 = DeepReadonly409>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion409 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha409 = Extract; -type ExcludeZulu409 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA409 { width: number; height: number; depth: number } -interface ShapeB409 { color: string; opacity: number; blend: string } -interface ShapeC409 { x: number; y: number; z: number; w: number } -interface ShapeD409 { label: string; title: string; summary: string } - -type Combined409 = ShapeA409 & ShapeB409 & ShapeC409 & ShapeD409; -type OptionalAll409 = { [K in keyof Combined409]?: Combined409[K] }; -type RequiredAll409 = { [K in keyof Combined409]-?: Combined409[K] }; -type ReadonlyAll409 = { readonly [K in keyof Combined409]: Combined409[K] }; -type NullableAll409 = { [K in keyof Combined409]: Combined409[K] | null }; +type EV_0409 = Val_0409; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString409 = T extends string ? true : false; -type IsNumber409 = T extends number ? true : false; -type TypeName409 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames409 = { - [K in keyof BigRecord409]: TypeName409; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb409 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource409 = "user" | "post" | "comment" | "tag" | "category"; -type Action409 = `${Verb409}_${Resource409}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise409 = T extends Promise ? UnwrapPromise409 : T; -type UnwrapArray409 = T extends (infer U)[] ? UnwrapArray409 : T; -type Head409 = T extends [infer H, ...infer _] ? H : never; -type Tail409 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation409 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation409>] - : never; +interface Registry_04_09 { + entities: Map; + validators: EV_0409; + paths: Set; + merged: DeepMerge_0409; +} -type SmallUnion409 = "a" | "b" | "c" | "d"; -type AllPerms409 = Permutation409; +type CK_0409 = `p04.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig409, - Flat409, - FR409, - BigUnion409, - ExtractAlpha409, - ExcludeZulu409, - OptionalAll409, - RequiredAll409, - ReadonlyAll409, - NullableAll409, - TypeNames409, - Action409, - AllPerms409, -}; +export type { Entity_04_09, Registry_04_09, CK_0409, EP_0409, EV_0409, DeepMerge_0409 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts index c3ec273c..b9cafaa1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-10.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-10 (seed 410) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-10 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0410 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0410 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord410 { - a410: { x: number; y: string; z: boolean }; - b410: { p: string[]; q: Record }; - c410: { nested: { deep: { deeper: { deepest: string } } } }; - d410: number; - e410: string; - f410: boolean; - g410: null; - h410: undefined; - i410: bigint; - j410: symbol; +interface Entity_04_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_10 | null; children: Entity_04_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0410: number; y0410: string; z0410: boolean }; } -type PartialBig410 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten410 = T extends Array ? Flatten410 : T; -type Nested410 = number[][][][][][][][][][]; -type Flat410 = Flatten410; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly410 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly410 : T[K]; -}; -type DeepRequired410 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired410 : T[K]; +type Path_0410 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0410}` }[keyof T & string] : never; +type EP_0410 = Path_0410; + +type Val_0410 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0410 } + : T[K] extends object ? { t: 'o'; props: Val_0410 } + : { t: 'u' }; }; -type FR410 = DeepReadonly410>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion410 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha410 = Extract; -type ExcludeZulu410 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA410 { width: number; height: number; depth: number } -interface ShapeB410 { color: string; opacity: number; blend: string } -interface ShapeC410 { x: number; y: number; z: number; w: number } -interface ShapeD410 { label: string; title: string; summary: string } - -type Combined410 = ShapeA410 & ShapeB410 & ShapeC410 & ShapeD410; -type OptionalAll410 = { [K in keyof Combined410]?: Combined410[K] }; -type RequiredAll410 = { [K in keyof Combined410]-?: Combined410[K] }; -type ReadonlyAll410 = { readonly [K in keyof Combined410]: Combined410[K] }; -type NullableAll410 = { [K in keyof Combined410]: Combined410[K] | null }; +type EV_0410 = Val_0410; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString410 = T extends string ? true : false; -type IsNumber410 = T extends number ? true : false; -type TypeName410 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames410 = { - [K in keyof BigRecord410]: TypeName410; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb410 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource410 = "user" | "post" | "comment" | "tag" | "category"; -type Action410 = `${Verb410}_${Resource410}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise410 = T extends Promise ? UnwrapPromise410 : T; -type UnwrapArray410 = T extends (infer U)[] ? UnwrapArray410 : T; -type Head410 = T extends [infer H, ...infer _] ? H : never; -type Tail410 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation410 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation410>] - : never; +interface Registry_04_10 { + entities: Map; + validators: EV_0410; + paths: Set; + merged: DeepMerge_0410; +} -type SmallUnion410 = "a" | "b" | "c" | "d"; -type AllPerms410 = Permutation410; +type CK_0410 = `p04.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig410, - Flat410, - FR410, - BigUnion410, - ExtractAlpha410, - ExcludeZulu410, - OptionalAll410, - RequiredAll410, - ReadonlyAll410, - NullableAll410, - TypeNames410, - Action410, - AllPerms410, -}; +export type { Entity_04_10, Registry_04_10, CK_0410, EP_0410, EV_0410, DeepMerge_0410 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts index 7b87d2e4..ef88b956 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-11.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-11 (seed 411) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-11 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0411 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0411 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord411 { - a411: { x: number; y: string; z: boolean }; - b411: { p: string[]; q: Record }; - c411: { nested: { deep: { deeper: { deepest: string } } } }; - d411: number; - e411: string; - f411: boolean; - g411: null; - h411: undefined; - i411: bigint; - j411: symbol; +interface Entity_04_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_11 | null; children: Entity_04_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0411: number; y0411: string; z0411: boolean }; } -type PartialBig411 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten411 = T extends Array ? Flatten411 : T; -type Nested411 = number[][][][][][][][][][]; -type Flat411 = Flatten411; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly411 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly411 : T[K]; -}; -type DeepRequired411 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired411 : T[K]; +type Path_0411 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0411}` }[keyof T & string] : never; +type EP_0411 = Path_0411; + +type Val_0411 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0411 } + : T[K] extends object ? { t: 'o'; props: Val_0411 } + : { t: 'u' }; }; -type FR411 = DeepReadonly411>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion411 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha411 = Extract; -type ExcludeZulu411 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA411 { width: number; height: number; depth: number } -interface ShapeB411 { color: string; opacity: number; blend: string } -interface ShapeC411 { x: number; y: number; z: number; w: number } -interface ShapeD411 { label: string; title: string; summary: string } - -type Combined411 = ShapeA411 & ShapeB411 & ShapeC411 & ShapeD411; -type OptionalAll411 = { [K in keyof Combined411]?: Combined411[K] }; -type RequiredAll411 = { [K in keyof Combined411]-?: Combined411[K] }; -type ReadonlyAll411 = { readonly [K in keyof Combined411]: Combined411[K] }; -type NullableAll411 = { [K in keyof Combined411]: Combined411[K] | null }; +type EV_0411 = Val_0411; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString411 = T extends string ? true : false; -type IsNumber411 = T extends number ? true : false; -type TypeName411 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames411 = { - [K in keyof BigRecord411]: TypeName411; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb411 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource411 = "user" | "post" | "comment" | "tag" | "category"; -type Action411 = `${Verb411}_${Resource411}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise411 = T extends Promise ? UnwrapPromise411 : T; -type UnwrapArray411 = T extends (infer U)[] ? UnwrapArray411 : T; -type Head411 = T extends [infer H, ...infer _] ? H : never; -type Tail411 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation411 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation411>] - : never; +interface Registry_04_11 { + entities: Map; + validators: EV_0411; + paths: Set; + merged: DeepMerge_0411; +} -type SmallUnion411 = "a" | "b" | "c" | "d"; -type AllPerms411 = Permutation411; +type CK_0411 = `p04.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig411, - Flat411, - FR411, - BigUnion411, - ExtractAlpha411, - ExcludeZulu411, - OptionalAll411, - RequiredAll411, - ReadonlyAll411, - NullableAll411, - TypeNames411, - Action411, - AllPerms411, -}; +export type { Entity_04_11, Registry_04_11, CK_0411, EP_0411, EV_0411, DeepMerge_0411 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts index acab7353..50653dfc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-12.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-12 (seed 412) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-12 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0412 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0412 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord412 { - a412: { x: number; y: string; z: boolean }; - b412: { p: string[]; q: Record }; - c412: { nested: { deep: { deeper: { deepest: string } } } }; - d412: number; - e412: string; - f412: boolean; - g412: null; - h412: undefined; - i412: bigint; - j412: symbol; +interface Entity_04_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_12 | null; children: Entity_04_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0412: number; y0412: string; z0412: boolean }; } -type PartialBig412 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten412 = T extends Array ? Flatten412 : T; -type Nested412 = number[][][][][][][][][][]; -type Flat412 = Flatten412; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly412 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly412 : T[K]; -}; -type DeepRequired412 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired412 : T[K]; +type Path_0412 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0412}` }[keyof T & string] : never; +type EP_0412 = Path_0412; + +type Val_0412 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0412 } + : T[K] extends object ? { t: 'o'; props: Val_0412 } + : { t: 'u' }; }; -type FR412 = DeepReadonly412>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion412 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha412 = Extract; -type ExcludeZulu412 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA412 { width: number; height: number; depth: number } -interface ShapeB412 { color: string; opacity: number; blend: string } -interface ShapeC412 { x: number; y: number; z: number; w: number } -interface ShapeD412 { label: string; title: string; summary: string } - -type Combined412 = ShapeA412 & ShapeB412 & ShapeC412 & ShapeD412; -type OptionalAll412 = { [K in keyof Combined412]?: Combined412[K] }; -type RequiredAll412 = { [K in keyof Combined412]-?: Combined412[K] }; -type ReadonlyAll412 = { readonly [K in keyof Combined412]: Combined412[K] }; -type NullableAll412 = { [K in keyof Combined412]: Combined412[K] | null }; +type EV_0412 = Val_0412; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString412 = T extends string ? true : false; -type IsNumber412 = T extends number ? true : false; -type TypeName412 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames412 = { - [K in keyof BigRecord412]: TypeName412; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb412 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource412 = "user" | "post" | "comment" | "tag" | "category"; -type Action412 = `${Verb412}_${Resource412}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise412 = T extends Promise ? UnwrapPromise412 : T; -type UnwrapArray412 = T extends (infer U)[] ? UnwrapArray412 : T; -type Head412 = T extends [infer H, ...infer _] ? H : never; -type Tail412 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation412 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation412>] - : never; +interface Registry_04_12 { + entities: Map; + validators: EV_0412; + paths: Set; + merged: DeepMerge_0412; +} -type SmallUnion412 = "a" | "b" | "c" | "d"; -type AllPerms412 = Permutation412; +type CK_0412 = `p04.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig412, - Flat412, - FR412, - BigUnion412, - ExtractAlpha412, - ExcludeZulu412, - OptionalAll412, - RequiredAll412, - ReadonlyAll412, - NullableAll412, - TypeNames412, - Action412, - AllPerms412, -}; +export type { Entity_04_12, Registry_04_12, CK_0412, EP_0412, EV_0412, DeepMerge_0412 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts index 348490a2..0bbbf5aa 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-13.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-13 (seed 413) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-13 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0413 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0413 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord413 { - a413: { x: number; y: string; z: boolean }; - b413: { p: string[]; q: Record }; - c413: { nested: { deep: { deeper: { deepest: string } } } }; - d413: number; - e413: string; - f413: boolean; - g413: null; - h413: undefined; - i413: bigint; - j413: symbol; +interface Entity_04_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_13 | null; children: Entity_04_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0413: number; y0413: string; z0413: boolean }; } -type PartialBig413 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten413 = T extends Array ? Flatten413 : T; -type Nested413 = number[][][][][][][][][][]; -type Flat413 = Flatten413; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly413 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly413 : T[K]; -}; -type DeepRequired413 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired413 : T[K]; +type Path_0413 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0413}` }[keyof T & string] : never; +type EP_0413 = Path_0413; + +type Val_0413 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0413 } + : T[K] extends object ? { t: 'o'; props: Val_0413 } + : { t: 'u' }; }; -type FR413 = DeepReadonly413>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion413 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha413 = Extract; -type ExcludeZulu413 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA413 { width: number; height: number; depth: number } -interface ShapeB413 { color: string; opacity: number; blend: string } -interface ShapeC413 { x: number; y: number; z: number; w: number } -interface ShapeD413 { label: string; title: string; summary: string } - -type Combined413 = ShapeA413 & ShapeB413 & ShapeC413 & ShapeD413; -type OptionalAll413 = { [K in keyof Combined413]?: Combined413[K] }; -type RequiredAll413 = { [K in keyof Combined413]-?: Combined413[K] }; -type ReadonlyAll413 = { readonly [K in keyof Combined413]: Combined413[K] }; -type NullableAll413 = { [K in keyof Combined413]: Combined413[K] | null }; +type EV_0413 = Val_0413; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString413 = T extends string ? true : false; -type IsNumber413 = T extends number ? true : false; -type TypeName413 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames413 = { - [K in keyof BigRecord413]: TypeName413; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb413 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource413 = "user" | "post" | "comment" | "tag" | "category"; -type Action413 = `${Verb413}_${Resource413}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise413 = T extends Promise ? UnwrapPromise413 : T; -type UnwrapArray413 = T extends (infer U)[] ? UnwrapArray413 : T; -type Head413 = T extends [infer H, ...infer _] ? H : never; -type Tail413 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation413 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation413>] - : never; +interface Registry_04_13 { + entities: Map; + validators: EV_0413; + paths: Set; + merged: DeepMerge_0413; +} -type SmallUnion413 = "a" | "b" | "c" | "d"; -type AllPerms413 = Permutation413; +type CK_0413 = `p04.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig413, - Flat413, - FR413, - BigUnion413, - ExtractAlpha413, - ExcludeZulu413, - OptionalAll413, - RequiredAll413, - ReadonlyAll413, - NullableAll413, - TypeNames413, - Action413, - AllPerms413, -}; +export type { Entity_04_13, Registry_04_13, CK_0413, EP_0413, EV_0413, DeepMerge_0413 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts index 502f69c9..586d5ab8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-14.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-14 (seed 414) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-14 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0414 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0414 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord414 { - a414: { x: number; y: string; z: boolean }; - b414: { p: string[]; q: Record }; - c414: { nested: { deep: { deeper: { deepest: string } } } }; - d414: number; - e414: string; - f414: boolean; - g414: null; - h414: undefined; - i414: bigint; - j414: symbol; +interface Entity_04_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_14 | null; children: Entity_04_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0414: number; y0414: string; z0414: boolean }; } -type PartialBig414 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten414 = T extends Array ? Flatten414 : T; -type Nested414 = number[][][][][][][][][][]; -type Flat414 = Flatten414; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly414 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly414 : T[K]; -}; -type DeepRequired414 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired414 : T[K]; +type Path_0414 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0414}` }[keyof T & string] : never; +type EP_0414 = Path_0414; + +type Val_0414 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0414 } + : T[K] extends object ? { t: 'o'; props: Val_0414 } + : { t: 'u' }; }; -type FR414 = DeepReadonly414>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion414 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha414 = Extract; -type ExcludeZulu414 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA414 { width: number; height: number; depth: number } -interface ShapeB414 { color: string; opacity: number; blend: string } -interface ShapeC414 { x: number; y: number; z: number; w: number } -interface ShapeD414 { label: string; title: string; summary: string } - -type Combined414 = ShapeA414 & ShapeB414 & ShapeC414 & ShapeD414; -type OptionalAll414 = { [K in keyof Combined414]?: Combined414[K] }; -type RequiredAll414 = { [K in keyof Combined414]-?: Combined414[K] }; -type ReadonlyAll414 = { readonly [K in keyof Combined414]: Combined414[K] }; -type NullableAll414 = { [K in keyof Combined414]: Combined414[K] | null }; +type EV_0414 = Val_0414; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString414 = T extends string ? true : false; -type IsNumber414 = T extends number ? true : false; -type TypeName414 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames414 = { - [K in keyof BigRecord414]: TypeName414; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb414 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource414 = "user" | "post" | "comment" | "tag" | "category"; -type Action414 = `${Verb414}_${Resource414}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise414 = T extends Promise ? UnwrapPromise414 : T; -type UnwrapArray414 = T extends (infer U)[] ? UnwrapArray414 : T; -type Head414 = T extends [infer H, ...infer _] ? H : never; -type Tail414 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation414 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation414>] - : never; +interface Registry_04_14 { + entities: Map; + validators: EV_0414; + paths: Set; + merged: DeepMerge_0414; +} -type SmallUnion414 = "a" | "b" | "c" | "d"; -type AllPerms414 = Permutation414; +type CK_0414 = `p04.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig414, - Flat414, - FR414, - BigUnion414, - ExtractAlpha414, - ExcludeZulu414, - OptionalAll414, - RequiredAll414, - ReadonlyAll414, - NullableAll414, - TypeNames414, - Action414, - AllPerms414, -}; +export type { Entity_04_14, Registry_04_14, CK_0414, EP_0414, EV_0414, DeepMerge_0414 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts index 056a453f..e1e064f2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-15.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-15 (seed 415) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-15 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0415 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0415 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord415 { - a415: { x: number; y: string; z: boolean }; - b415: { p: string[]; q: Record }; - c415: { nested: { deep: { deeper: { deepest: string } } } }; - d415: number; - e415: string; - f415: boolean; - g415: null; - h415: undefined; - i415: bigint; - j415: symbol; +interface Entity_04_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_15 | null; children: Entity_04_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0415: number; y0415: string; z0415: boolean }; } -type PartialBig415 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten415 = T extends Array ? Flatten415 : T; -type Nested415 = number[][][][][][][][][][]; -type Flat415 = Flatten415; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly415 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly415 : T[K]; -}; -type DeepRequired415 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired415 : T[K]; +type Path_0415 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0415}` }[keyof T & string] : never; +type EP_0415 = Path_0415; + +type Val_0415 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0415 } + : T[K] extends object ? { t: 'o'; props: Val_0415 } + : { t: 'u' }; }; -type FR415 = DeepReadonly415>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion415 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha415 = Extract; -type ExcludeZulu415 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA415 { width: number; height: number; depth: number } -interface ShapeB415 { color: string; opacity: number; blend: string } -interface ShapeC415 { x: number; y: number; z: number; w: number } -interface ShapeD415 { label: string; title: string; summary: string } - -type Combined415 = ShapeA415 & ShapeB415 & ShapeC415 & ShapeD415; -type OptionalAll415 = { [K in keyof Combined415]?: Combined415[K] }; -type RequiredAll415 = { [K in keyof Combined415]-?: Combined415[K] }; -type ReadonlyAll415 = { readonly [K in keyof Combined415]: Combined415[K] }; -type NullableAll415 = { [K in keyof Combined415]: Combined415[K] | null }; +type EV_0415 = Val_0415; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString415 = T extends string ? true : false; -type IsNumber415 = T extends number ? true : false; -type TypeName415 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames415 = { - [K in keyof BigRecord415]: TypeName415; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb415 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource415 = "user" | "post" | "comment" | "tag" | "category"; -type Action415 = `${Verb415}_${Resource415}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise415 = T extends Promise ? UnwrapPromise415 : T; -type UnwrapArray415 = T extends (infer U)[] ? UnwrapArray415 : T; -type Head415 = T extends [infer H, ...infer _] ? H : never; -type Tail415 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation415 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation415>] - : never; +interface Registry_04_15 { + entities: Map; + validators: EV_0415; + paths: Set; + merged: DeepMerge_0415; +} -type SmallUnion415 = "a" | "b" | "c" | "d"; -type AllPerms415 = Permutation415; +type CK_0415 = `p04.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig415, - Flat415, - FR415, - BigUnion415, - ExtractAlpha415, - ExcludeZulu415, - OptionalAll415, - RequiredAll415, - ReadonlyAll415, - NullableAll415, - TypeNames415, - Action415, - AllPerms415, -}; +export type { Entity_04_15, Registry_04_15, CK_0415, EP_0415, EV_0415, DeepMerge_0415 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts index 191c4ba1..1e0c4714 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-16.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-16 (seed 416) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-16 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0416 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0416 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord416 { - a416: { x: number; y: string; z: boolean }; - b416: { p: string[]; q: Record }; - c416: { nested: { deep: { deeper: { deepest: string } } } }; - d416: number; - e416: string; - f416: boolean; - g416: null; - h416: undefined; - i416: bigint; - j416: symbol; +interface Entity_04_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_16 | null; children: Entity_04_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0416: number; y0416: string; z0416: boolean }; } -type PartialBig416 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten416 = T extends Array ? Flatten416 : T; -type Nested416 = number[][][][][][][][][][]; -type Flat416 = Flatten416; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly416 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly416 : T[K]; -}; -type DeepRequired416 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired416 : T[K]; +type Path_0416 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0416}` }[keyof T & string] : never; +type EP_0416 = Path_0416; + +type Val_0416 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0416 } + : T[K] extends object ? { t: 'o'; props: Val_0416 } + : { t: 'u' }; }; -type FR416 = DeepReadonly416>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion416 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha416 = Extract; -type ExcludeZulu416 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA416 { width: number; height: number; depth: number } -interface ShapeB416 { color: string; opacity: number; blend: string } -interface ShapeC416 { x: number; y: number; z: number; w: number } -interface ShapeD416 { label: string; title: string; summary: string } - -type Combined416 = ShapeA416 & ShapeB416 & ShapeC416 & ShapeD416; -type OptionalAll416 = { [K in keyof Combined416]?: Combined416[K] }; -type RequiredAll416 = { [K in keyof Combined416]-?: Combined416[K] }; -type ReadonlyAll416 = { readonly [K in keyof Combined416]: Combined416[K] }; -type NullableAll416 = { [K in keyof Combined416]: Combined416[K] | null }; +type EV_0416 = Val_0416; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString416 = T extends string ? true : false; -type IsNumber416 = T extends number ? true : false; -type TypeName416 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames416 = { - [K in keyof BigRecord416]: TypeName416; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb416 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource416 = "user" | "post" | "comment" | "tag" | "category"; -type Action416 = `${Verb416}_${Resource416}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise416 = T extends Promise ? UnwrapPromise416 : T; -type UnwrapArray416 = T extends (infer U)[] ? UnwrapArray416 : T; -type Head416 = T extends [infer H, ...infer _] ? H : never; -type Tail416 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation416 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation416>] - : never; +interface Registry_04_16 { + entities: Map; + validators: EV_0416; + paths: Set; + merged: DeepMerge_0416; +} -type SmallUnion416 = "a" | "b" | "c" | "d"; -type AllPerms416 = Permutation416; +type CK_0416 = `p04.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig416, - Flat416, - FR416, - BigUnion416, - ExtractAlpha416, - ExcludeZulu416, - OptionalAll416, - RequiredAll416, - ReadonlyAll416, - NullableAll416, - TypeNames416, - Action416, - AllPerms416, -}; +export type { Entity_04_16, Registry_04_16, CK_0416, EP_0416, EV_0416, DeepMerge_0416 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts index 8a8a3662..0d50256d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-17.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-17 (seed 417) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-17 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0417 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0417 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord417 { - a417: { x: number; y: string; z: boolean }; - b417: { p: string[]; q: Record }; - c417: { nested: { deep: { deeper: { deepest: string } } } }; - d417: number; - e417: string; - f417: boolean; - g417: null; - h417: undefined; - i417: bigint; - j417: symbol; +interface Entity_04_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_17 | null; children: Entity_04_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0417: number; y0417: string; z0417: boolean }; } -type PartialBig417 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten417 = T extends Array ? Flatten417 : T; -type Nested417 = number[][][][][][][][][][]; -type Flat417 = Flatten417; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly417 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly417 : T[K]; -}; -type DeepRequired417 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired417 : T[K]; +type Path_0417 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0417}` }[keyof T & string] : never; +type EP_0417 = Path_0417; + +type Val_0417 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0417 } + : T[K] extends object ? { t: 'o'; props: Val_0417 } + : { t: 'u' }; }; -type FR417 = DeepReadonly417>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion417 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha417 = Extract; -type ExcludeZulu417 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA417 { width: number; height: number; depth: number } -interface ShapeB417 { color: string; opacity: number; blend: string } -interface ShapeC417 { x: number; y: number; z: number; w: number } -interface ShapeD417 { label: string; title: string; summary: string } - -type Combined417 = ShapeA417 & ShapeB417 & ShapeC417 & ShapeD417; -type OptionalAll417 = { [K in keyof Combined417]?: Combined417[K] }; -type RequiredAll417 = { [K in keyof Combined417]-?: Combined417[K] }; -type ReadonlyAll417 = { readonly [K in keyof Combined417]: Combined417[K] }; -type NullableAll417 = { [K in keyof Combined417]: Combined417[K] | null }; +type EV_0417 = Val_0417; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString417 = T extends string ? true : false; -type IsNumber417 = T extends number ? true : false; -type TypeName417 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames417 = { - [K in keyof BigRecord417]: TypeName417; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb417 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource417 = "user" | "post" | "comment" | "tag" | "category"; -type Action417 = `${Verb417}_${Resource417}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise417 = T extends Promise ? UnwrapPromise417 : T; -type UnwrapArray417 = T extends (infer U)[] ? UnwrapArray417 : T; -type Head417 = T extends [infer H, ...infer _] ? H : never; -type Tail417 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation417 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation417>] - : never; +interface Registry_04_17 { + entities: Map; + validators: EV_0417; + paths: Set; + merged: DeepMerge_0417; +} -type SmallUnion417 = "a" | "b" | "c" | "d"; -type AllPerms417 = Permutation417; +type CK_0417 = `p04.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig417, - Flat417, - FR417, - BigUnion417, - ExtractAlpha417, - ExcludeZulu417, - OptionalAll417, - RequiredAll417, - ReadonlyAll417, - NullableAll417, - TypeNames417, - Action417, - AllPerms417, -}; +export type { Entity_04_17, Registry_04_17, CK_0417, EP_0417, EV_0417, DeepMerge_0417 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts index 5c28cb33..718f767f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-18.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-18 (seed 418) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-18 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0418 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0418 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord418 { - a418: { x: number; y: string; z: boolean }; - b418: { p: string[]; q: Record }; - c418: { nested: { deep: { deeper: { deepest: string } } } }; - d418: number; - e418: string; - f418: boolean; - g418: null; - h418: undefined; - i418: bigint; - j418: symbol; +interface Entity_04_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_18 | null; children: Entity_04_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0418: number; y0418: string; z0418: boolean }; } -type PartialBig418 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten418 = T extends Array ? Flatten418 : T; -type Nested418 = number[][][][][][][][][][]; -type Flat418 = Flatten418; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly418 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly418 : T[K]; -}; -type DeepRequired418 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired418 : T[K]; +type Path_0418 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0418}` }[keyof T & string] : never; +type EP_0418 = Path_0418; + +type Val_0418 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0418 } + : T[K] extends object ? { t: 'o'; props: Val_0418 } + : { t: 'u' }; }; -type FR418 = DeepReadonly418>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion418 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha418 = Extract; -type ExcludeZulu418 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA418 { width: number; height: number; depth: number } -interface ShapeB418 { color: string; opacity: number; blend: string } -interface ShapeC418 { x: number; y: number; z: number; w: number } -interface ShapeD418 { label: string; title: string; summary: string } - -type Combined418 = ShapeA418 & ShapeB418 & ShapeC418 & ShapeD418; -type OptionalAll418 = { [K in keyof Combined418]?: Combined418[K] }; -type RequiredAll418 = { [K in keyof Combined418]-?: Combined418[K] }; -type ReadonlyAll418 = { readonly [K in keyof Combined418]: Combined418[K] }; -type NullableAll418 = { [K in keyof Combined418]: Combined418[K] | null }; +type EV_0418 = Val_0418; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString418 = T extends string ? true : false; -type IsNumber418 = T extends number ? true : false; -type TypeName418 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames418 = { - [K in keyof BigRecord418]: TypeName418; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb418 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource418 = "user" | "post" | "comment" | "tag" | "category"; -type Action418 = `${Verb418}_${Resource418}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise418 = T extends Promise ? UnwrapPromise418 : T; -type UnwrapArray418 = T extends (infer U)[] ? UnwrapArray418 : T; -type Head418 = T extends [infer H, ...infer _] ? H : never; -type Tail418 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation418 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation418>] - : never; +interface Registry_04_18 { + entities: Map; + validators: EV_0418; + paths: Set; + merged: DeepMerge_0418; +} -type SmallUnion418 = "a" | "b" | "c" | "d"; -type AllPerms418 = Permutation418; +type CK_0418 = `p04.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig418, - Flat418, - FR418, - BigUnion418, - ExtractAlpha418, - ExcludeZulu418, - OptionalAll418, - RequiredAll418, - ReadonlyAll418, - NullableAll418, - TypeNames418, - Action418, - AllPerms418, -}; +export type { Entity_04_18, Registry_04_18, CK_0418, EP_0418, EV_0418, DeepMerge_0418 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts index fc775407..384425ff 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-19.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-19 (seed 419) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-19 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0419 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0419 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord419 { - a419: { x: number; y: string; z: boolean }; - b419: { p: string[]; q: Record }; - c419: { nested: { deep: { deeper: { deepest: string } } } }; - d419: number; - e419: string; - f419: boolean; - g419: null; - h419: undefined; - i419: bigint; - j419: symbol; +interface Entity_04_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_19 | null; children: Entity_04_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0419: number; y0419: string; z0419: boolean }; } -type PartialBig419 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten419 = T extends Array ? Flatten419 : T; -type Nested419 = number[][][][][][][][][][]; -type Flat419 = Flatten419; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly419 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly419 : T[K]; -}; -type DeepRequired419 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired419 : T[K]; +type Path_0419 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0419}` }[keyof T & string] : never; +type EP_0419 = Path_0419; + +type Val_0419 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0419 } + : T[K] extends object ? { t: 'o'; props: Val_0419 } + : { t: 'u' }; }; -type FR419 = DeepReadonly419>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion419 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha419 = Extract; -type ExcludeZulu419 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA419 { width: number; height: number; depth: number } -interface ShapeB419 { color: string; opacity: number; blend: string } -interface ShapeC419 { x: number; y: number; z: number; w: number } -interface ShapeD419 { label: string; title: string; summary: string } - -type Combined419 = ShapeA419 & ShapeB419 & ShapeC419 & ShapeD419; -type OptionalAll419 = { [K in keyof Combined419]?: Combined419[K] }; -type RequiredAll419 = { [K in keyof Combined419]-?: Combined419[K] }; -type ReadonlyAll419 = { readonly [K in keyof Combined419]: Combined419[K] }; -type NullableAll419 = { [K in keyof Combined419]: Combined419[K] | null }; +type EV_0419 = Val_0419; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString419 = T extends string ? true : false; -type IsNumber419 = T extends number ? true : false; -type TypeName419 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames419 = { - [K in keyof BigRecord419]: TypeName419; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb419 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource419 = "user" | "post" | "comment" | "tag" | "category"; -type Action419 = `${Verb419}_${Resource419}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise419 = T extends Promise ? UnwrapPromise419 : T; -type UnwrapArray419 = T extends (infer U)[] ? UnwrapArray419 : T; -type Head419 = T extends [infer H, ...infer _] ? H : never; -type Tail419 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation419 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation419>] - : never; +interface Registry_04_19 { + entities: Map; + validators: EV_0419; + paths: Set; + merged: DeepMerge_0419; +} -type SmallUnion419 = "a" | "b" | "c" | "d"; -type AllPerms419 = Permutation419; +type CK_0419 = `p04.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig419, - Flat419, - FR419, - BigUnion419, - ExtractAlpha419, - ExcludeZulu419, - OptionalAll419, - RequiredAll419, - ReadonlyAll419, - NullableAll419, - TypeNames419, - Action419, - AllPerms419, -}; +export type { Entity_04_19, Registry_04_19, CK_0419, EP_0419, EV_0419, DeepMerge_0419 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts index d46014ad..1ddd9445 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-20.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-20 (seed 420) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-20 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0420 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0420 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord420 { - a420: { x: number; y: string; z: boolean }; - b420: { p: string[]; q: Record }; - c420: { nested: { deep: { deeper: { deepest: string } } } }; - d420: number; - e420: string; - f420: boolean; - g420: null; - h420: undefined; - i420: bigint; - j420: symbol; +interface Entity_04_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_20 | null; children: Entity_04_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0420: number; y0420: string; z0420: boolean }; } -type PartialBig420 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten420 = T extends Array ? Flatten420 : T; -type Nested420 = number[][][][][][][][][][]; -type Flat420 = Flatten420; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly420 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly420 : T[K]; -}; -type DeepRequired420 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired420 : T[K]; +type Path_0420 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0420}` }[keyof T & string] : never; +type EP_0420 = Path_0420; + +type Val_0420 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0420 } + : T[K] extends object ? { t: 'o'; props: Val_0420 } + : { t: 'u' }; }; -type FR420 = DeepReadonly420>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion420 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha420 = Extract; -type ExcludeZulu420 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA420 { width: number; height: number; depth: number } -interface ShapeB420 { color: string; opacity: number; blend: string } -interface ShapeC420 { x: number; y: number; z: number; w: number } -interface ShapeD420 { label: string; title: string; summary: string } - -type Combined420 = ShapeA420 & ShapeB420 & ShapeC420 & ShapeD420; -type OptionalAll420 = { [K in keyof Combined420]?: Combined420[K] }; -type RequiredAll420 = { [K in keyof Combined420]-?: Combined420[K] }; -type ReadonlyAll420 = { readonly [K in keyof Combined420]: Combined420[K] }; -type NullableAll420 = { [K in keyof Combined420]: Combined420[K] | null }; +type EV_0420 = Val_0420; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString420 = T extends string ? true : false; -type IsNumber420 = T extends number ? true : false; -type TypeName420 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames420 = { - [K in keyof BigRecord420]: TypeName420; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb420 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource420 = "user" | "post" | "comment" | "tag" | "category"; -type Action420 = `${Verb420}_${Resource420}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise420 = T extends Promise ? UnwrapPromise420 : T; -type UnwrapArray420 = T extends (infer U)[] ? UnwrapArray420 : T; -type Head420 = T extends [infer H, ...infer _] ? H : never; -type Tail420 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation420 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation420>] - : never; +interface Registry_04_20 { + entities: Map; + validators: EV_0420; + paths: Set; + merged: DeepMerge_0420; +} -type SmallUnion420 = "a" | "b" | "c" | "d"; -type AllPerms420 = Permutation420; +type CK_0420 = `p04.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig420, - Flat420, - FR420, - BigUnion420, - ExtractAlpha420, - ExcludeZulu420, - OptionalAll420, - RequiredAll420, - ReadonlyAll420, - NullableAll420, - TypeNames420, - Action420, - AllPerms420, -}; +export type { Entity_04_20, Registry_04_20, CK_0420, EP_0420, EV_0420, DeepMerge_0420 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts index f3159ffd..a7f32fb4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-21.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-21 (seed 421) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-21 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0421 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0421 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord421 { - a421: { x: number; y: string; z: boolean }; - b421: { p: string[]; q: Record }; - c421: { nested: { deep: { deeper: { deepest: string } } } }; - d421: number; - e421: string; - f421: boolean; - g421: null; - h421: undefined; - i421: bigint; - j421: symbol; +interface Entity_04_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_21 | null; children: Entity_04_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0421: number; y0421: string; z0421: boolean }; } -type PartialBig421 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten421 = T extends Array ? Flatten421 : T; -type Nested421 = number[][][][][][][][][][]; -type Flat421 = Flatten421; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly421 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly421 : T[K]; -}; -type DeepRequired421 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired421 : T[K]; +type Path_0421 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0421}` }[keyof T & string] : never; +type EP_0421 = Path_0421; + +type Val_0421 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0421 } + : T[K] extends object ? { t: 'o'; props: Val_0421 } + : { t: 'u' }; }; -type FR421 = DeepReadonly421>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion421 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha421 = Extract; -type ExcludeZulu421 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA421 { width: number; height: number; depth: number } -interface ShapeB421 { color: string; opacity: number; blend: string } -interface ShapeC421 { x: number; y: number; z: number; w: number } -interface ShapeD421 { label: string; title: string; summary: string } - -type Combined421 = ShapeA421 & ShapeB421 & ShapeC421 & ShapeD421; -type OptionalAll421 = { [K in keyof Combined421]?: Combined421[K] }; -type RequiredAll421 = { [K in keyof Combined421]-?: Combined421[K] }; -type ReadonlyAll421 = { readonly [K in keyof Combined421]: Combined421[K] }; -type NullableAll421 = { [K in keyof Combined421]: Combined421[K] | null }; +type EV_0421 = Val_0421; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString421 = T extends string ? true : false; -type IsNumber421 = T extends number ? true : false; -type TypeName421 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames421 = { - [K in keyof BigRecord421]: TypeName421; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb421 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource421 = "user" | "post" | "comment" | "tag" | "category"; -type Action421 = `${Verb421}_${Resource421}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise421 = T extends Promise ? UnwrapPromise421 : T; -type UnwrapArray421 = T extends (infer U)[] ? UnwrapArray421 : T; -type Head421 = T extends [infer H, ...infer _] ? H : never; -type Tail421 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation421 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation421>] - : never; +interface Registry_04_21 { + entities: Map; + validators: EV_0421; + paths: Set; + merged: DeepMerge_0421; +} -type SmallUnion421 = "a" | "b" | "c" | "d"; -type AllPerms421 = Permutation421; +type CK_0421 = `p04.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig421, - Flat421, - FR421, - BigUnion421, - ExtractAlpha421, - ExcludeZulu421, - OptionalAll421, - RequiredAll421, - ReadonlyAll421, - NullableAll421, - TypeNames421, - Action421, - AllPerms421, -}; +export type { Entity_04_21, Registry_04_21, CK_0421, EP_0421, EV_0421, DeepMerge_0421 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts index 4cbcf04c..03a391d3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-22.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-22 (seed 422) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-22 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0422 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0422 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord422 { - a422: { x: number; y: string; z: boolean }; - b422: { p: string[]; q: Record }; - c422: { nested: { deep: { deeper: { deepest: string } } } }; - d422: number; - e422: string; - f422: boolean; - g422: null; - h422: undefined; - i422: bigint; - j422: symbol; +interface Entity_04_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_22 | null; children: Entity_04_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0422: number; y0422: string; z0422: boolean }; } -type PartialBig422 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten422 = T extends Array ? Flatten422 : T; -type Nested422 = number[][][][][][][][][][]; -type Flat422 = Flatten422; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly422 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly422 : T[K]; -}; -type DeepRequired422 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired422 : T[K]; +type Path_0422 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0422}` }[keyof T & string] : never; +type EP_0422 = Path_0422; + +type Val_0422 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0422 } + : T[K] extends object ? { t: 'o'; props: Val_0422 } + : { t: 'u' }; }; -type FR422 = DeepReadonly422>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion422 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha422 = Extract; -type ExcludeZulu422 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA422 { width: number; height: number; depth: number } -interface ShapeB422 { color: string; opacity: number; blend: string } -interface ShapeC422 { x: number; y: number; z: number; w: number } -interface ShapeD422 { label: string; title: string; summary: string } - -type Combined422 = ShapeA422 & ShapeB422 & ShapeC422 & ShapeD422; -type OptionalAll422 = { [K in keyof Combined422]?: Combined422[K] }; -type RequiredAll422 = { [K in keyof Combined422]-?: Combined422[K] }; -type ReadonlyAll422 = { readonly [K in keyof Combined422]: Combined422[K] }; -type NullableAll422 = { [K in keyof Combined422]: Combined422[K] | null }; +type EV_0422 = Val_0422; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString422 = T extends string ? true : false; -type IsNumber422 = T extends number ? true : false; -type TypeName422 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames422 = { - [K in keyof BigRecord422]: TypeName422; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb422 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource422 = "user" | "post" | "comment" | "tag" | "category"; -type Action422 = `${Verb422}_${Resource422}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise422 = T extends Promise ? UnwrapPromise422 : T; -type UnwrapArray422 = T extends (infer U)[] ? UnwrapArray422 : T; -type Head422 = T extends [infer H, ...infer _] ? H : never; -type Tail422 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation422 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation422>] - : never; +interface Registry_04_22 { + entities: Map; + validators: EV_0422; + paths: Set; + merged: DeepMerge_0422; +} -type SmallUnion422 = "a" | "b" | "c" | "d"; -type AllPerms422 = Permutation422; +type CK_0422 = `p04.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig422, - Flat422, - FR422, - BigUnion422, - ExtractAlpha422, - ExcludeZulu422, - OptionalAll422, - RequiredAll422, - ReadonlyAll422, - NullableAll422, - TypeNames422, - Action422, - AllPerms422, -}; +export type { Entity_04_22, Registry_04_22, CK_0422, EP_0422, EV_0422, DeepMerge_0422 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts index 36ef5fb5..d2617031 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-23.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-23 (seed 423) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-23 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0423 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0423 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord423 { - a423: { x: number; y: string; z: boolean }; - b423: { p: string[]; q: Record }; - c423: { nested: { deep: { deeper: { deepest: string } } } }; - d423: number; - e423: string; - f423: boolean; - g423: null; - h423: undefined; - i423: bigint; - j423: symbol; +interface Entity_04_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_23 | null; children: Entity_04_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0423: number; y0423: string; z0423: boolean }; } -type PartialBig423 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten423 = T extends Array ? Flatten423 : T; -type Nested423 = number[][][][][][][][][][]; -type Flat423 = Flatten423; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly423 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly423 : T[K]; -}; -type DeepRequired423 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired423 : T[K]; +type Path_0423 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0423}` }[keyof T & string] : never; +type EP_0423 = Path_0423; + +type Val_0423 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0423 } + : T[K] extends object ? { t: 'o'; props: Val_0423 } + : { t: 'u' }; }; -type FR423 = DeepReadonly423>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion423 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha423 = Extract; -type ExcludeZulu423 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA423 { width: number; height: number; depth: number } -interface ShapeB423 { color: string; opacity: number; blend: string } -interface ShapeC423 { x: number; y: number; z: number; w: number } -interface ShapeD423 { label: string; title: string; summary: string } - -type Combined423 = ShapeA423 & ShapeB423 & ShapeC423 & ShapeD423; -type OptionalAll423 = { [K in keyof Combined423]?: Combined423[K] }; -type RequiredAll423 = { [K in keyof Combined423]-?: Combined423[K] }; -type ReadonlyAll423 = { readonly [K in keyof Combined423]: Combined423[K] }; -type NullableAll423 = { [K in keyof Combined423]: Combined423[K] | null }; +type EV_0423 = Val_0423; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString423 = T extends string ? true : false; -type IsNumber423 = T extends number ? true : false; -type TypeName423 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames423 = { - [K in keyof BigRecord423]: TypeName423; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb423 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource423 = "user" | "post" | "comment" | "tag" | "category"; -type Action423 = `${Verb423}_${Resource423}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise423 = T extends Promise ? UnwrapPromise423 : T; -type UnwrapArray423 = T extends (infer U)[] ? UnwrapArray423 : T; -type Head423 = T extends [infer H, ...infer _] ? H : never; -type Tail423 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation423 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation423>] - : never; +interface Registry_04_23 { + entities: Map; + validators: EV_0423; + paths: Set; + merged: DeepMerge_0423; +} -type SmallUnion423 = "a" | "b" | "c" | "d"; -type AllPerms423 = Permutation423; +type CK_0423 = `p04.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig423, - Flat423, - FR423, - BigUnion423, - ExtractAlpha423, - ExcludeZulu423, - OptionalAll423, - RequiredAll423, - ReadonlyAll423, - NullableAll423, - TypeNames423, - Action423, - AllPerms423, -}; +export type { Entity_04_23, Registry_04_23, CK_0423, EP_0423, EV_0423, DeepMerge_0423 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts index e962b1f0..e1052a31 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-24.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-24 (seed 424) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-24 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0424 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0424 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord424 { - a424: { x: number; y: string; z: boolean }; - b424: { p: string[]; q: Record }; - c424: { nested: { deep: { deeper: { deepest: string } } } }; - d424: number; - e424: string; - f424: boolean; - g424: null; - h424: undefined; - i424: bigint; - j424: symbol; +interface Entity_04_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_24 | null; children: Entity_04_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0424: number; y0424: string; z0424: boolean }; } -type PartialBig424 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten424 = T extends Array ? Flatten424 : T; -type Nested424 = number[][][][][][][][][][]; -type Flat424 = Flatten424; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly424 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly424 : T[K]; -}; -type DeepRequired424 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired424 : T[K]; +type Path_0424 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0424}` }[keyof T & string] : never; +type EP_0424 = Path_0424; + +type Val_0424 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0424 } + : T[K] extends object ? { t: 'o'; props: Val_0424 } + : { t: 'u' }; }; -type FR424 = DeepReadonly424>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion424 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha424 = Extract; -type ExcludeZulu424 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA424 { width: number; height: number; depth: number } -interface ShapeB424 { color: string; opacity: number; blend: string } -interface ShapeC424 { x: number; y: number; z: number; w: number } -interface ShapeD424 { label: string; title: string; summary: string } - -type Combined424 = ShapeA424 & ShapeB424 & ShapeC424 & ShapeD424; -type OptionalAll424 = { [K in keyof Combined424]?: Combined424[K] }; -type RequiredAll424 = { [K in keyof Combined424]-?: Combined424[K] }; -type ReadonlyAll424 = { readonly [K in keyof Combined424]: Combined424[K] }; -type NullableAll424 = { [K in keyof Combined424]: Combined424[K] | null }; +type EV_0424 = Val_0424; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString424 = T extends string ? true : false; -type IsNumber424 = T extends number ? true : false; -type TypeName424 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames424 = { - [K in keyof BigRecord424]: TypeName424; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb424 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource424 = "user" | "post" | "comment" | "tag" | "category"; -type Action424 = `${Verb424}_${Resource424}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise424 = T extends Promise ? UnwrapPromise424 : T; -type UnwrapArray424 = T extends (infer U)[] ? UnwrapArray424 : T; -type Head424 = T extends [infer H, ...infer _] ? H : never; -type Tail424 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation424 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation424>] - : never; +interface Registry_04_24 { + entities: Map; + validators: EV_0424; + paths: Set; + merged: DeepMerge_0424; +} -type SmallUnion424 = "a" | "b" | "c" | "d"; -type AllPerms424 = Permutation424; +type CK_0424 = `p04.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig424, - Flat424, - FR424, - BigUnion424, - ExtractAlpha424, - ExcludeZulu424, - OptionalAll424, - RequiredAll424, - ReadonlyAll424, - NullableAll424, - TypeNames424, - Action424, - AllPerms424, -}; +export type { Entity_04_24, Registry_04_24, CK_0424, EP_0424, EV_0424, DeepMerge_0424 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts index 83f9d65c..81e71a20 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-25.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-25 (seed 425) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-25 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0425 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0425 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord425 { - a425: { x: number; y: string; z: boolean }; - b425: { p: string[]; q: Record }; - c425: { nested: { deep: { deeper: { deepest: string } } } }; - d425: number; - e425: string; - f425: boolean; - g425: null; - h425: undefined; - i425: bigint; - j425: symbol; +interface Entity_04_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_25 | null; children: Entity_04_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0425: number; y0425: string; z0425: boolean }; } -type PartialBig425 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten425 = T extends Array ? Flatten425 : T; -type Nested425 = number[][][][][][][][][][]; -type Flat425 = Flatten425; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly425 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly425 : T[K]; -}; -type DeepRequired425 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired425 : T[K]; +type Path_0425 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0425}` }[keyof T & string] : never; +type EP_0425 = Path_0425; + +type Val_0425 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0425 } + : T[K] extends object ? { t: 'o'; props: Val_0425 } + : { t: 'u' }; }; -type FR425 = DeepReadonly425>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion425 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha425 = Extract; -type ExcludeZulu425 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA425 { width: number; height: number; depth: number } -interface ShapeB425 { color: string; opacity: number; blend: string } -interface ShapeC425 { x: number; y: number; z: number; w: number } -interface ShapeD425 { label: string; title: string; summary: string } - -type Combined425 = ShapeA425 & ShapeB425 & ShapeC425 & ShapeD425; -type OptionalAll425 = { [K in keyof Combined425]?: Combined425[K] }; -type RequiredAll425 = { [K in keyof Combined425]-?: Combined425[K] }; -type ReadonlyAll425 = { readonly [K in keyof Combined425]: Combined425[K] }; -type NullableAll425 = { [K in keyof Combined425]: Combined425[K] | null }; +type EV_0425 = Val_0425; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString425 = T extends string ? true : false; -type IsNumber425 = T extends number ? true : false; -type TypeName425 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames425 = { - [K in keyof BigRecord425]: TypeName425; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb425 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource425 = "user" | "post" | "comment" | "tag" | "category"; -type Action425 = `${Verb425}_${Resource425}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise425 = T extends Promise ? UnwrapPromise425 : T; -type UnwrapArray425 = T extends (infer U)[] ? UnwrapArray425 : T; -type Head425 = T extends [infer H, ...infer _] ? H : never; -type Tail425 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation425 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation425>] - : never; +interface Registry_04_25 { + entities: Map; + validators: EV_0425; + paths: Set; + merged: DeepMerge_0425; +} -type SmallUnion425 = "a" | "b" | "c" | "d"; -type AllPerms425 = Permutation425; +type CK_0425 = `p04.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig425, - Flat425, - FR425, - BigUnion425, - ExtractAlpha425, - ExcludeZulu425, - OptionalAll425, - RequiredAll425, - ReadonlyAll425, - NullableAll425, - TypeNames425, - Action425, - AllPerms425, -}; +export type { Entity_04_25, Registry_04_25, CK_0425, EP_0425, EV_0425, DeepMerge_0425 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts index e0a19a69..043d403f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-26.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-26 (seed 426) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-26 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0426 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0426 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord426 { - a426: { x: number; y: string; z: boolean }; - b426: { p: string[]; q: Record }; - c426: { nested: { deep: { deeper: { deepest: string } } } }; - d426: number; - e426: string; - f426: boolean; - g426: null; - h426: undefined; - i426: bigint; - j426: symbol; +interface Entity_04_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_26 | null; children: Entity_04_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0426: number; y0426: string; z0426: boolean }; } -type PartialBig426 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten426 = T extends Array ? Flatten426 : T; -type Nested426 = number[][][][][][][][][][]; -type Flat426 = Flatten426; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly426 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly426 : T[K]; -}; -type DeepRequired426 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired426 : T[K]; +type Path_0426 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0426}` }[keyof T & string] : never; +type EP_0426 = Path_0426; + +type Val_0426 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0426 } + : T[K] extends object ? { t: 'o'; props: Val_0426 } + : { t: 'u' }; }; -type FR426 = DeepReadonly426>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion426 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha426 = Extract; -type ExcludeZulu426 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA426 { width: number; height: number; depth: number } -interface ShapeB426 { color: string; opacity: number; blend: string } -interface ShapeC426 { x: number; y: number; z: number; w: number } -interface ShapeD426 { label: string; title: string; summary: string } - -type Combined426 = ShapeA426 & ShapeB426 & ShapeC426 & ShapeD426; -type OptionalAll426 = { [K in keyof Combined426]?: Combined426[K] }; -type RequiredAll426 = { [K in keyof Combined426]-?: Combined426[K] }; -type ReadonlyAll426 = { readonly [K in keyof Combined426]: Combined426[K] }; -type NullableAll426 = { [K in keyof Combined426]: Combined426[K] | null }; +type EV_0426 = Val_0426; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString426 = T extends string ? true : false; -type IsNumber426 = T extends number ? true : false; -type TypeName426 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames426 = { - [K in keyof BigRecord426]: TypeName426; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb426 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource426 = "user" | "post" | "comment" | "tag" | "category"; -type Action426 = `${Verb426}_${Resource426}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise426 = T extends Promise ? UnwrapPromise426 : T; -type UnwrapArray426 = T extends (infer U)[] ? UnwrapArray426 : T; -type Head426 = T extends [infer H, ...infer _] ? H : never; -type Tail426 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation426 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation426>] - : never; +interface Registry_04_26 { + entities: Map; + validators: EV_0426; + paths: Set; + merged: DeepMerge_0426; +} -type SmallUnion426 = "a" | "b" | "c" | "d"; -type AllPerms426 = Permutation426; +type CK_0426 = `p04.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig426, - Flat426, - FR426, - BigUnion426, - ExtractAlpha426, - ExcludeZulu426, - OptionalAll426, - RequiredAll426, - ReadonlyAll426, - NullableAll426, - TypeNames426, - Action426, - AllPerms426, -}; +export type { Entity_04_26, Registry_04_26, CK_0426, EP_0426, EV_0426, DeepMerge_0426 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts index 2e46f04a..656bbcd9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-27.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-27 (seed 427) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-27 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0427 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0427 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord427 { - a427: { x: number; y: string; z: boolean }; - b427: { p: string[]; q: Record }; - c427: { nested: { deep: { deeper: { deepest: string } } } }; - d427: number; - e427: string; - f427: boolean; - g427: null; - h427: undefined; - i427: bigint; - j427: symbol; +interface Entity_04_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_27 | null; children: Entity_04_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0427: number; y0427: string; z0427: boolean }; } -type PartialBig427 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten427 = T extends Array ? Flatten427 : T; -type Nested427 = number[][][][][][][][][][]; -type Flat427 = Flatten427; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly427 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly427 : T[K]; -}; -type DeepRequired427 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired427 : T[K]; +type Path_0427 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0427}` }[keyof T & string] : never; +type EP_0427 = Path_0427; + +type Val_0427 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0427 } + : T[K] extends object ? { t: 'o'; props: Val_0427 } + : { t: 'u' }; }; -type FR427 = DeepReadonly427>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion427 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha427 = Extract; -type ExcludeZulu427 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA427 { width: number; height: number; depth: number } -interface ShapeB427 { color: string; opacity: number; blend: string } -interface ShapeC427 { x: number; y: number; z: number; w: number } -interface ShapeD427 { label: string; title: string; summary: string } - -type Combined427 = ShapeA427 & ShapeB427 & ShapeC427 & ShapeD427; -type OptionalAll427 = { [K in keyof Combined427]?: Combined427[K] }; -type RequiredAll427 = { [K in keyof Combined427]-?: Combined427[K] }; -type ReadonlyAll427 = { readonly [K in keyof Combined427]: Combined427[K] }; -type NullableAll427 = { [K in keyof Combined427]: Combined427[K] | null }; +type EV_0427 = Val_0427; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString427 = T extends string ? true : false; -type IsNumber427 = T extends number ? true : false; -type TypeName427 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames427 = { - [K in keyof BigRecord427]: TypeName427; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb427 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource427 = "user" | "post" | "comment" | "tag" | "category"; -type Action427 = `${Verb427}_${Resource427}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise427 = T extends Promise ? UnwrapPromise427 : T; -type UnwrapArray427 = T extends (infer U)[] ? UnwrapArray427 : T; -type Head427 = T extends [infer H, ...infer _] ? H : never; -type Tail427 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation427 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation427>] - : never; +interface Registry_04_27 { + entities: Map; + validators: EV_0427; + paths: Set; + merged: DeepMerge_0427; +} -type SmallUnion427 = "a" | "b" | "c" | "d"; -type AllPerms427 = Permutation427; +type CK_0427 = `p04.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig427, - Flat427, - FR427, - BigUnion427, - ExtractAlpha427, - ExcludeZulu427, - OptionalAll427, - RequiredAll427, - ReadonlyAll427, - NullableAll427, - TypeNames427, - Action427, - AllPerms427, -}; +export type { Entity_04_27, Registry_04_27, CK_0427, EP_0427, EV_0427, DeepMerge_0427 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts index 637adbea..15c48670 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-28.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-28 (seed 428) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-28 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0428 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0428 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord428 { - a428: { x: number; y: string; z: boolean }; - b428: { p: string[]; q: Record }; - c428: { nested: { deep: { deeper: { deepest: string } } } }; - d428: number; - e428: string; - f428: boolean; - g428: null; - h428: undefined; - i428: bigint; - j428: symbol; +interface Entity_04_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_28 | null; children: Entity_04_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0428: number; y0428: string; z0428: boolean }; } -type PartialBig428 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten428 = T extends Array ? Flatten428 : T; -type Nested428 = number[][][][][][][][][][]; -type Flat428 = Flatten428; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly428 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly428 : T[K]; -}; -type DeepRequired428 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired428 : T[K]; +type Path_0428 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0428}` }[keyof T & string] : never; +type EP_0428 = Path_0428; + +type Val_0428 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0428 } + : T[K] extends object ? { t: 'o'; props: Val_0428 } + : { t: 'u' }; }; -type FR428 = DeepReadonly428>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion428 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha428 = Extract; -type ExcludeZulu428 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA428 { width: number; height: number; depth: number } -interface ShapeB428 { color: string; opacity: number; blend: string } -interface ShapeC428 { x: number; y: number; z: number; w: number } -interface ShapeD428 { label: string; title: string; summary: string } - -type Combined428 = ShapeA428 & ShapeB428 & ShapeC428 & ShapeD428; -type OptionalAll428 = { [K in keyof Combined428]?: Combined428[K] }; -type RequiredAll428 = { [K in keyof Combined428]-?: Combined428[K] }; -type ReadonlyAll428 = { readonly [K in keyof Combined428]: Combined428[K] }; -type NullableAll428 = { [K in keyof Combined428]: Combined428[K] | null }; +type EV_0428 = Val_0428; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString428 = T extends string ? true : false; -type IsNumber428 = T extends number ? true : false; -type TypeName428 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames428 = { - [K in keyof BigRecord428]: TypeName428; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb428 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource428 = "user" | "post" | "comment" | "tag" | "category"; -type Action428 = `${Verb428}_${Resource428}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise428 = T extends Promise ? UnwrapPromise428 : T; -type UnwrapArray428 = T extends (infer U)[] ? UnwrapArray428 : T; -type Head428 = T extends [infer H, ...infer _] ? H : never; -type Tail428 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation428 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation428>] - : never; +interface Registry_04_28 { + entities: Map; + validators: EV_0428; + paths: Set; + merged: DeepMerge_0428; +} -type SmallUnion428 = "a" | "b" | "c" | "d"; -type AllPerms428 = Permutation428; +type CK_0428 = `p04.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig428, - Flat428, - FR428, - BigUnion428, - ExtractAlpha428, - ExcludeZulu428, - OptionalAll428, - RequiredAll428, - ReadonlyAll428, - NullableAll428, - TypeNames428, - Action428, - AllPerms428, -}; +export type { Entity_04_28, Registry_04_28, CK_0428, EP_0428, EV_0428, DeepMerge_0428 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts index 2b73cf8a..eea2aa95 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-29.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-29 (seed 429) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-29 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0429 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0429 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord429 { - a429: { x: number; y: string; z: boolean }; - b429: { p: string[]; q: Record }; - c429: { nested: { deep: { deeper: { deepest: string } } } }; - d429: number; - e429: string; - f429: boolean; - g429: null; - h429: undefined; - i429: bigint; - j429: symbol; +interface Entity_04_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_29 | null; children: Entity_04_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0429: number; y0429: string; z0429: boolean }; } -type PartialBig429 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten429 = T extends Array ? Flatten429 : T; -type Nested429 = number[][][][][][][][][][]; -type Flat429 = Flatten429; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly429 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly429 : T[K]; -}; -type DeepRequired429 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired429 : T[K]; +type Path_0429 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0429}` }[keyof T & string] : never; +type EP_0429 = Path_0429; + +type Val_0429 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0429 } + : T[K] extends object ? { t: 'o'; props: Val_0429 } + : { t: 'u' }; }; -type FR429 = DeepReadonly429>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion429 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha429 = Extract; -type ExcludeZulu429 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA429 { width: number; height: number; depth: number } -interface ShapeB429 { color: string; opacity: number; blend: string } -interface ShapeC429 { x: number; y: number; z: number; w: number } -interface ShapeD429 { label: string; title: string; summary: string } - -type Combined429 = ShapeA429 & ShapeB429 & ShapeC429 & ShapeD429; -type OptionalAll429 = { [K in keyof Combined429]?: Combined429[K] }; -type RequiredAll429 = { [K in keyof Combined429]-?: Combined429[K] }; -type ReadonlyAll429 = { readonly [K in keyof Combined429]: Combined429[K] }; -type NullableAll429 = { [K in keyof Combined429]: Combined429[K] | null }; +type EV_0429 = Val_0429; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString429 = T extends string ? true : false; -type IsNumber429 = T extends number ? true : false; -type TypeName429 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames429 = { - [K in keyof BigRecord429]: TypeName429; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb429 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource429 = "user" | "post" | "comment" | "tag" | "category"; -type Action429 = `${Verb429}_${Resource429}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise429 = T extends Promise ? UnwrapPromise429 : T; -type UnwrapArray429 = T extends (infer U)[] ? UnwrapArray429 : T; -type Head429 = T extends [infer H, ...infer _] ? H : never; -type Tail429 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation429 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation429>] - : never; +interface Registry_04_29 { + entities: Map; + validators: EV_0429; + paths: Set; + merged: DeepMerge_0429; +} -type SmallUnion429 = "a" | "b" | "c" | "d"; -type AllPerms429 = Permutation429; +type CK_0429 = `p04.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig429, - Flat429, - FR429, - BigUnion429, - ExtractAlpha429, - ExcludeZulu429, - OptionalAll429, - RequiredAll429, - ReadonlyAll429, - NullableAll429, - TypeNames429, - Action429, - AllPerms429, -}; +export type { Entity_04_29, Registry_04_29, CK_0429, EP_0429, EV_0429, DeepMerge_0429 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts index 38f4be17..8f28c39d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-30.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-30 (seed 430) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-30 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0430 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0430 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord430 { - a430: { x: number; y: string; z: boolean }; - b430: { p: string[]; q: Record }; - c430: { nested: { deep: { deeper: { deepest: string } } } }; - d430: number; - e430: string; - f430: boolean; - g430: null; - h430: undefined; - i430: bigint; - j430: symbol; +interface Entity_04_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_30 | null; children: Entity_04_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0430: number; y0430: string; z0430: boolean }; } -type PartialBig430 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten430 = T extends Array ? Flatten430 : T; -type Nested430 = number[][][][][][][][][][]; -type Flat430 = Flatten430; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly430 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly430 : T[K]; -}; -type DeepRequired430 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired430 : T[K]; +type Path_0430 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0430}` }[keyof T & string] : never; +type EP_0430 = Path_0430; + +type Val_0430 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0430 } + : T[K] extends object ? { t: 'o'; props: Val_0430 } + : { t: 'u' }; }; -type FR430 = DeepReadonly430>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion430 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha430 = Extract; -type ExcludeZulu430 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA430 { width: number; height: number; depth: number } -interface ShapeB430 { color: string; opacity: number; blend: string } -interface ShapeC430 { x: number; y: number; z: number; w: number } -interface ShapeD430 { label: string; title: string; summary: string } - -type Combined430 = ShapeA430 & ShapeB430 & ShapeC430 & ShapeD430; -type OptionalAll430 = { [K in keyof Combined430]?: Combined430[K] }; -type RequiredAll430 = { [K in keyof Combined430]-?: Combined430[K] }; -type ReadonlyAll430 = { readonly [K in keyof Combined430]: Combined430[K] }; -type NullableAll430 = { [K in keyof Combined430]: Combined430[K] | null }; +type EV_0430 = Val_0430; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString430 = T extends string ? true : false; -type IsNumber430 = T extends number ? true : false; -type TypeName430 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames430 = { - [K in keyof BigRecord430]: TypeName430; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb430 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource430 = "user" | "post" | "comment" | "tag" | "category"; -type Action430 = `${Verb430}_${Resource430}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise430 = T extends Promise ? UnwrapPromise430 : T; -type UnwrapArray430 = T extends (infer U)[] ? UnwrapArray430 : T; -type Head430 = T extends [infer H, ...infer _] ? H : never; -type Tail430 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation430 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation430>] - : never; +interface Registry_04_30 { + entities: Map; + validators: EV_0430; + paths: Set; + merged: DeepMerge_0430; +} -type SmallUnion430 = "a" | "b" | "c" | "d"; -type AllPerms430 = Permutation430; +type CK_0430 = `p04.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig430, - Flat430, - FR430, - BigUnion430, - ExtractAlpha430, - ExcludeZulu430, - OptionalAll430, - RequiredAll430, - ReadonlyAll430, - NullableAll430, - TypeNames430, - Action430, - AllPerms430, -}; +export type { Entity_04_30, Registry_04_30, CK_0430, EP_0430, EV_0430, DeepMerge_0430 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts index fe7c2834..773f78d0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-31.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-31 (seed 431) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-31 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0431 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0431 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord431 { - a431: { x: number; y: string; z: boolean }; - b431: { p: string[]; q: Record }; - c431: { nested: { deep: { deeper: { deepest: string } } } }; - d431: number; - e431: string; - f431: boolean; - g431: null; - h431: undefined; - i431: bigint; - j431: symbol; +interface Entity_04_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_31 | null; children: Entity_04_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0431: number; y0431: string; z0431: boolean }; } -type PartialBig431 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten431 = T extends Array ? Flatten431 : T; -type Nested431 = number[][][][][][][][][][]; -type Flat431 = Flatten431; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly431 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly431 : T[K]; -}; -type DeepRequired431 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired431 : T[K]; +type Path_0431 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0431}` }[keyof T & string] : never; +type EP_0431 = Path_0431; + +type Val_0431 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0431 } + : T[K] extends object ? { t: 'o'; props: Val_0431 } + : { t: 'u' }; }; -type FR431 = DeepReadonly431>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion431 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha431 = Extract; -type ExcludeZulu431 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA431 { width: number; height: number; depth: number } -interface ShapeB431 { color: string; opacity: number; blend: string } -interface ShapeC431 { x: number; y: number; z: number; w: number } -interface ShapeD431 { label: string; title: string; summary: string } - -type Combined431 = ShapeA431 & ShapeB431 & ShapeC431 & ShapeD431; -type OptionalAll431 = { [K in keyof Combined431]?: Combined431[K] }; -type RequiredAll431 = { [K in keyof Combined431]-?: Combined431[K] }; -type ReadonlyAll431 = { readonly [K in keyof Combined431]: Combined431[K] }; -type NullableAll431 = { [K in keyof Combined431]: Combined431[K] | null }; +type EV_0431 = Val_0431; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString431 = T extends string ? true : false; -type IsNumber431 = T extends number ? true : false; -type TypeName431 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames431 = { - [K in keyof BigRecord431]: TypeName431; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb431 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource431 = "user" | "post" | "comment" | "tag" | "category"; -type Action431 = `${Verb431}_${Resource431}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise431 = T extends Promise ? UnwrapPromise431 : T; -type UnwrapArray431 = T extends (infer U)[] ? UnwrapArray431 : T; -type Head431 = T extends [infer H, ...infer _] ? H : never; -type Tail431 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation431 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation431>] - : never; +interface Registry_04_31 { + entities: Map; + validators: EV_0431; + paths: Set; + merged: DeepMerge_0431; +} -type SmallUnion431 = "a" | "b" | "c" | "d"; -type AllPerms431 = Permutation431; +type CK_0431 = `p04.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig431, - Flat431, - FR431, - BigUnion431, - ExtractAlpha431, - ExcludeZulu431, - OptionalAll431, - RequiredAll431, - ReadonlyAll431, - NullableAll431, - TypeNames431, - Action431, - AllPerms431, -}; +export type { Entity_04_31, Registry_04_31, CK_0431, EP_0431, EV_0431, DeepMerge_0431 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts index 9fda4854..17394f07 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-32.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-32 (seed 432) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-32 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0432 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0432 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord432 { - a432: { x: number; y: string; z: boolean }; - b432: { p: string[]; q: Record }; - c432: { nested: { deep: { deeper: { deepest: string } } } }; - d432: number; - e432: string; - f432: boolean; - g432: null; - h432: undefined; - i432: bigint; - j432: symbol; +interface Entity_04_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_32 | null; children: Entity_04_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0432: number; y0432: string; z0432: boolean }; } -type PartialBig432 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten432 = T extends Array ? Flatten432 : T; -type Nested432 = number[][][][][][][][][][]; -type Flat432 = Flatten432; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly432 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly432 : T[K]; -}; -type DeepRequired432 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired432 : T[K]; +type Path_0432 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0432}` }[keyof T & string] : never; +type EP_0432 = Path_0432; + +type Val_0432 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0432 } + : T[K] extends object ? { t: 'o'; props: Val_0432 } + : { t: 'u' }; }; -type FR432 = DeepReadonly432>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion432 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha432 = Extract; -type ExcludeZulu432 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA432 { width: number; height: number; depth: number } -interface ShapeB432 { color: string; opacity: number; blend: string } -interface ShapeC432 { x: number; y: number; z: number; w: number } -interface ShapeD432 { label: string; title: string; summary: string } - -type Combined432 = ShapeA432 & ShapeB432 & ShapeC432 & ShapeD432; -type OptionalAll432 = { [K in keyof Combined432]?: Combined432[K] }; -type RequiredAll432 = { [K in keyof Combined432]-?: Combined432[K] }; -type ReadonlyAll432 = { readonly [K in keyof Combined432]: Combined432[K] }; -type NullableAll432 = { [K in keyof Combined432]: Combined432[K] | null }; +type EV_0432 = Val_0432; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString432 = T extends string ? true : false; -type IsNumber432 = T extends number ? true : false; -type TypeName432 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames432 = { - [K in keyof BigRecord432]: TypeName432; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb432 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource432 = "user" | "post" | "comment" | "tag" | "category"; -type Action432 = `${Verb432}_${Resource432}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise432 = T extends Promise ? UnwrapPromise432 : T; -type UnwrapArray432 = T extends (infer U)[] ? UnwrapArray432 : T; -type Head432 = T extends [infer H, ...infer _] ? H : never; -type Tail432 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation432 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation432>] - : never; +interface Registry_04_32 { + entities: Map; + validators: EV_0432; + paths: Set; + merged: DeepMerge_0432; +} -type SmallUnion432 = "a" | "b" | "c" | "d"; -type AllPerms432 = Permutation432; +type CK_0432 = `p04.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig432, - Flat432, - FR432, - BigUnion432, - ExtractAlpha432, - ExcludeZulu432, - OptionalAll432, - RequiredAll432, - ReadonlyAll432, - NullableAll432, - TypeNames432, - Action432, - AllPerms432, -}; +export type { Entity_04_32, Registry_04_32, CK_0432, EP_0432, EV_0432, DeepMerge_0432 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts index 76c1983c..90cb67ba 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-33.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-33 (seed 433) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-33 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0433 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0433 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord433 { - a433: { x: number; y: string; z: boolean }; - b433: { p: string[]; q: Record }; - c433: { nested: { deep: { deeper: { deepest: string } } } }; - d433: number; - e433: string; - f433: boolean; - g433: null; - h433: undefined; - i433: bigint; - j433: symbol; +interface Entity_04_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_33 | null; children: Entity_04_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0433: number; y0433: string; z0433: boolean }; } -type PartialBig433 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten433 = T extends Array ? Flatten433 : T; -type Nested433 = number[][][][][][][][][][]; -type Flat433 = Flatten433; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly433 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly433 : T[K]; -}; -type DeepRequired433 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired433 : T[K]; +type Path_0433 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0433}` }[keyof T & string] : never; +type EP_0433 = Path_0433; + +type Val_0433 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0433 } + : T[K] extends object ? { t: 'o'; props: Val_0433 } + : { t: 'u' }; }; -type FR433 = DeepReadonly433>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion433 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha433 = Extract; -type ExcludeZulu433 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA433 { width: number; height: number; depth: number } -interface ShapeB433 { color: string; opacity: number; blend: string } -interface ShapeC433 { x: number; y: number; z: number; w: number } -interface ShapeD433 { label: string; title: string; summary: string } - -type Combined433 = ShapeA433 & ShapeB433 & ShapeC433 & ShapeD433; -type OptionalAll433 = { [K in keyof Combined433]?: Combined433[K] }; -type RequiredAll433 = { [K in keyof Combined433]-?: Combined433[K] }; -type ReadonlyAll433 = { readonly [K in keyof Combined433]: Combined433[K] }; -type NullableAll433 = { [K in keyof Combined433]: Combined433[K] | null }; +type EV_0433 = Val_0433; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString433 = T extends string ? true : false; -type IsNumber433 = T extends number ? true : false; -type TypeName433 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames433 = { - [K in keyof BigRecord433]: TypeName433; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb433 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource433 = "user" | "post" | "comment" | "tag" | "category"; -type Action433 = `${Verb433}_${Resource433}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise433 = T extends Promise ? UnwrapPromise433 : T; -type UnwrapArray433 = T extends (infer U)[] ? UnwrapArray433 : T; -type Head433 = T extends [infer H, ...infer _] ? H : never; -type Tail433 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation433 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation433>] - : never; +interface Registry_04_33 { + entities: Map; + validators: EV_0433; + paths: Set; + merged: DeepMerge_0433; +} -type SmallUnion433 = "a" | "b" | "c" | "d"; -type AllPerms433 = Permutation433; +type CK_0433 = `p04.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig433, - Flat433, - FR433, - BigUnion433, - ExtractAlpha433, - ExcludeZulu433, - OptionalAll433, - RequiredAll433, - ReadonlyAll433, - NullableAll433, - TypeNames433, - Action433, - AllPerms433, -}; +export type { Entity_04_33, Registry_04_33, CK_0433, EP_0433, EV_0433, DeepMerge_0433 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts index dd3ee7d4..38402586 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-34.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-34 (seed 434) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-34 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0434 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0434 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord434 { - a434: { x: number; y: string; z: boolean }; - b434: { p: string[]; q: Record }; - c434: { nested: { deep: { deeper: { deepest: string } } } }; - d434: number; - e434: string; - f434: boolean; - g434: null; - h434: undefined; - i434: bigint; - j434: symbol; +interface Entity_04_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_34 | null; children: Entity_04_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0434: number; y0434: string; z0434: boolean }; } -type PartialBig434 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten434 = T extends Array ? Flatten434 : T; -type Nested434 = number[][][][][][][][][][]; -type Flat434 = Flatten434; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly434 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly434 : T[K]; -}; -type DeepRequired434 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired434 : T[K]; +type Path_0434 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0434}` }[keyof T & string] : never; +type EP_0434 = Path_0434; + +type Val_0434 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0434 } + : T[K] extends object ? { t: 'o'; props: Val_0434 } + : { t: 'u' }; }; -type FR434 = DeepReadonly434>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion434 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha434 = Extract; -type ExcludeZulu434 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA434 { width: number; height: number; depth: number } -interface ShapeB434 { color: string; opacity: number; blend: string } -interface ShapeC434 { x: number; y: number; z: number; w: number } -interface ShapeD434 { label: string; title: string; summary: string } - -type Combined434 = ShapeA434 & ShapeB434 & ShapeC434 & ShapeD434; -type OptionalAll434 = { [K in keyof Combined434]?: Combined434[K] }; -type RequiredAll434 = { [K in keyof Combined434]-?: Combined434[K] }; -type ReadonlyAll434 = { readonly [K in keyof Combined434]: Combined434[K] }; -type NullableAll434 = { [K in keyof Combined434]: Combined434[K] | null }; +type EV_0434 = Val_0434; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString434 = T extends string ? true : false; -type IsNumber434 = T extends number ? true : false; -type TypeName434 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames434 = { - [K in keyof BigRecord434]: TypeName434; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb434 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource434 = "user" | "post" | "comment" | "tag" | "category"; -type Action434 = `${Verb434}_${Resource434}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise434 = T extends Promise ? UnwrapPromise434 : T; -type UnwrapArray434 = T extends (infer U)[] ? UnwrapArray434 : T; -type Head434 = T extends [infer H, ...infer _] ? H : never; -type Tail434 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation434 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation434>] - : never; +interface Registry_04_34 { + entities: Map; + validators: EV_0434; + paths: Set; + merged: DeepMerge_0434; +} -type SmallUnion434 = "a" | "b" | "c" | "d"; -type AllPerms434 = Permutation434; +type CK_0434 = `p04.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig434, - Flat434, - FR434, - BigUnion434, - ExtractAlpha434, - ExcludeZulu434, - OptionalAll434, - RequiredAll434, - ReadonlyAll434, - NullableAll434, - TypeNames434, - Action434, - AllPerms434, -}; +export type { Entity_04_34, Registry_04_34, CK_0434, EP_0434, EV_0434, DeepMerge_0434 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts index 19017211..cbaac994 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-35.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-35 (seed 435) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-35 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0435 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0435 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord435 { - a435: { x: number; y: string; z: boolean }; - b435: { p: string[]; q: Record }; - c435: { nested: { deep: { deeper: { deepest: string } } } }; - d435: number; - e435: string; - f435: boolean; - g435: null; - h435: undefined; - i435: bigint; - j435: symbol; +interface Entity_04_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_35 | null; children: Entity_04_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0435: number; y0435: string; z0435: boolean }; } -type PartialBig435 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten435 = T extends Array ? Flatten435 : T; -type Nested435 = number[][][][][][][][][][]; -type Flat435 = Flatten435; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly435 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly435 : T[K]; -}; -type DeepRequired435 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired435 : T[K]; +type Path_0435 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0435}` }[keyof T & string] : never; +type EP_0435 = Path_0435; + +type Val_0435 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0435 } + : T[K] extends object ? { t: 'o'; props: Val_0435 } + : { t: 'u' }; }; -type FR435 = DeepReadonly435>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion435 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha435 = Extract; -type ExcludeZulu435 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA435 { width: number; height: number; depth: number } -interface ShapeB435 { color: string; opacity: number; blend: string } -interface ShapeC435 { x: number; y: number; z: number; w: number } -interface ShapeD435 { label: string; title: string; summary: string } - -type Combined435 = ShapeA435 & ShapeB435 & ShapeC435 & ShapeD435; -type OptionalAll435 = { [K in keyof Combined435]?: Combined435[K] }; -type RequiredAll435 = { [K in keyof Combined435]-?: Combined435[K] }; -type ReadonlyAll435 = { readonly [K in keyof Combined435]: Combined435[K] }; -type NullableAll435 = { [K in keyof Combined435]: Combined435[K] | null }; +type EV_0435 = Val_0435; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString435 = T extends string ? true : false; -type IsNumber435 = T extends number ? true : false; -type TypeName435 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames435 = { - [K in keyof BigRecord435]: TypeName435; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb435 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource435 = "user" | "post" | "comment" | "tag" | "category"; -type Action435 = `${Verb435}_${Resource435}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise435 = T extends Promise ? UnwrapPromise435 : T; -type UnwrapArray435 = T extends (infer U)[] ? UnwrapArray435 : T; -type Head435 = T extends [infer H, ...infer _] ? H : never; -type Tail435 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation435 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation435>] - : never; +interface Registry_04_35 { + entities: Map; + validators: EV_0435; + paths: Set; + merged: DeepMerge_0435; +} -type SmallUnion435 = "a" | "b" | "c" | "d"; -type AllPerms435 = Permutation435; +type CK_0435 = `p04.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig435, - Flat435, - FR435, - BigUnion435, - ExtractAlpha435, - ExcludeZulu435, - OptionalAll435, - RequiredAll435, - ReadonlyAll435, - NullableAll435, - TypeNames435, - Action435, - AllPerms435, -}; +export type { Entity_04_35, Registry_04_35, CK_0435, EP_0435, EV_0435, DeepMerge_0435 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts index 46adeeee..c073b8a4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-36.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-36 (seed 436) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-36 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0436 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0436 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord436 { - a436: { x: number; y: string; z: boolean }; - b436: { p: string[]; q: Record }; - c436: { nested: { deep: { deeper: { deepest: string } } } }; - d436: number; - e436: string; - f436: boolean; - g436: null; - h436: undefined; - i436: bigint; - j436: symbol; +interface Entity_04_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_36 | null; children: Entity_04_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0436: number; y0436: string; z0436: boolean }; } -type PartialBig436 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten436 = T extends Array ? Flatten436 : T; -type Nested436 = number[][][][][][][][][][]; -type Flat436 = Flatten436; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly436 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly436 : T[K]; -}; -type DeepRequired436 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired436 : T[K]; +type Path_0436 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0436}` }[keyof T & string] : never; +type EP_0436 = Path_0436; + +type Val_0436 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0436 } + : T[K] extends object ? { t: 'o'; props: Val_0436 } + : { t: 'u' }; }; -type FR436 = DeepReadonly436>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion436 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha436 = Extract; -type ExcludeZulu436 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA436 { width: number; height: number; depth: number } -interface ShapeB436 { color: string; opacity: number; blend: string } -interface ShapeC436 { x: number; y: number; z: number; w: number } -interface ShapeD436 { label: string; title: string; summary: string } - -type Combined436 = ShapeA436 & ShapeB436 & ShapeC436 & ShapeD436; -type OptionalAll436 = { [K in keyof Combined436]?: Combined436[K] }; -type RequiredAll436 = { [K in keyof Combined436]-?: Combined436[K] }; -type ReadonlyAll436 = { readonly [K in keyof Combined436]: Combined436[K] }; -type NullableAll436 = { [K in keyof Combined436]: Combined436[K] | null }; +type EV_0436 = Val_0436; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString436 = T extends string ? true : false; -type IsNumber436 = T extends number ? true : false; -type TypeName436 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames436 = { - [K in keyof BigRecord436]: TypeName436; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb436 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource436 = "user" | "post" | "comment" | "tag" | "category"; -type Action436 = `${Verb436}_${Resource436}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise436 = T extends Promise ? UnwrapPromise436 : T; -type UnwrapArray436 = T extends (infer U)[] ? UnwrapArray436 : T; -type Head436 = T extends [infer H, ...infer _] ? H : never; -type Tail436 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation436 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation436>] - : never; +interface Registry_04_36 { + entities: Map; + validators: EV_0436; + paths: Set; + merged: DeepMerge_0436; +} -type SmallUnion436 = "a" | "b" | "c" | "d"; -type AllPerms436 = Permutation436; +type CK_0436 = `p04.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig436, - Flat436, - FR436, - BigUnion436, - ExtractAlpha436, - ExcludeZulu436, - OptionalAll436, - RequiredAll436, - ReadonlyAll436, - NullableAll436, - TypeNames436, - Action436, - AllPerms436, -}; +export type { Entity_04_36, Registry_04_36, CK_0436, EP_0436, EV_0436, DeepMerge_0436 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts index 965d851f..9a588083 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-37.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-37 (seed 437) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-37 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0437 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0437 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord437 { - a437: { x: number; y: string; z: boolean }; - b437: { p: string[]; q: Record }; - c437: { nested: { deep: { deeper: { deepest: string } } } }; - d437: number; - e437: string; - f437: boolean; - g437: null; - h437: undefined; - i437: bigint; - j437: symbol; +interface Entity_04_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_37 | null; children: Entity_04_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0437: number; y0437: string; z0437: boolean }; } -type PartialBig437 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten437 = T extends Array ? Flatten437 : T; -type Nested437 = number[][][][][][][][][][]; -type Flat437 = Flatten437; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly437 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly437 : T[K]; -}; -type DeepRequired437 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired437 : T[K]; +type Path_0437 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0437}` }[keyof T & string] : never; +type EP_0437 = Path_0437; + +type Val_0437 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0437 } + : T[K] extends object ? { t: 'o'; props: Val_0437 } + : { t: 'u' }; }; -type FR437 = DeepReadonly437>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion437 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha437 = Extract; -type ExcludeZulu437 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA437 { width: number; height: number; depth: number } -interface ShapeB437 { color: string; opacity: number; blend: string } -interface ShapeC437 { x: number; y: number; z: number; w: number } -interface ShapeD437 { label: string; title: string; summary: string } - -type Combined437 = ShapeA437 & ShapeB437 & ShapeC437 & ShapeD437; -type OptionalAll437 = { [K in keyof Combined437]?: Combined437[K] }; -type RequiredAll437 = { [K in keyof Combined437]-?: Combined437[K] }; -type ReadonlyAll437 = { readonly [K in keyof Combined437]: Combined437[K] }; -type NullableAll437 = { [K in keyof Combined437]: Combined437[K] | null }; +type EV_0437 = Val_0437; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString437 = T extends string ? true : false; -type IsNumber437 = T extends number ? true : false; -type TypeName437 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames437 = { - [K in keyof BigRecord437]: TypeName437; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb437 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource437 = "user" | "post" | "comment" | "tag" | "category"; -type Action437 = `${Verb437}_${Resource437}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise437 = T extends Promise ? UnwrapPromise437 : T; -type UnwrapArray437 = T extends (infer U)[] ? UnwrapArray437 : T; -type Head437 = T extends [infer H, ...infer _] ? H : never; -type Tail437 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation437 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation437>] - : never; +interface Registry_04_37 { + entities: Map; + validators: EV_0437; + paths: Set; + merged: DeepMerge_0437; +} -type SmallUnion437 = "a" | "b" | "c" | "d"; -type AllPerms437 = Permutation437; +type CK_0437 = `p04.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig437, - Flat437, - FR437, - BigUnion437, - ExtractAlpha437, - ExcludeZulu437, - OptionalAll437, - RequiredAll437, - ReadonlyAll437, - NullableAll437, - TypeNames437, - Action437, - AllPerms437, -}; +export type { Entity_04_37, Registry_04_37, CK_0437, EP_0437, EV_0437, DeepMerge_0437 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts index becc9141..a10ab26f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-38.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-38 (seed 438) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-38 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0438 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0438 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord438 { - a438: { x: number; y: string; z: boolean }; - b438: { p: string[]; q: Record }; - c438: { nested: { deep: { deeper: { deepest: string } } } }; - d438: number; - e438: string; - f438: boolean; - g438: null; - h438: undefined; - i438: bigint; - j438: symbol; +interface Entity_04_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_38 | null; children: Entity_04_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0438: number; y0438: string; z0438: boolean }; } -type PartialBig438 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten438 = T extends Array ? Flatten438 : T; -type Nested438 = number[][][][][][][][][][]; -type Flat438 = Flatten438; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly438 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly438 : T[K]; -}; -type DeepRequired438 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired438 : T[K]; +type Path_0438 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0438}` }[keyof T & string] : never; +type EP_0438 = Path_0438; + +type Val_0438 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0438 } + : T[K] extends object ? { t: 'o'; props: Val_0438 } + : { t: 'u' }; }; -type FR438 = DeepReadonly438>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion438 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha438 = Extract; -type ExcludeZulu438 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA438 { width: number; height: number; depth: number } -interface ShapeB438 { color: string; opacity: number; blend: string } -interface ShapeC438 { x: number; y: number; z: number; w: number } -interface ShapeD438 { label: string; title: string; summary: string } - -type Combined438 = ShapeA438 & ShapeB438 & ShapeC438 & ShapeD438; -type OptionalAll438 = { [K in keyof Combined438]?: Combined438[K] }; -type RequiredAll438 = { [K in keyof Combined438]-?: Combined438[K] }; -type ReadonlyAll438 = { readonly [K in keyof Combined438]: Combined438[K] }; -type NullableAll438 = { [K in keyof Combined438]: Combined438[K] | null }; +type EV_0438 = Val_0438; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString438 = T extends string ? true : false; -type IsNumber438 = T extends number ? true : false; -type TypeName438 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames438 = { - [K in keyof BigRecord438]: TypeName438; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb438 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource438 = "user" | "post" | "comment" | "tag" | "category"; -type Action438 = `${Verb438}_${Resource438}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise438 = T extends Promise ? UnwrapPromise438 : T; -type UnwrapArray438 = T extends (infer U)[] ? UnwrapArray438 : T; -type Head438 = T extends [infer H, ...infer _] ? H : never; -type Tail438 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation438 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation438>] - : never; +interface Registry_04_38 { + entities: Map; + validators: EV_0438; + paths: Set; + merged: DeepMerge_0438; +} -type SmallUnion438 = "a" | "b" | "c" | "d"; -type AllPerms438 = Permutation438; +type CK_0438 = `p04.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig438, - Flat438, - FR438, - BigUnion438, - ExtractAlpha438, - ExcludeZulu438, - OptionalAll438, - RequiredAll438, - ReadonlyAll438, - NullableAll438, - TypeNames438, - Action438, - AllPerms438, -}; +export type { Entity_04_38, Registry_04_38, CK_0438, EP_0438, EV_0438, DeepMerge_0438 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts index b267084a..16a83a9e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-39.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-39 (seed 439) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-39 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0439 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0439 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord439 { - a439: { x: number; y: string; z: boolean }; - b439: { p: string[]; q: Record }; - c439: { nested: { deep: { deeper: { deepest: string } } } }; - d439: number; - e439: string; - f439: boolean; - g439: null; - h439: undefined; - i439: bigint; - j439: symbol; +interface Entity_04_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_39 | null; children: Entity_04_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0439: number; y0439: string; z0439: boolean }; } -type PartialBig439 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten439 = T extends Array ? Flatten439 : T; -type Nested439 = number[][][][][][][][][][]; -type Flat439 = Flatten439; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly439 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly439 : T[K]; -}; -type DeepRequired439 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired439 : T[K]; +type Path_0439 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0439}` }[keyof T & string] : never; +type EP_0439 = Path_0439; + +type Val_0439 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0439 } + : T[K] extends object ? { t: 'o'; props: Val_0439 } + : { t: 'u' }; }; -type FR439 = DeepReadonly439>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion439 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha439 = Extract; -type ExcludeZulu439 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA439 { width: number; height: number; depth: number } -interface ShapeB439 { color: string; opacity: number; blend: string } -interface ShapeC439 { x: number; y: number; z: number; w: number } -interface ShapeD439 { label: string; title: string; summary: string } - -type Combined439 = ShapeA439 & ShapeB439 & ShapeC439 & ShapeD439; -type OptionalAll439 = { [K in keyof Combined439]?: Combined439[K] }; -type RequiredAll439 = { [K in keyof Combined439]-?: Combined439[K] }; -type ReadonlyAll439 = { readonly [K in keyof Combined439]: Combined439[K] }; -type NullableAll439 = { [K in keyof Combined439]: Combined439[K] | null }; +type EV_0439 = Val_0439; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString439 = T extends string ? true : false; -type IsNumber439 = T extends number ? true : false; -type TypeName439 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames439 = { - [K in keyof BigRecord439]: TypeName439; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb439 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource439 = "user" | "post" | "comment" | "tag" | "category"; -type Action439 = `${Verb439}_${Resource439}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise439 = T extends Promise ? UnwrapPromise439 : T; -type UnwrapArray439 = T extends (infer U)[] ? UnwrapArray439 : T; -type Head439 = T extends [infer H, ...infer _] ? H : never; -type Tail439 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation439 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation439>] - : never; +interface Registry_04_39 { + entities: Map; + validators: EV_0439; + paths: Set; + merged: DeepMerge_0439; +} -type SmallUnion439 = "a" | "b" | "c" | "d"; -type AllPerms439 = Permutation439; +type CK_0439 = `p04.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig439, - Flat439, - FR439, - BigUnion439, - ExtractAlpha439, - ExcludeZulu439, - OptionalAll439, - RequiredAll439, - ReadonlyAll439, - NullableAll439, - TypeNames439, - Action439, - AllPerms439, -}; +export type { Entity_04_39, Registry_04_39, CK_0439, EP_0439, EV_0439, DeepMerge_0439 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts index 01ef7d89..42bf69ea 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-40.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-40 (seed 440) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-40 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0440 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0440 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord440 { - a440: { x: number; y: string; z: boolean }; - b440: { p: string[]; q: Record }; - c440: { nested: { deep: { deeper: { deepest: string } } } }; - d440: number; - e440: string; - f440: boolean; - g440: null; - h440: undefined; - i440: bigint; - j440: symbol; +interface Entity_04_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_40 | null; children: Entity_04_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0440: number; y0440: string; z0440: boolean }; } -type PartialBig440 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten440 = T extends Array ? Flatten440 : T; -type Nested440 = number[][][][][][][][][][]; -type Flat440 = Flatten440; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly440 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly440 : T[K]; -}; -type DeepRequired440 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired440 : T[K]; +type Path_0440 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0440}` }[keyof T & string] : never; +type EP_0440 = Path_0440; + +type Val_0440 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0440 } + : T[K] extends object ? { t: 'o'; props: Val_0440 } + : { t: 'u' }; }; -type FR440 = DeepReadonly440>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion440 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha440 = Extract; -type ExcludeZulu440 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA440 { width: number; height: number; depth: number } -interface ShapeB440 { color: string; opacity: number; blend: string } -interface ShapeC440 { x: number; y: number; z: number; w: number } -interface ShapeD440 { label: string; title: string; summary: string } - -type Combined440 = ShapeA440 & ShapeB440 & ShapeC440 & ShapeD440; -type OptionalAll440 = { [K in keyof Combined440]?: Combined440[K] }; -type RequiredAll440 = { [K in keyof Combined440]-?: Combined440[K] }; -type ReadonlyAll440 = { readonly [K in keyof Combined440]: Combined440[K] }; -type NullableAll440 = { [K in keyof Combined440]: Combined440[K] | null }; +type EV_0440 = Val_0440; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString440 = T extends string ? true : false; -type IsNumber440 = T extends number ? true : false; -type TypeName440 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames440 = { - [K in keyof BigRecord440]: TypeName440; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb440 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource440 = "user" | "post" | "comment" | "tag" | "category"; -type Action440 = `${Verb440}_${Resource440}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise440 = T extends Promise ? UnwrapPromise440 : T; -type UnwrapArray440 = T extends (infer U)[] ? UnwrapArray440 : T; -type Head440 = T extends [infer H, ...infer _] ? H : never; -type Tail440 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation440 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation440>] - : never; +interface Registry_04_40 { + entities: Map; + validators: EV_0440; + paths: Set; + merged: DeepMerge_0440; +} -type SmallUnion440 = "a" | "b" | "c" | "d"; -type AllPerms440 = Permutation440; +type CK_0440 = `p04.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig440, - Flat440, - FR440, - BigUnion440, - ExtractAlpha440, - ExcludeZulu440, - OptionalAll440, - RequiredAll440, - ReadonlyAll440, - NullableAll440, - TypeNames440, - Action440, - AllPerms440, -}; +export type { Entity_04_40, Registry_04_40, CK_0440, EP_0440, EV_0440, DeepMerge_0440 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts index acc21bb6..41d0de0e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-41.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-41 (seed 441) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-41 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0441 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0441 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord441 { - a441: { x: number; y: string; z: boolean }; - b441: { p: string[]; q: Record }; - c441: { nested: { deep: { deeper: { deepest: string } } } }; - d441: number; - e441: string; - f441: boolean; - g441: null; - h441: undefined; - i441: bigint; - j441: symbol; +interface Entity_04_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_41 | null; children: Entity_04_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0441: number; y0441: string; z0441: boolean }; } -type PartialBig441 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten441 = T extends Array ? Flatten441 : T; -type Nested441 = number[][][][][][][][][][]; -type Flat441 = Flatten441; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly441 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly441 : T[K]; -}; -type DeepRequired441 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired441 : T[K]; +type Path_0441 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0441}` }[keyof T & string] : never; +type EP_0441 = Path_0441; + +type Val_0441 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0441 } + : T[K] extends object ? { t: 'o'; props: Val_0441 } + : { t: 'u' }; }; -type FR441 = DeepReadonly441>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion441 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha441 = Extract; -type ExcludeZulu441 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA441 { width: number; height: number; depth: number } -interface ShapeB441 { color: string; opacity: number; blend: string } -interface ShapeC441 { x: number; y: number; z: number; w: number } -interface ShapeD441 { label: string; title: string; summary: string } - -type Combined441 = ShapeA441 & ShapeB441 & ShapeC441 & ShapeD441; -type OptionalAll441 = { [K in keyof Combined441]?: Combined441[K] }; -type RequiredAll441 = { [K in keyof Combined441]-?: Combined441[K] }; -type ReadonlyAll441 = { readonly [K in keyof Combined441]: Combined441[K] }; -type NullableAll441 = { [K in keyof Combined441]: Combined441[K] | null }; +type EV_0441 = Val_0441; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString441 = T extends string ? true : false; -type IsNumber441 = T extends number ? true : false; -type TypeName441 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames441 = { - [K in keyof BigRecord441]: TypeName441; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb441 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource441 = "user" | "post" | "comment" | "tag" | "category"; -type Action441 = `${Verb441}_${Resource441}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise441 = T extends Promise ? UnwrapPromise441 : T; -type UnwrapArray441 = T extends (infer U)[] ? UnwrapArray441 : T; -type Head441 = T extends [infer H, ...infer _] ? H : never; -type Tail441 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation441 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation441>] - : never; +interface Registry_04_41 { + entities: Map; + validators: EV_0441; + paths: Set; + merged: DeepMerge_0441; +} -type SmallUnion441 = "a" | "b" | "c" | "d"; -type AllPerms441 = Permutation441; +type CK_0441 = `p04.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig441, - Flat441, - FR441, - BigUnion441, - ExtractAlpha441, - ExcludeZulu441, - OptionalAll441, - RequiredAll441, - ReadonlyAll441, - NullableAll441, - TypeNames441, - Action441, - AllPerms441, -}; +export type { Entity_04_41, Registry_04_41, CK_0441, EP_0441, EV_0441, DeepMerge_0441 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts index cdc90daf..c353368b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-42.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-42 (seed 442) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-42 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0442 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0442 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord442 { - a442: { x: number; y: string; z: boolean }; - b442: { p: string[]; q: Record }; - c442: { nested: { deep: { deeper: { deepest: string } } } }; - d442: number; - e442: string; - f442: boolean; - g442: null; - h442: undefined; - i442: bigint; - j442: symbol; +interface Entity_04_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_42 | null; children: Entity_04_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0442: number; y0442: string; z0442: boolean }; } -type PartialBig442 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten442 = T extends Array ? Flatten442 : T; -type Nested442 = number[][][][][][][][][][]; -type Flat442 = Flatten442; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly442 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly442 : T[K]; -}; -type DeepRequired442 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired442 : T[K]; +type Path_0442 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0442}` }[keyof T & string] : never; +type EP_0442 = Path_0442; + +type Val_0442 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0442 } + : T[K] extends object ? { t: 'o'; props: Val_0442 } + : { t: 'u' }; }; -type FR442 = DeepReadonly442>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion442 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha442 = Extract; -type ExcludeZulu442 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA442 { width: number; height: number; depth: number } -interface ShapeB442 { color: string; opacity: number; blend: string } -interface ShapeC442 { x: number; y: number; z: number; w: number } -interface ShapeD442 { label: string; title: string; summary: string } - -type Combined442 = ShapeA442 & ShapeB442 & ShapeC442 & ShapeD442; -type OptionalAll442 = { [K in keyof Combined442]?: Combined442[K] }; -type RequiredAll442 = { [K in keyof Combined442]-?: Combined442[K] }; -type ReadonlyAll442 = { readonly [K in keyof Combined442]: Combined442[K] }; -type NullableAll442 = { [K in keyof Combined442]: Combined442[K] | null }; +type EV_0442 = Val_0442; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString442 = T extends string ? true : false; -type IsNumber442 = T extends number ? true : false; -type TypeName442 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames442 = { - [K in keyof BigRecord442]: TypeName442; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb442 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource442 = "user" | "post" | "comment" | "tag" | "category"; -type Action442 = `${Verb442}_${Resource442}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise442 = T extends Promise ? UnwrapPromise442 : T; -type UnwrapArray442 = T extends (infer U)[] ? UnwrapArray442 : T; -type Head442 = T extends [infer H, ...infer _] ? H : never; -type Tail442 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation442 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation442>] - : never; +interface Registry_04_42 { + entities: Map; + validators: EV_0442; + paths: Set; + merged: DeepMerge_0442; +} -type SmallUnion442 = "a" | "b" | "c" | "d"; -type AllPerms442 = Permutation442; +type CK_0442 = `p04.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig442, - Flat442, - FR442, - BigUnion442, - ExtractAlpha442, - ExcludeZulu442, - OptionalAll442, - RequiredAll442, - ReadonlyAll442, - NullableAll442, - TypeNames442, - Action442, - AllPerms442, -}; +export type { Entity_04_42, Registry_04_42, CK_0442, EP_0442, EV_0442, DeepMerge_0442 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts index 91946b5e..6478c480 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-43.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-43 (seed 443) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-43 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0443 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0443 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord443 { - a443: { x: number; y: string; z: boolean }; - b443: { p: string[]; q: Record }; - c443: { nested: { deep: { deeper: { deepest: string } } } }; - d443: number; - e443: string; - f443: boolean; - g443: null; - h443: undefined; - i443: bigint; - j443: symbol; +interface Entity_04_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_43 | null; children: Entity_04_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0443: number; y0443: string; z0443: boolean }; } -type PartialBig443 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten443 = T extends Array ? Flatten443 : T; -type Nested443 = number[][][][][][][][][][]; -type Flat443 = Flatten443; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly443 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly443 : T[K]; -}; -type DeepRequired443 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired443 : T[K]; +type Path_0443 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0443}` }[keyof T & string] : never; +type EP_0443 = Path_0443; + +type Val_0443 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0443 } + : T[K] extends object ? { t: 'o'; props: Val_0443 } + : { t: 'u' }; }; -type FR443 = DeepReadonly443>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion443 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha443 = Extract; -type ExcludeZulu443 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA443 { width: number; height: number; depth: number } -interface ShapeB443 { color: string; opacity: number; blend: string } -interface ShapeC443 { x: number; y: number; z: number; w: number } -interface ShapeD443 { label: string; title: string; summary: string } - -type Combined443 = ShapeA443 & ShapeB443 & ShapeC443 & ShapeD443; -type OptionalAll443 = { [K in keyof Combined443]?: Combined443[K] }; -type RequiredAll443 = { [K in keyof Combined443]-?: Combined443[K] }; -type ReadonlyAll443 = { readonly [K in keyof Combined443]: Combined443[K] }; -type NullableAll443 = { [K in keyof Combined443]: Combined443[K] | null }; +type EV_0443 = Val_0443; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString443 = T extends string ? true : false; -type IsNumber443 = T extends number ? true : false; -type TypeName443 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames443 = { - [K in keyof BigRecord443]: TypeName443; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb443 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource443 = "user" | "post" | "comment" | "tag" | "category"; -type Action443 = `${Verb443}_${Resource443}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise443 = T extends Promise ? UnwrapPromise443 : T; -type UnwrapArray443 = T extends (infer U)[] ? UnwrapArray443 : T; -type Head443 = T extends [infer H, ...infer _] ? H : never; -type Tail443 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation443 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation443>] - : never; +interface Registry_04_43 { + entities: Map; + validators: EV_0443; + paths: Set; + merged: DeepMerge_0443; +} -type SmallUnion443 = "a" | "b" | "c" | "d"; -type AllPerms443 = Permutation443; +type CK_0443 = `p04.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig443, - Flat443, - FR443, - BigUnion443, - ExtractAlpha443, - ExcludeZulu443, - OptionalAll443, - RequiredAll443, - ReadonlyAll443, - NullableAll443, - TypeNames443, - Action443, - AllPerms443, -}; +export type { Entity_04_43, Registry_04_43, CK_0443, EP_0443, EV_0443, DeepMerge_0443 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts index 238fc8aa..cd6f058c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-44.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-44 (seed 444) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-44 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0444 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0444 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord444 { - a444: { x: number; y: string; z: boolean }; - b444: { p: string[]; q: Record }; - c444: { nested: { deep: { deeper: { deepest: string } } } }; - d444: number; - e444: string; - f444: boolean; - g444: null; - h444: undefined; - i444: bigint; - j444: symbol; +interface Entity_04_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_44 | null; children: Entity_04_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0444: number; y0444: string; z0444: boolean }; } -type PartialBig444 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten444 = T extends Array ? Flatten444 : T; -type Nested444 = number[][][][][][][][][][]; -type Flat444 = Flatten444; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly444 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly444 : T[K]; -}; -type DeepRequired444 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired444 : T[K]; +type Path_0444 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0444}` }[keyof T & string] : never; +type EP_0444 = Path_0444; + +type Val_0444 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0444 } + : T[K] extends object ? { t: 'o'; props: Val_0444 } + : { t: 'u' }; }; -type FR444 = DeepReadonly444>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion444 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha444 = Extract; -type ExcludeZulu444 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA444 { width: number; height: number; depth: number } -interface ShapeB444 { color: string; opacity: number; blend: string } -interface ShapeC444 { x: number; y: number; z: number; w: number } -interface ShapeD444 { label: string; title: string; summary: string } - -type Combined444 = ShapeA444 & ShapeB444 & ShapeC444 & ShapeD444; -type OptionalAll444 = { [K in keyof Combined444]?: Combined444[K] }; -type RequiredAll444 = { [K in keyof Combined444]-?: Combined444[K] }; -type ReadonlyAll444 = { readonly [K in keyof Combined444]: Combined444[K] }; -type NullableAll444 = { [K in keyof Combined444]: Combined444[K] | null }; +type EV_0444 = Val_0444; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString444 = T extends string ? true : false; -type IsNumber444 = T extends number ? true : false; -type TypeName444 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames444 = { - [K in keyof BigRecord444]: TypeName444; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb444 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource444 = "user" | "post" | "comment" | "tag" | "category"; -type Action444 = `${Verb444}_${Resource444}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise444 = T extends Promise ? UnwrapPromise444 : T; -type UnwrapArray444 = T extends (infer U)[] ? UnwrapArray444 : T; -type Head444 = T extends [infer H, ...infer _] ? H : never; -type Tail444 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation444 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation444>] - : never; +interface Registry_04_44 { + entities: Map; + validators: EV_0444; + paths: Set; + merged: DeepMerge_0444; +} -type SmallUnion444 = "a" | "b" | "c" | "d"; -type AllPerms444 = Permutation444; +type CK_0444 = `p04.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig444, - Flat444, - FR444, - BigUnion444, - ExtractAlpha444, - ExcludeZulu444, - OptionalAll444, - RequiredAll444, - ReadonlyAll444, - NullableAll444, - TypeNames444, - Action444, - AllPerms444, -}; +export type { Entity_04_44, Registry_04_44, CK_0444, EP_0444, EV_0444, DeepMerge_0444 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts index 9d54df44..9e238bb8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-45.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-45 (seed 445) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-45 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0445 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0445 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord445 { - a445: { x: number; y: string; z: boolean }; - b445: { p: string[]; q: Record }; - c445: { nested: { deep: { deeper: { deepest: string } } } }; - d445: number; - e445: string; - f445: boolean; - g445: null; - h445: undefined; - i445: bigint; - j445: symbol; +interface Entity_04_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_45 | null; children: Entity_04_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0445: number; y0445: string; z0445: boolean }; } -type PartialBig445 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten445 = T extends Array ? Flatten445 : T; -type Nested445 = number[][][][][][][][][][]; -type Flat445 = Flatten445; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly445 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly445 : T[K]; -}; -type DeepRequired445 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired445 : T[K]; +type Path_0445 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0445}` }[keyof T & string] : never; +type EP_0445 = Path_0445; + +type Val_0445 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0445 } + : T[K] extends object ? { t: 'o'; props: Val_0445 } + : { t: 'u' }; }; -type FR445 = DeepReadonly445>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion445 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha445 = Extract; -type ExcludeZulu445 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA445 { width: number; height: number; depth: number } -interface ShapeB445 { color: string; opacity: number; blend: string } -interface ShapeC445 { x: number; y: number; z: number; w: number } -interface ShapeD445 { label: string; title: string; summary: string } - -type Combined445 = ShapeA445 & ShapeB445 & ShapeC445 & ShapeD445; -type OptionalAll445 = { [K in keyof Combined445]?: Combined445[K] }; -type RequiredAll445 = { [K in keyof Combined445]-?: Combined445[K] }; -type ReadonlyAll445 = { readonly [K in keyof Combined445]: Combined445[K] }; -type NullableAll445 = { [K in keyof Combined445]: Combined445[K] | null }; +type EV_0445 = Val_0445; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString445 = T extends string ? true : false; -type IsNumber445 = T extends number ? true : false; -type TypeName445 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames445 = { - [K in keyof BigRecord445]: TypeName445; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb445 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource445 = "user" | "post" | "comment" | "tag" | "category"; -type Action445 = `${Verb445}_${Resource445}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise445 = T extends Promise ? UnwrapPromise445 : T; -type UnwrapArray445 = T extends (infer U)[] ? UnwrapArray445 : T; -type Head445 = T extends [infer H, ...infer _] ? H : never; -type Tail445 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation445 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation445>] - : never; +interface Registry_04_45 { + entities: Map; + validators: EV_0445; + paths: Set; + merged: DeepMerge_0445; +} -type SmallUnion445 = "a" | "b" | "c" | "d"; -type AllPerms445 = Permutation445; +type CK_0445 = `p04.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig445, - Flat445, - FR445, - BigUnion445, - ExtractAlpha445, - ExcludeZulu445, - OptionalAll445, - RequiredAll445, - ReadonlyAll445, - NullableAll445, - TypeNames445, - Action445, - AllPerms445, -}; +export type { Entity_04_45, Registry_04_45, CK_0445, EP_0445, EV_0445, DeepMerge_0445 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts index 62e74c46..88b8aae5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-46.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-46 (seed 446) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-46 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0446 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0446 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord446 { - a446: { x: number; y: string; z: boolean }; - b446: { p: string[]; q: Record }; - c446: { nested: { deep: { deeper: { deepest: string } } } }; - d446: number; - e446: string; - f446: boolean; - g446: null; - h446: undefined; - i446: bigint; - j446: symbol; +interface Entity_04_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_46 | null; children: Entity_04_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0446: number; y0446: string; z0446: boolean }; } -type PartialBig446 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten446 = T extends Array ? Flatten446 : T; -type Nested446 = number[][][][][][][][][][]; -type Flat446 = Flatten446; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly446 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly446 : T[K]; -}; -type DeepRequired446 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired446 : T[K]; +type Path_0446 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0446}` }[keyof T & string] : never; +type EP_0446 = Path_0446; + +type Val_0446 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0446 } + : T[K] extends object ? { t: 'o'; props: Val_0446 } + : { t: 'u' }; }; -type FR446 = DeepReadonly446>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion446 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha446 = Extract; -type ExcludeZulu446 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA446 { width: number; height: number; depth: number } -interface ShapeB446 { color: string; opacity: number; blend: string } -interface ShapeC446 { x: number; y: number; z: number; w: number } -interface ShapeD446 { label: string; title: string; summary: string } - -type Combined446 = ShapeA446 & ShapeB446 & ShapeC446 & ShapeD446; -type OptionalAll446 = { [K in keyof Combined446]?: Combined446[K] }; -type RequiredAll446 = { [K in keyof Combined446]-?: Combined446[K] }; -type ReadonlyAll446 = { readonly [K in keyof Combined446]: Combined446[K] }; -type NullableAll446 = { [K in keyof Combined446]: Combined446[K] | null }; +type EV_0446 = Val_0446; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString446 = T extends string ? true : false; -type IsNumber446 = T extends number ? true : false; -type TypeName446 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames446 = { - [K in keyof BigRecord446]: TypeName446; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb446 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource446 = "user" | "post" | "comment" | "tag" | "category"; -type Action446 = `${Verb446}_${Resource446}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise446 = T extends Promise ? UnwrapPromise446 : T; -type UnwrapArray446 = T extends (infer U)[] ? UnwrapArray446 : T; -type Head446 = T extends [infer H, ...infer _] ? H : never; -type Tail446 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation446 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation446>] - : never; +interface Registry_04_46 { + entities: Map; + validators: EV_0446; + paths: Set; + merged: DeepMerge_0446; +} -type SmallUnion446 = "a" | "b" | "c" | "d"; -type AllPerms446 = Permutation446; +type CK_0446 = `p04.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig446, - Flat446, - FR446, - BigUnion446, - ExtractAlpha446, - ExcludeZulu446, - OptionalAll446, - RequiredAll446, - ReadonlyAll446, - NullableAll446, - TypeNames446, - Action446, - AllPerms446, -}; +export type { Entity_04_46, Registry_04_46, CK_0446, EP_0446, EV_0446, DeepMerge_0446 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts index d53393c6..6918a573 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-47.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-47 (seed 447) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-47 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0447 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0447 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord447 { - a447: { x: number; y: string; z: boolean }; - b447: { p: string[]; q: Record }; - c447: { nested: { deep: { deeper: { deepest: string } } } }; - d447: number; - e447: string; - f447: boolean; - g447: null; - h447: undefined; - i447: bigint; - j447: symbol; +interface Entity_04_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_47 | null; children: Entity_04_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0447: number; y0447: string; z0447: boolean }; } -type PartialBig447 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten447 = T extends Array ? Flatten447 : T; -type Nested447 = number[][][][][][][][][][]; -type Flat447 = Flatten447; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly447 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly447 : T[K]; -}; -type DeepRequired447 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired447 : T[K]; +type Path_0447 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0447}` }[keyof T & string] : never; +type EP_0447 = Path_0447; + +type Val_0447 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0447 } + : T[K] extends object ? { t: 'o'; props: Val_0447 } + : { t: 'u' }; }; -type FR447 = DeepReadonly447>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion447 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha447 = Extract; -type ExcludeZulu447 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA447 { width: number; height: number; depth: number } -interface ShapeB447 { color: string; opacity: number; blend: string } -interface ShapeC447 { x: number; y: number; z: number; w: number } -interface ShapeD447 { label: string; title: string; summary: string } - -type Combined447 = ShapeA447 & ShapeB447 & ShapeC447 & ShapeD447; -type OptionalAll447 = { [K in keyof Combined447]?: Combined447[K] }; -type RequiredAll447 = { [K in keyof Combined447]-?: Combined447[K] }; -type ReadonlyAll447 = { readonly [K in keyof Combined447]: Combined447[K] }; -type NullableAll447 = { [K in keyof Combined447]: Combined447[K] | null }; +type EV_0447 = Val_0447; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString447 = T extends string ? true : false; -type IsNumber447 = T extends number ? true : false; -type TypeName447 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames447 = { - [K in keyof BigRecord447]: TypeName447; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb447 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource447 = "user" | "post" | "comment" | "tag" | "category"; -type Action447 = `${Verb447}_${Resource447}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise447 = T extends Promise ? UnwrapPromise447 : T; -type UnwrapArray447 = T extends (infer U)[] ? UnwrapArray447 : T; -type Head447 = T extends [infer H, ...infer _] ? H : never; -type Tail447 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation447 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation447>] - : never; +interface Registry_04_47 { + entities: Map; + validators: EV_0447; + paths: Set; + merged: DeepMerge_0447; +} -type SmallUnion447 = "a" | "b" | "c" | "d"; -type AllPerms447 = Permutation447; +type CK_0447 = `p04.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig447, - Flat447, - FR447, - BigUnion447, - ExtractAlpha447, - ExcludeZulu447, - OptionalAll447, - RequiredAll447, - ReadonlyAll447, - NullableAll447, - TypeNames447, - Action447, - AllPerms447, -}; +export type { Entity_04_47, Registry_04_47, CK_0447, EP_0447, EV_0447, DeepMerge_0447 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts index 004e0148..e610c4fc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-48.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-48 (seed 448) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-48 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0448 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0448 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord448 { - a448: { x: number; y: string; z: boolean }; - b448: { p: string[]; q: Record }; - c448: { nested: { deep: { deeper: { deepest: string } } } }; - d448: number; - e448: string; - f448: boolean; - g448: null; - h448: undefined; - i448: bigint; - j448: symbol; +interface Entity_04_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_48 | null; children: Entity_04_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0448: number; y0448: string; z0448: boolean }; } -type PartialBig448 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten448 = T extends Array ? Flatten448 : T; -type Nested448 = number[][][][][][][][][][]; -type Flat448 = Flatten448; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly448 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly448 : T[K]; -}; -type DeepRequired448 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired448 : T[K]; +type Path_0448 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0448}` }[keyof T & string] : never; +type EP_0448 = Path_0448; + +type Val_0448 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0448 } + : T[K] extends object ? { t: 'o'; props: Val_0448 } + : { t: 'u' }; }; -type FR448 = DeepReadonly448>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion448 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha448 = Extract; -type ExcludeZulu448 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA448 { width: number; height: number; depth: number } -interface ShapeB448 { color: string; opacity: number; blend: string } -interface ShapeC448 { x: number; y: number; z: number; w: number } -interface ShapeD448 { label: string; title: string; summary: string } - -type Combined448 = ShapeA448 & ShapeB448 & ShapeC448 & ShapeD448; -type OptionalAll448 = { [K in keyof Combined448]?: Combined448[K] }; -type RequiredAll448 = { [K in keyof Combined448]-?: Combined448[K] }; -type ReadonlyAll448 = { readonly [K in keyof Combined448]: Combined448[K] }; -type NullableAll448 = { [K in keyof Combined448]: Combined448[K] | null }; +type EV_0448 = Val_0448; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString448 = T extends string ? true : false; -type IsNumber448 = T extends number ? true : false; -type TypeName448 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames448 = { - [K in keyof BigRecord448]: TypeName448; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb448 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource448 = "user" | "post" | "comment" | "tag" | "category"; -type Action448 = `${Verb448}_${Resource448}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise448 = T extends Promise ? UnwrapPromise448 : T; -type UnwrapArray448 = T extends (infer U)[] ? UnwrapArray448 : T; -type Head448 = T extends [infer H, ...infer _] ? H : never; -type Tail448 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation448 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation448>] - : never; +interface Registry_04_48 { + entities: Map; + validators: EV_0448; + paths: Set; + merged: DeepMerge_0448; +} -type SmallUnion448 = "a" | "b" | "c" | "d"; -type AllPerms448 = Permutation448; +type CK_0448 = `p04.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig448, - Flat448, - FR448, - BigUnion448, - ExtractAlpha448, - ExcludeZulu448, - OptionalAll448, - RequiredAll448, - ReadonlyAll448, - NullableAll448, - TypeNames448, - Action448, - AllPerms448, -}; +export type { Entity_04_48, Registry_04_48, CK_0448, EP_0448, EV_0448, DeepMerge_0448 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts index 7a2f7941..e90c73fd 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-49.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-49 (seed 449) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-49 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0449 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0449 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord449 { - a449: { x: number; y: string; z: boolean }; - b449: { p: string[]; q: Record }; - c449: { nested: { deep: { deeper: { deepest: string } } } }; - d449: number; - e449: string; - f449: boolean; - g449: null; - h449: undefined; - i449: bigint; - j449: symbol; +interface Entity_04_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_49 | null; children: Entity_04_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0449: number; y0449: string; z0449: boolean }; } -type PartialBig449 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten449 = T extends Array ? Flatten449 : T; -type Nested449 = number[][][][][][][][][][]; -type Flat449 = Flatten449; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly449 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly449 : T[K]; -}; -type DeepRequired449 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired449 : T[K]; +type Path_0449 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0449}` }[keyof T & string] : never; +type EP_0449 = Path_0449; + +type Val_0449 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0449 } + : T[K] extends object ? { t: 'o'; props: Val_0449 } + : { t: 'u' }; }; -type FR449 = DeepReadonly449>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion449 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha449 = Extract; -type ExcludeZulu449 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA449 { width: number; height: number; depth: number } -interface ShapeB449 { color: string; opacity: number; blend: string } -interface ShapeC449 { x: number; y: number; z: number; w: number } -interface ShapeD449 { label: string; title: string; summary: string } - -type Combined449 = ShapeA449 & ShapeB449 & ShapeC449 & ShapeD449; -type OptionalAll449 = { [K in keyof Combined449]?: Combined449[K] }; -type RequiredAll449 = { [K in keyof Combined449]-?: Combined449[K] }; -type ReadonlyAll449 = { readonly [K in keyof Combined449]: Combined449[K] }; -type NullableAll449 = { [K in keyof Combined449]: Combined449[K] | null }; +type EV_0449 = Val_0449; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString449 = T extends string ? true : false; -type IsNumber449 = T extends number ? true : false; -type TypeName449 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames449 = { - [K in keyof BigRecord449]: TypeName449; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb449 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource449 = "user" | "post" | "comment" | "tag" | "category"; -type Action449 = `${Verb449}_${Resource449}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise449 = T extends Promise ? UnwrapPromise449 : T; -type UnwrapArray449 = T extends (infer U)[] ? UnwrapArray449 : T; -type Head449 = T extends [infer H, ...infer _] ? H : never; -type Tail449 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation449 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation449>] - : never; +interface Registry_04_49 { + entities: Map; + validators: EV_0449; + paths: Set; + merged: DeepMerge_0449; +} -type SmallUnion449 = "a" | "b" | "c" | "d"; -type AllPerms449 = Permutation449; +type CK_0449 = `p04.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig449, - Flat449, - FR449, - BigUnion449, - ExtractAlpha449, - ExcludeZulu449, - OptionalAll449, - RequiredAll449, - ReadonlyAll449, - NullableAll449, - TypeNames449, - Action449, - AllPerms449, -}; +export type { Entity_04_49, Registry_04_49, CK_0449, EP_0449, EV_0449, DeepMerge_0449 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts index 7367e9e3..d144afcd 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-04/types-50.ts @@ -1,125 +1,50 @@ -// pkg-04 / types-50 (seed 450) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-04/types-50 - heavy interconnected types + +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; +import type { Entity_1_01, Registry_1_01 } from '../pkg-01/types-01'; +import type { Entity_1_10, Registry_1_10 } from '../pkg-01/types-10'; +import type { Entity_1_20, Registry_1_20 } from '../pkg-01/types-20'; + +type DeepMerge_0450 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0450 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord450 { - a450: { x: number; y: string; z: boolean }; - b450: { p: string[]; q: Record }; - c450: { nested: { deep: { deeper: { deepest: string } } } }; - d450: number; - e450: string; - f450: boolean; - g450: null; - h450: undefined; - i450: bigint; - j450: symbol; +interface Entity_04_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_04_50 | null; children: Entity_04_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0450: number; y0450: string; z0450: boolean }; } -type PartialBig450 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten450 = T extends Array ? Flatten450 : T; -type Nested450 = number[][][][][][][][][][]; -type Flat450 = Flatten450; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly450 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly450 : T[K]; -}; -type DeepRequired450 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired450 : T[K]; +type Path_0450 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0450}` }[keyof T & string] : never; +type EP_0450 = Path_0450; + +type Val_0450 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0450 } + : T[K] extends object ? { t: 'o'; props: Val_0450 } + : { t: 'u' }; }; -type FR450 = DeepReadonly450>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion450 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha450 = Extract; -type ExcludeZulu450 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA450 { width: number; height: number; depth: number } -interface ShapeB450 { color: string; opacity: number; blend: string } -interface ShapeC450 { x: number; y: number; z: number; w: number } -interface ShapeD450 { label: string; title: string; summary: string } - -type Combined450 = ShapeA450 & ShapeB450 & ShapeC450 & ShapeD450; -type OptionalAll450 = { [K in keyof Combined450]?: Combined450[K] }; -type RequiredAll450 = { [K in keyof Combined450]-?: Combined450[K] }; -type ReadonlyAll450 = { readonly [K in keyof Combined450]: Combined450[K] }; -type NullableAll450 = { [K in keyof Combined450]: Combined450[K] | null }; +type EV_0450 = Val_0450; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString450 = T extends string ? true : false; -type IsNumber450 = T extends number ? true : false; -type TypeName450 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames450 = { - [K in keyof BigRecord450]: TypeName450; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb450 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource450 = "user" | "post" | "comment" | "tag" | "category"; -type Action450 = `${Verb450}_${Resource450}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise450 = T extends Promise ? UnwrapPromise450 : T; -type UnwrapArray450 = T extends (infer U)[] ? UnwrapArray450 : T; -type Head450 = T extends [infer H, ...infer _] ? H : never; -type Tail450 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation450 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation450>] - : never; +interface Registry_04_50 { + entities: Map; + validators: EV_0450; + paths: Set; + merged: DeepMerge_0450; +} -type SmallUnion450 = "a" | "b" | "c" | "d"; -type AllPerms450 = Permutation450; +type CK_0450 = `p04.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig450, - Flat450, - FR450, - BigUnion450, - ExtractAlpha450, - ExcludeZulu450, - OptionalAll450, - RequiredAll450, - ReadonlyAll450, - NullableAll450, - TypeNames450, - Action450, - AllPerms450, -}; +export type { Entity_04_50, Registry_04_50, CK_0450, EP_0450, EV_0450, DeepMerge_0450 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts index 4cb0bf5d..13990227 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-01.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-01 (seed 501) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-01 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0501 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0501 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord501 { - a501: { x: number; y: string; z: boolean }; - b501: { p: string[]; q: Record }; - c501: { nested: { deep: { deeper: { deepest: string } } } }; - d501: number; - e501: string; - f501: boolean; - g501: null; - h501: undefined; - i501: bigint; - j501: symbol; +interface Entity_05_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_01 | null; children: Entity_05_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0501: number; y0501: string; z0501: boolean }; } -type PartialBig501 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten501 = T extends Array ? Flatten501 : T; -type Nested501 = number[][][][][][][][][][]; -type Flat501 = Flatten501; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly501 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly501 : T[K]; -}; -type DeepRequired501 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired501 : T[K]; +type Path_0501 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0501}` }[keyof T & string] : never; +type EP_0501 = Path_0501; + +type Val_0501 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0501 } + : T[K] extends object ? { t: 'o'; props: Val_0501 } + : { t: 'u' }; }; -type FR501 = DeepReadonly501>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion501 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha501 = Extract; -type ExcludeZulu501 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA501 { width: number; height: number; depth: number } -interface ShapeB501 { color: string; opacity: number; blend: string } -interface ShapeC501 { x: number; y: number; z: number; w: number } -interface ShapeD501 { label: string; title: string; summary: string } - -type Combined501 = ShapeA501 & ShapeB501 & ShapeC501 & ShapeD501; -type OptionalAll501 = { [K in keyof Combined501]?: Combined501[K] }; -type RequiredAll501 = { [K in keyof Combined501]-?: Combined501[K] }; -type ReadonlyAll501 = { readonly [K in keyof Combined501]: Combined501[K] }; -type NullableAll501 = { [K in keyof Combined501]: Combined501[K] | null }; +type EV_0501 = Val_0501; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString501 = T extends string ? true : false; -type IsNumber501 = T extends number ? true : false; -type TypeName501 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames501 = { - [K in keyof BigRecord501]: TypeName501; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb501 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource501 = "user" | "post" | "comment" | "tag" | "category"; -type Action501 = `${Verb501}_${Resource501}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise501 = T extends Promise ? UnwrapPromise501 : T; -type UnwrapArray501 = T extends (infer U)[] ? UnwrapArray501 : T; -type Head501 = T extends [infer H, ...infer _] ? H : never; -type Tail501 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation501 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation501>] - : never; +interface Registry_05_01 { + entities: Map; + validators: EV_0501; + paths: Set; + merged: DeepMerge_0501; +} -type SmallUnion501 = "a" | "b" | "c" | "d"; -type AllPerms501 = Permutation501; +type CK_0501 = `p05.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig501, - Flat501, - FR501, - BigUnion501, - ExtractAlpha501, - ExcludeZulu501, - OptionalAll501, - RequiredAll501, - ReadonlyAll501, - NullableAll501, - TypeNames501, - Action501, - AllPerms501, -}; +export type { Entity_05_01, Registry_05_01, CK_0501, EP_0501, EV_0501, DeepMerge_0501 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts index fec7c795..67f147f1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-02.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-02 (seed 502) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-02 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0502 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0502 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord502 { - a502: { x: number; y: string; z: boolean }; - b502: { p: string[]; q: Record }; - c502: { nested: { deep: { deeper: { deepest: string } } } }; - d502: number; - e502: string; - f502: boolean; - g502: null; - h502: undefined; - i502: bigint; - j502: symbol; +interface Entity_05_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_02 | null; children: Entity_05_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0502: number; y0502: string; z0502: boolean }; } -type PartialBig502 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten502 = T extends Array ? Flatten502 : T; -type Nested502 = number[][][][][][][][][][]; -type Flat502 = Flatten502; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly502 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly502 : T[K]; -}; -type DeepRequired502 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired502 : T[K]; +type Path_0502 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0502}` }[keyof T & string] : never; +type EP_0502 = Path_0502; + +type Val_0502 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0502 } + : T[K] extends object ? { t: 'o'; props: Val_0502 } + : { t: 'u' }; }; -type FR502 = DeepReadonly502>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion502 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha502 = Extract; -type ExcludeZulu502 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA502 { width: number; height: number; depth: number } -interface ShapeB502 { color: string; opacity: number; blend: string } -interface ShapeC502 { x: number; y: number; z: number; w: number } -interface ShapeD502 { label: string; title: string; summary: string } - -type Combined502 = ShapeA502 & ShapeB502 & ShapeC502 & ShapeD502; -type OptionalAll502 = { [K in keyof Combined502]?: Combined502[K] }; -type RequiredAll502 = { [K in keyof Combined502]-?: Combined502[K] }; -type ReadonlyAll502 = { readonly [K in keyof Combined502]: Combined502[K] }; -type NullableAll502 = { [K in keyof Combined502]: Combined502[K] | null }; +type EV_0502 = Val_0502; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString502 = T extends string ? true : false; -type IsNumber502 = T extends number ? true : false; -type TypeName502 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames502 = { - [K in keyof BigRecord502]: TypeName502; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb502 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource502 = "user" | "post" | "comment" | "tag" | "category"; -type Action502 = `${Verb502}_${Resource502}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise502 = T extends Promise ? UnwrapPromise502 : T; -type UnwrapArray502 = T extends (infer U)[] ? UnwrapArray502 : T; -type Head502 = T extends [infer H, ...infer _] ? H : never; -type Tail502 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation502 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation502>] - : never; +interface Registry_05_02 { + entities: Map; + validators: EV_0502; + paths: Set; + merged: DeepMerge_0502; +} -type SmallUnion502 = "a" | "b" | "c" | "d"; -type AllPerms502 = Permutation502; +type CK_0502 = `p05.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig502, - Flat502, - FR502, - BigUnion502, - ExtractAlpha502, - ExcludeZulu502, - OptionalAll502, - RequiredAll502, - ReadonlyAll502, - NullableAll502, - TypeNames502, - Action502, - AllPerms502, -}; +export type { Entity_05_02, Registry_05_02, CK_0502, EP_0502, EV_0502, DeepMerge_0502 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts index 9a771859..b6d7fbc0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-03.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-03 (seed 503) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-03 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0503 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0503 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord503 { - a503: { x: number; y: string; z: boolean }; - b503: { p: string[]; q: Record }; - c503: { nested: { deep: { deeper: { deepest: string } } } }; - d503: number; - e503: string; - f503: boolean; - g503: null; - h503: undefined; - i503: bigint; - j503: symbol; +interface Entity_05_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_03 | null; children: Entity_05_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0503: number; y0503: string; z0503: boolean }; } -type PartialBig503 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten503 = T extends Array ? Flatten503 : T; -type Nested503 = number[][][][][][][][][][]; -type Flat503 = Flatten503; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly503 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly503 : T[K]; -}; -type DeepRequired503 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired503 : T[K]; +type Path_0503 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0503}` }[keyof T & string] : never; +type EP_0503 = Path_0503; + +type Val_0503 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0503 } + : T[K] extends object ? { t: 'o'; props: Val_0503 } + : { t: 'u' }; }; -type FR503 = DeepReadonly503>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion503 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha503 = Extract; -type ExcludeZulu503 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA503 { width: number; height: number; depth: number } -interface ShapeB503 { color: string; opacity: number; blend: string } -interface ShapeC503 { x: number; y: number; z: number; w: number } -interface ShapeD503 { label: string; title: string; summary: string } - -type Combined503 = ShapeA503 & ShapeB503 & ShapeC503 & ShapeD503; -type OptionalAll503 = { [K in keyof Combined503]?: Combined503[K] }; -type RequiredAll503 = { [K in keyof Combined503]-?: Combined503[K] }; -type ReadonlyAll503 = { readonly [K in keyof Combined503]: Combined503[K] }; -type NullableAll503 = { [K in keyof Combined503]: Combined503[K] | null }; +type EV_0503 = Val_0503; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString503 = T extends string ? true : false; -type IsNumber503 = T extends number ? true : false; -type TypeName503 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames503 = { - [K in keyof BigRecord503]: TypeName503; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb503 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource503 = "user" | "post" | "comment" | "tag" | "category"; -type Action503 = `${Verb503}_${Resource503}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise503 = T extends Promise ? UnwrapPromise503 : T; -type UnwrapArray503 = T extends (infer U)[] ? UnwrapArray503 : T; -type Head503 = T extends [infer H, ...infer _] ? H : never; -type Tail503 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation503 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation503>] - : never; +interface Registry_05_03 { + entities: Map; + validators: EV_0503; + paths: Set; + merged: DeepMerge_0503; +} -type SmallUnion503 = "a" | "b" | "c" | "d"; -type AllPerms503 = Permutation503; +type CK_0503 = `p05.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig503, - Flat503, - FR503, - BigUnion503, - ExtractAlpha503, - ExcludeZulu503, - OptionalAll503, - RequiredAll503, - ReadonlyAll503, - NullableAll503, - TypeNames503, - Action503, - AllPerms503, -}; +export type { Entity_05_03, Registry_05_03, CK_0503, EP_0503, EV_0503, DeepMerge_0503 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts index 834f891d..3de531b6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-04.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-04 (seed 504) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-04 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0504 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0504 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord504 { - a504: { x: number; y: string; z: boolean }; - b504: { p: string[]; q: Record }; - c504: { nested: { deep: { deeper: { deepest: string } } } }; - d504: number; - e504: string; - f504: boolean; - g504: null; - h504: undefined; - i504: bigint; - j504: symbol; +interface Entity_05_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_04 | null; children: Entity_05_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0504: number; y0504: string; z0504: boolean }; } -type PartialBig504 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten504 = T extends Array ? Flatten504 : T; -type Nested504 = number[][][][][][][][][][]; -type Flat504 = Flatten504; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly504 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly504 : T[K]; -}; -type DeepRequired504 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired504 : T[K]; +type Path_0504 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0504}` }[keyof T & string] : never; +type EP_0504 = Path_0504; + +type Val_0504 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0504 } + : T[K] extends object ? { t: 'o'; props: Val_0504 } + : { t: 'u' }; }; -type FR504 = DeepReadonly504>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion504 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha504 = Extract; -type ExcludeZulu504 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA504 { width: number; height: number; depth: number } -interface ShapeB504 { color: string; opacity: number; blend: string } -interface ShapeC504 { x: number; y: number; z: number; w: number } -interface ShapeD504 { label: string; title: string; summary: string } - -type Combined504 = ShapeA504 & ShapeB504 & ShapeC504 & ShapeD504; -type OptionalAll504 = { [K in keyof Combined504]?: Combined504[K] }; -type RequiredAll504 = { [K in keyof Combined504]-?: Combined504[K] }; -type ReadonlyAll504 = { readonly [K in keyof Combined504]: Combined504[K] }; -type NullableAll504 = { [K in keyof Combined504]: Combined504[K] | null }; +type EV_0504 = Val_0504; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString504 = T extends string ? true : false; -type IsNumber504 = T extends number ? true : false; -type TypeName504 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames504 = { - [K in keyof BigRecord504]: TypeName504; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb504 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource504 = "user" | "post" | "comment" | "tag" | "category"; -type Action504 = `${Verb504}_${Resource504}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise504 = T extends Promise ? UnwrapPromise504 : T; -type UnwrapArray504 = T extends (infer U)[] ? UnwrapArray504 : T; -type Head504 = T extends [infer H, ...infer _] ? H : never; -type Tail504 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation504 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation504>] - : never; +interface Registry_05_04 { + entities: Map; + validators: EV_0504; + paths: Set; + merged: DeepMerge_0504; +} -type SmallUnion504 = "a" | "b" | "c" | "d"; -type AllPerms504 = Permutation504; +type CK_0504 = `p05.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig504, - Flat504, - FR504, - BigUnion504, - ExtractAlpha504, - ExcludeZulu504, - OptionalAll504, - RequiredAll504, - ReadonlyAll504, - NullableAll504, - TypeNames504, - Action504, - AllPerms504, -}; +export type { Entity_05_04, Registry_05_04, CK_0504, EP_0504, EV_0504, DeepMerge_0504 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts index 350ba118..993ae58e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-05.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-05 (seed 505) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-05 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0505 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0505 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord505 { - a505: { x: number; y: string; z: boolean }; - b505: { p: string[]; q: Record }; - c505: { nested: { deep: { deeper: { deepest: string } } } }; - d505: number; - e505: string; - f505: boolean; - g505: null; - h505: undefined; - i505: bigint; - j505: symbol; +interface Entity_05_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_05 | null; children: Entity_05_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0505: number; y0505: string; z0505: boolean }; } -type PartialBig505 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten505 = T extends Array ? Flatten505 : T; -type Nested505 = number[][][][][][][][][][]; -type Flat505 = Flatten505; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly505 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly505 : T[K]; -}; -type DeepRequired505 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired505 : T[K]; +type Path_0505 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0505}` }[keyof T & string] : never; +type EP_0505 = Path_0505; + +type Val_0505 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0505 } + : T[K] extends object ? { t: 'o'; props: Val_0505 } + : { t: 'u' }; }; -type FR505 = DeepReadonly505>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion505 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha505 = Extract; -type ExcludeZulu505 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA505 { width: number; height: number; depth: number } -interface ShapeB505 { color: string; opacity: number; blend: string } -interface ShapeC505 { x: number; y: number; z: number; w: number } -interface ShapeD505 { label: string; title: string; summary: string } - -type Combined505 = ShapeA505 & ShapeB505 & ShapeC505 & ShapeD505; -type OptionalAll505 = { [K in keyof Combined505]?: Combined505[K] }; -type RequiredAll505 = { [K in keyof Combined505]-?: Combined505[K] }; -type ReadonlyAll505 = { readonly [K in keyof Combined505]: Combined505[K] }; -type NullableAll505 = { [K in keyof Combined505]: Combined505[K] | null }; +type EV_0505 = Val_0505; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString505 = T extends string ? true : false; -type IsNumber505 = T extends number ? true : false; -type TypeName505 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames505 = { - [K in keyof BigRecord505]: TypeName505; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb505 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource505 = "user" | "post" | "comment" | "tag" | "category"; -type Action505 = `${Verb505}_${Resource505}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise505 = T extends Promise ? UnwrapPromise505 : T; -type UnwrapArray505 = T extends (infer U)[] ? UnwrapArray505 : T; -type Head505 = T extends [infer H, ...infer _] ? H : never; -type Tail505 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation505 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation505>] - : never; +interface Registry_05_05 { + entities: Map; + validators: EV_0505; + paths: Set; + merged: DeepMerge_0505; +} -type SmallUnion505 = "a" | "b" | "c" | "d"; -type AllPerms505 = Permutation505; +type CK_0505 = `p05.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig505, - Flat505, - FR505, - BigUnion505, - ExtractAlpha505, - ExcludeZulu505, - OptionalAll505, - RequiredAll505, - ReadonlyAll505, - NullableAll505, - TypeNames505, - Action505, - AllPerms505, -}; +export type { Entity_05_05, Registry_05_05, CK_0505, EP_0505, EV_0505, DeepMerge_0505 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts index 722c3efe..7d62889b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-06.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-06 (seed 506) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-06 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0506 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0506 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord506 { - a506: { x: number; y: string; z: boolean }; - b506: { p: string[]; q: Record }; - c506: { nested: { deep: { deeper: { deepest: string } } } }; - d506: number; - e506: string; - f506: boolean; - g506: null; - h506: undefined; - i506: bigint; - j506: symbol; +interface Entity_05_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_06 | null; children: Entity_05_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0506: number; y0506: string; z0506: boolean }; } -type PartialBig506 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten506 = T extends Array ? Flatten506 : T; -type Nested506 = number[][][][][][][][][][]; -type Flat506 = Flatten506; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly506 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly506 : T[K]; -}; -type DeepRequired506 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired506 : T[K]; +type Path_0506 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0506}` }[keyof T & string] : never; +type EP_0506 = Path_0506; + +type Val_0506 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0506 } + : T[K] extends object ? { t: 'o'; props: Val_0506 } + : { t: 'u' }; }; -type FR506 = DeepReadonly506>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion506 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha506 = Extract; -type ExcludeZulu506 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA506 { width: number; height: number; depth: number } -interface ShapeB506 { color: string; opacity: number; blend: string } -interface ShapeC506 { x: number; y: number; z: number; w: number } -interface ShapeD506 { label: string; title: string; summary: string } - -type Combined506 = ShapeA506 & ShapeB506 & ShapeC506 & ShapeD506; -type OptionalAll506 = { [K in keyof Combined506]?: Combined506[K] }; -type RequiredAll506 = { [K in keyof Combined506]-?: Combined506[K] }; -type ReadonlyAll506 = { readonly [K in keyof Combined506]: Combined506[K] }; -type NullableAll506 = { [K in keyof Combined506]: Combined506[K] | null }; +type EV_0506 = Val_0506; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString506 = T extends string ? true : false; -type IsNumber506 = T extends number ? true : false; -type TypeName506 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames506 = { - [K in keyof BigRecord506]: TypeName506; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb506 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource506 = "user" | "post" | "comment" | "tag" | "category"; -type Action506 = `${Verb506}_${Resource506}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise506 = T extends Promise ? UnwrapPromise506 : T; -type UnwrapArray506 = T extends (infer U)[] ? UnwrapArray506 : T; -type Head506 = T extends [infer H, ...infer _] ? H : never; -type Tail506 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation506 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation506>] - : never; +interface Registry_05_06 { + entities: Map; + validators: EV_0506; + paths: Set; + merged: DeepMerge_0506; +} -type SmallUnion506 = "a" | "b" | "c" | "d"; -type AllPerms506 = Permutation506; +type CK_0506 = `p05.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig506, - Flat506, - FR506, - BigUnion506, - ExtractAlpha506, - ExcludeZulu506, - OptionalAll506, - RequiredAll506, - ReadonlyAll506, - NullableAll506, - TypeNames506, - Action506, - AllPerms506, -}; +export type { Entity_05_06, Registry_05_06, CK_0506, EP_0506, EV_0506, DeepMerge_0506 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts index eb04f033..551a5c1b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-07.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-07 (seed 507) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-07 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0507 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0507 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord507 { - a507: { x: number; y: string; z: boolean }; - b507: { p: string[]; q: Record }; - c507: { nested: { deep: { deeper: { deepest: string } } } }; - d507: number; - e507: string; - f507: boolean; - g507: null; - h507: undefined; - i507: bigint; - j507: symbol; +interface Entity_05_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_07 | null; children: Entity_05_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0507: number; y0507: string; z0507: boolean }; } -type PartialBig507 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten507 = T extends Array ? Flatten507 : T; -type Nested507 = number[][][][][][][][][][]; -type Flat507 = Flatten507; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly507 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly507 : T[K]; -}; -type DeepRequired507 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired507 : T[K]; +type Path_0507 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0507}` }[keyof T & string] : never; +type EP_0507 = Path_0507; + +type Val_0507 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0507 } + : T[K] extends object ? { t: 'o'; props: Val_0507 } + : { t: 'u' }; }; -type FR507 = DeepReadonly507>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion507 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha507 = Extract; -type ExcludeZulu507 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA507 { width: number; height: number; depth: number } -interface ShapeB507 { color: string; opacity: number; blend: string } -interface ShapeC507 { x: number; y: number; z: number; w: number } -interface ShapeD507 { label: string; title: string; summary: string } - -type Combined507 = ShapeA507 & ShapeB507 & ShapeC507 & ShapeD507; -type OptionalAll507 = { [K in keyof Combined507]?: Combined507[K] }; -type RequiredAll507 = { [K in keyof Combined507]-?: Combined507[K] }; -type ReadonlyAll507 = { readonly [K in keyof Combined507]: Combined507[K] }; -type NullableAll507 = { [K in keyof Combined507]: Combined507[K] | null }; +type EV_0507 = Val_0507; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString507 = T extends string ? true : false; -type IsNumber507 = T extends number ? true : false; -type TypeName507 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames507 = { - [K in keyof BigRecord507]: TypeName507; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb507 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource507 = "user" | "post" | "comment" | "tag" | "category"; -type Action507 = `${Verb507}_${Resource507}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise507 = T extends Promise ? UnwrapPromise507 : T; -type UnwrapArray507 = T extends (infer U)[] ? UnwrapArray507 : T; -type Head507 = T extends [infer H, ...infer _] ? H : never; -type Tail507 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation507 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation507>] - : never; +interface Registry_05_07 { + entities: Map; + validators: EV_0507; + paths: Set; + merged: DeepMerge_0507; +} -type SmallUnion507 = "a" | "b" | "c" | "d"; -type AllPerms507 = Permutation507; +type CK_0507 = `p05.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig507, - Flat507, - FR507, - BigUnion507, - ExtractAlpha507, - ExcludeZulu507, - OptionalAll507, - RequiredAll507, - ReadonlyAll507, - NullableAll507, - TypeNames507, - Action507, - AllPerms507, -}; +export type { Entity_05_07, Registry_05_07, CK_0507, EP_0507, EV_0507, DeepMerge_0507 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts index 0703e976..a1f0c94c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-08.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-08 (seed 508) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-08 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0508 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0508 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord508 { - a508: { x: number; y: string; z: boolean }; - b508: { p: string[]; q: Record }; - c508: { nested: { deep: { deeper: { deepest: string } } } }; - d508: number; - e508: string; - f508: boolean; - g508: null; - h508: undefined; - i508: bigint; - j508: symbol; +interface Entity_05_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_08 | null; children: Entity_05_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0508: number; y0508: string; z0508: boolean }; } -type PartialBig508 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten508 = T extends Array ? Flatten508 : T; -type Nested508 = number[][][][][][][][][][]; -type Flat508 = Flatten508; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly508 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly508 : T[K]; -}; -type DeepRequired508 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired508 : T[K]; +type Path_0508 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0508}` }[keyof T & string] : never; +type EP_0508 = Path_0508; + +type Val_0508 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0508 } + : T[K] extends object ? { t: 'o'; props: Val_0508 } + : { t: 'u' }; }; -type FR508 = DeepReadonly508>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion508 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha508 = Extract; -type ExcludeZulu508 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA508 { width: number; height: number; depth: number } -interface ShapeB508 { color: string; opacity: number; blend: string } -interface ShapeC508 { x: number; y: number; z: number; w: number } -interface ShapeD508 { label: string; title: string; summary: string } - -type Combined508 = ShapeA508 & ShapeB508 & ShapeC508 & ShapeD508; -type OptionalAll508 = { [K in keyof Combined508]?: Combined508[K] }; -type RequiredAll508 = { [K in keyof Combined508]-?: Combined508[K] }; -type ReadonlyAll508 = { readonly [K in keyof Combined508]: Combined508[K] }; -type NullableAll508 = { [K in keyof Combined508]: Combined508[K] | null }; +type EV_0508 = Val_0508; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString508 = T extends string ? true : false; -type IsNumber508 = T extends number ? true : false; -type TypeName508 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames508 = { - [K in keyof BigRecord508]: TypeName508; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb508 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource508 = "user" | "post" | "comment" | "tag" | "category"; -type Action508 = `${Verb508}_${Resource508}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise508 = T extends Promise ? UnwrapPromise508 : T; -type UnwrapArray508 = T extends (infer U)[] ? UnwrapArray508 : T; -type Head508 = T extends [infer H, ...infer _] ? H : never; -type Tail508 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation508 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation508>] - : never; +interface Registry_05_08 { + entities: Map; + validators: EV_0508; + paths: Set; + merged: DeepMerge_0508; +} -type SmallUnion508 = "a" | "b" | "c" | "d"; -type AllPerms508 = Permutation508; +type CK_0508 = `p05.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig508, - Flat508, - FR508, - BigUnion508, - ExtractAlpha508, - ExcludeZulu508, - OptionalAll508, - RequiredAll508, - ReadonlyAll508, - NullableAll508, - TypeNames508, - Action508, - AllPerms508, -}; +export type { Entity_05_08, Registry_05_08, CK_0508, EP_0508, EV_0508, DeepMerge_0508 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts index c028ff6e..f15a2cf7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-09.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-09 (seed 509) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-09 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0509 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0509 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord509 { - a509: { x: number; y: string; z: boolean }; - b509: { p: string[]; q: Record }; - c509: { nested: { deep: { deeper: { deepest: string } } } }; - d509: number; - e509: string; - f509: boolean; - g509: null; - h509: undefined; - i509: bigint; - j509: symbol; +interface Entity_05_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_09 | null; children: Entity_05_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0509: number; y0509: string; z0509: boolean }; } -type PartialBig509 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten509 = T extends Array ? Flatten509 : T; -type Nested509 = number[][][][][][][][][][]; -type Flat509 = Flatten509; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly509 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly509 : T[K]; -}; -type DeepRequired509 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired509 : T[K]; +type Path_0509 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0509}` }[keyof T & string] : never; +type EP_0509 = Path_0509; + +type Val_0509 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0509 } + : T[K] extends object ? { t: 'o'; props: Val_0509 } + : { t: 'u' }; }; -type FR509 = DeepReadonly509>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion509 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha509 = Extract; -type ExcludeZulu509 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA509 { width: number; height: number; depth: number } -interface ShapeB509 { color: string; opacity: number; blend: string } -interface ShapeC509 { x: number; y: number; z: number; w: number } -interface ShapeD509 { label: string; title: string; summary: string } - -type Combined509 = ShapeA509 & ShapeB509 & ShapeC509 & ShapeD509; -type OptionalAll509 = { [K in keyof Combined509]?: Combined509[K] }; -type RequiredAll509 = { [K in keyof Combined509]-?: Combined509[K] }; -type ReadonlyAll509 = { readonly [K in keyof Combined509]: Combined509[K] }; -type NullableAll509 = { [K in keyof Combined509]: Combined509[K] | null }; +type EV_0509 = Val_0509; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString509 = T extends string ? true : false; -type IsNumber509 = T extends number ? true : false; -type TypeName509 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames509 = { - [K in keyof BigRecord509]: TypeName509; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb509 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource509 = "user" | "post" | "comment" | "tag" | "category"; -type Action509 = `${Verb509}_${Resource509}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise509 = T extends Promise ? UnwrapPromise509 : T; -type UnwrapArray509 = T extends (infer U)[] ? UnwrapArray509 : T; -type Head509 = T extends [infer H, ...infer _] ? H : never; -type Tail509 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation509 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation509>] - : never; +interface Registry_05_09 { + entities: Map; + validators: EV_0509; + paths: Set; + merged: DeepMerge_0509; +} -type SmallUnion509 = "a" | "b" | "c" | "d"; -type AllPerms509 = Permutation509; +type CK_0509 = `p05.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig509, - Flat509, - FR509, - BigUnion509, - ExtractAlpha509, - ExcludeZulu509, - OptionalAll509, - RequiredAll509, - ReadonlyAll509, - NullableAll509, - TypeNames509, - Action509, - AllPerms509, -}; +export type { Entity_05_09, Registry_05_09, CK_0509, EP_0509, EV_0509, DeepMerge_0509 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts index 957c8916..403f4ab4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-10.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-10 (seed 510) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-10 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0510 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0510 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord510 { - a510: { x: number; y: string; z: boolean }; - b510: { p: string[]; q: Record }; - c510: { nested: { deep: { deeper: { deepest: string } } } }; - d510: number; - e510: string; - f510: boolean; - g510: null; - h510: undefined; - i510: bigint; - j510: symbol; +interface Entity_05_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_10 | null; children: Entity_05_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0510: number; y0510: string; z0510: boolean }; } -type PartialBig510 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten510 = T extends Array ? Flatten510 : T; -type Nested510 = number[][][][][][][][][][]; -type Flat510 = Flatten510; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly510 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly510 : T[K]; -}; -type DeepRequired510 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired510 : T[K]; +type Path_0510 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0510}` }[keyof T & string] : never; +type EP_0510 = Path_0510; + +type Val_0510 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0510 } + : T[K] extends object ? { t: 'o'; props: Val_0510 } + : { t: 'u' }; }; -type FR510 = DeepReadonly510>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion510 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha510 = Extract; -type ExcludeZulu510 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA510 { width: number; height: number; depth: number } -interface ShapeB510 { color: string; opacity: number; blend: string } -interface ShapeC510 { x: number; y: number; z: number; w: number } -interface ShapeD510 { label: string; title: string; summary: string } - -type Combined510 = ShapeA510 & ShapeB510 & ShapeC510 & ShapeD510; -type OptionalAll510 = { [K in keyof Combined510]?: Combined510[K] }; -type RequiredAll510 = { [K in keyof Combined510]-?: Combined510[K] }; -type ReadonlyAll510 = { readonly [K in keyof Combined510]: Combined510[K] }; -type NullableAll510 = { [K in keyof Combined510]: Combined510[K] | null }; +type EV_0510 = Val_0510; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString510 = T extends string ? true : false; -type IsNumber510 = T extends number ? true : false; -type TypeName510 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames510 = { - [K in keyof BigRecord510]: TypeName510; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb510 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource510 = "user" | "post" | "comment" | "tag" | "category"; -type Action510 = `${Verb510}_${Resource510}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise510 = T extends Promise ? UnwrapPromise510 : T; -type UnwrapArray510 = T extends (infer U)[] ? UnwrapArray510 : T; -type Head510 = T extends [infer H, ...infer _] ? H : never; -type Tail510 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation510 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation510>] - : never; +interface Registry_05_10 { + entities: Map; + validators: EV_0510; + paths: Set; + merged: DeepMerge_0510; +} -type SmallUnion510 = "a" | "b" | "c" | "d"; -type AllPerms510 = Permutation510; +type CK_0510 = `p05.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig510, - Flat510, - FR510, - BigUnion510, - ExtractAlpha510, - ExcludeZulu510, - OptionalAll510, - RequiredAll510, - ReadonlyAll510, - NullableAll510, - TypeNames510, - Action510, - AllPerms510, -}; +export type { Entity_05_10, Registry_05_10, CK_0510, EP_0510, EV_0510, DeepMerge_0510 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts index b55d61d8..f3edc305 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-11.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-11 (seed 511) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-11 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0511 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0511 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord511 { - a511: { x: number; y: string; z: boolean }; - b511: { p: string[]; q: Record }; - c511: { nested: { deep: { deeper: { deepest: string } } } }; - d511: number; - e511: string; - f511: boolean; - g511: null; - h511: undefined; - i511: bigint; - j511: symbol; +interface Entity_05_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_11 | null; children: Entity_05_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0511: number; y0511: string; z0511: boolean }; } -type PartialBig511 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten511 = T extends Array ? Flatten511 : T; -type Nested511 = number[][][][][][][][][][]; -type Flat511 = Flatten511; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly511 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly511 : T[K]; -}; -type DeepRequired511 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired511 : T[K]; +type Path_0511 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0511}` }[keyof T & string] : never; +type EP_0511 = Path_0511; + +type Val_0511 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0511 } + : T[K] extends object ? { t: 'o'; props: Val_0511 } + : { t: 'u' }; }; -type FR511 = DeepReadonly511>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion511 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha511 = Extract; -type ExcludeZulu511 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA511 { width: number; height: number; depth: number } -interface ShapeB511 { color: string; opacity: number; blend: string } -interface ShapeC511 { x: number; y: number; z: number; w: number } -interface ShapeD511 { label: string; title: string; summary: string } - -type Combined511 = ShapeA511 & ShapeB511 & ShapeC511 & ShapeD511; -type OptionalAll511 = { [K in keyof Combined511]?: Combined511[K] }; -type RequiredAll511 = { [K in keyof Combined511]-?: Combined511[K] }; -type ReadonlyAll511 = { readonly [K in keyof Combined511]: Combined511[K] }; -type NullableAll511 = { [K in keyof Combined511]: Combined511[K] | null }; +type EV_0511 = Val_0511; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString511 = T extends string ? true : false; -type IsNumber511 = T extends number ? true : false; -type TypeName511 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames511 = { - [K in keyof BigRecord511]: TypeName511; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb511 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource511 = "user" | "post" | "comment" | "tag" | "category"; -type Action511 = `${Verb511}_${Resource511}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise511 = T extends Promise ? UnwrapPromise511 : T; -type UnwrapArray511 = T extends (infer U)[] ? UnwrapArray511 : T; -type Head511 = T extends [infer H, ...infer _] ? H : never; -type Tail511 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation511 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation511>] - : never; +interface Registry_05_11 { + entities: Map; + validators: EV_0511; + paths: Set; + merged: DeepMerge_0511; +} -type SmallUnion511 = "a" | "b" | "c" | "d"; -type AllPerms511 = Permutation511; +type CK_0511 = `p05.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig511, - Flat511, - FR511, - BigUnion511, - ExtractAlpha511, - ExcludeZulu511, - OptionalAll511, - RequiredAll511, - ReadonlyAll511, - NullableAll511, - TypeNames511, - Action511, - AllPerms511, -}; +export type { Entity_05_11, Registry_05_11, CK_0511, EP_0511, EV_0511, DeepMerge_0511 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts index 873a1085..06ecdfce 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-12.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-12 (seed 512) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-12 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0512 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0512 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord512 { - a512: { x: number; y: string; z: boolean }; - b512: { p: string[]; q: Record }; - c512: { nested: { deep: { deeper: { deepest: string } } } }; - d512: number; - e512: string; - f512: boolean; - g512: null; - h512: undefined; - i512: bigint; - j512: symbol; +interface Entity_05_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_12 | null; children: Entity_05_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0512: number; y0512: string; z0512: boolean }; } -type PartialBig512 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten512 = T extends Array ? Flatten512 : T; -type Nested512 = number[][][][][][][][][][]; -type Flat512 = Flatten512; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly512 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly512 : T[K]; -}; -type DeepRequired512 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired512 : T[K]; +type Path_0512 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0512}` }[keyof T & string] : never; +type EP_0512 = Path_0512; + +type Val_0512 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0512 } + : T[K] extends object ? { t: 'o'; props: Val_0512 } + : { t: 'u' }; }; -type FR512 = DeepReadonly512>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion512 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha512 = Extract; -type ExcludeZulu512 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA512 { width: number; height: number; depth: number } -interface ShapeB512 { color: string; opacity: number; blend: string } -interface ShapeC512 { x: number; y: number; z: number; w: number } -interface ShapeD512 { label: string; title: string; summary: string } - -type Combined512 = ShapeA512 & ShapeB512 & ShapeC512 & ShapeD512; -type OptionalAll512 = { [K in keyof Combined512]?: Combined512[K] }; -type RequiredAll512 = { [K in keyof Combined512]-?: Combined512[K] }; -type ReadonlyAll512 = { readonly [K in keyof Combined512]: Combined512[K] }; -type NullableAll512 = { [K in keyof Combined512]: Combined512[K] | null }; +type EV_0512 = Val_0512; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString512 = T extends string ? true : false; -type IsNumber512 = T extends number ? true : false; -type TypeName512 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames512 = { - [K in keyof BigRecord512]: TypeName512; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb512 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource512 = "user" | "post" | "comment" | "tag" | "category"; -type Action512 = `${Verb512}_${Resource512}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise512 = T extends Promise ? UnwrapPromise512 : T; -type UnwrapArray512 = T extends (infer U)[] ? UnwrapArray512 : T; -type Head512 = T extends [infer H, ...infer _] ? H : never; -type Tail512 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation512 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation512>] - : never; +interface Registry_05_12 { + entities: Map; + validators: EV_0512; + paths: Set; + merged: DeepMerge_0512; +} -type SmallUnion512 = "a" | "b" | "c" | "d"; -type AllPerms512 = Permutation512; +type CK_0512 = `p05.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig512, - Flat512, - FR512, - BigUnion512, - ExtractAlpha512, - ExcludeZulu512, - OptionalAll512, - RequiredAll512, - ReadonlyAll512, - NullableAll512, - TypeNames512, - Action512, - AllPerms512, -}; +export type { Entity_05_12, Registry_05_12, CK_0512, EP_0512, EV_0512, DeepMerge_0512 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts index e40df8c7..b2c06753 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-13.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-13 (seed 513) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-13 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0513 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0513 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord513 { - a513: { x: number; y: string; z: boolean }; - b513: { p: string[]; q: Record }; - c513: { nested: { deep: { deeper: { deepest: string } } } }; - d513: number; - e513: string; - f513: boolean; - g513: null; - h513: undefined; - i513: bigint; - j513: symbol; +interface Entity_05_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_13 | null; children: Entity_05_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0513: number; y0513: string; z0513: boolean }; } -type PartialBig513 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten513 = T extends Array ? Flatten513 : T; -type Nested513 = number[][][][][][][][][][]; -type Flat513 = Flatten513; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly513 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly513 : T[K]; -}; -type DeepRequired513 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired513 : T[K]; +type Path_0513 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0513}` }[keyof T & string] : never; +type EP_0513 = Path_0513; + +type Val_0513 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0513 } + : T[K] extends object ? { t: 'o'; props: Val_0513 } + : { t: 'u' }; }; -type FR513 = DeepReadonly513>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion513 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha513 = Extract; -type ExcludeZulu513 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA513 { width: number; height: number; depth: number } -interface ShapeB513 { color: string; opacity: number; blend: string } -interface ShapeC513 { x: number; y: number; z: number; w: number } -interface ShapeD513 { label: string; title: string; summary: string } - -type Combined513 = ShapeA513 & ShapeB513 & ShapeC513 & ShapeD513; -type OptionalAll513 = { [K in keyof Combined513]?: Combined513[K] }; -type RequiredAll513 = { [K in keyof Combined513]-?: Combined513[K] }; -type ReadonlyAll513 = { readonly [K in keyof Combined513]: Combined513[K] }; -type NullableAll513 = { [K in keyof Combined513]: Combined513[K] | null }; +type EV_0513 = Val_0513; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString513 = T extends string ? true : false; -type IsNumber513 = T extends number ? true : false; -type TypeName513 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames513 = { - [K in keyof BigRecord513]: TypeName513; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb513 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource513 = "user" | "post" | "comment" | "tag" | "category"; -type Action513 = `${Verb513}_${Resource513}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise513 = T extends Promise ? UnwrapPromise513 : T; -type UnwrapArray513 = T extends (infer U)[] ? UnwrapArray513 : T; -type Head513 = T extends [infer H, ...infer _] ? H : never; -type Tail513 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation513 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation513>] - : never; +interface Registry_05_13 { + entities: Map; + validators: EV_0513; + paths: Set; + merged: DeepMerge_0513; +} -type SmallUnion513 = "a" | "b" | "c" | "d"; -type AllPerms513 = Permutation513; +type CK_0513 = `p05.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig513, - Flat513, - FR513, - BigUnion513, - ExtractAlpha513, - ExcludeZulu513, - OptionalAll513, - RequiredAll513, - ReadonlyAll513, - NullableAll513, - TypeNames513, - Action513, - AllPerms513, -}; +export type { Entity_05_13, Registry_05_13, CK_0513, EP_0513, EV_0513, DeepMerge_0513 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts index 0f58bb94..8382a382 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-14.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-14 (seed 514) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-14 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0514 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0514 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord514 { - a514: { x: number; y: string; z: boolean }; - b514: { p: string[]; q: Record }; - c514: { nested: { deep: { deeper: { deepest: string } } } }; - d514: number; - e514: string; - f514: boolean; - g514: null; - h514: undefined; - i514: bigint; - j514: symbol; +interface Entity_05_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_14 | null; children: Entity_05_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0514: number; y0514: string; z0514: boolean }; } -type PartialBig514 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten514 = T extends Array ? Flatten514 : T; -type Nested514 = number[][][][][][][][][][]; -type Flat514 = Flatten514; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly514 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly514 : T[K]; -}; -type DeepRequired514 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired514 : T[K]; +type Path_0514 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0514}` }[keyof T & string] : never; +type EP_0514 = Path_0514; + +type Val_0514 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0514 } + : T[K] extends object ? { t: 'o'; props: Val_0514 } + : { t: 'u' }; }; -type FR514 = DeepReadonly514>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion514 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha514 = Extract; -type ExcludeZulu514 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA514 { width: number; height: number; depth: number } -interface ShapeB514 { color: string; opacity: number; blend: string } -interface ShapeC514 { x: number; y: number; z: number; w: number } -interface ShapeD514 { label: string; title: string; summary: string } - -type Combined514 = ShapeA514 & ShapeB514 & ShapeC514 & ShapeD514; -type OptionalAll514 = { [K in keyof Combined514]?: Combined514[K] }; -type RequiredAll514 = { [K in keyof Combined514]-?: Combined514[K] }; -type ReadonlyAll514 = { readonly [K in keyof Combined514]: Combined514[K] }; -type NullableAll514 = { [K in keyof Combined514]: Combined514[K] | null }; +type EV_0514 = Val_0514; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString514 = T extends string ? true : false; -type IsNumber514 = T extends number ? true : false; -type TypeName514 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames514 = { - [K in keyof BigRecord514]: TypeName514; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb514 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource514 = "user" | "post" | "comment" | "tag" | "category"; -type Action514 = `${Verb514}_${Resource514}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise514 = T extends Promise ? UnwrapPromise514 : T; -type UnwrapArray514 = T extends (infer U)[] ? UnwrapArray514 : T; -type Head514 = T extends [infer H, ...infer _] ? H : never; -type Tail514 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation514 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation514>] - : never; +interface Registry_05_14 { + entities: Map; + validators: EV_0514; + paths: Set; + merged: DeepMerge_0514; +} -type SmallUnion514 = "a" | "b" | "c" | "d"; -type AllPerms514 = Permutation514; +type CK_0514 = `p05.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig514, - Flat514, - FR514, - BigUnion514, - ExtractAlpha514, - ExcludeZulu514, - OptionalAll514, - RequiredAll514, - ReadonlyAll514, - NullableAll514, - TypeNames514, - Action514, - AllPerms514, -}; +export type { Entity_05_14, Registry_05_14, CK_0514, EP_0514, EV_0514, DeepMerge_0514 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts index 438539dd..2d130af7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-15.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-15 (seed 515) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-15 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0515 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0515 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord515 { - a515: { x: number; y: string; z: boolean }; - b515: { p: string[]; q: Record }; - c515: { nested: { deep: { deeper: { deepest: string } } } }; - d515: number; - e515: string; - f515: boolean; - g515: null; - h515: undefined; - i515: bigint; - j515: symbol; +interface Entity_05_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_15 | null; children: Entity_05_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0515: number; y0515: string; z0515: boolean }; } -type PartialBig515 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten515 = T extends Array ? Flatten515 : T; -type Nested515 = number[][][][][][][][][][]; -type Flat515 = Flatten515; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly515 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly515 : T[K]; -}; -type DeepRequired515 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired515 : T[K]; +type Path_0515 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0515}` }[keyof T & string] : never; +type EP_0515 = Path_0515; + +type Val_0515 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0515 } + : T[K] extends object ? { t: 'o'; props: Val_0515 } + : { t: 'u' }; }; -type FR515 = DeepReadonly515>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion515 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha515 = Extract; -type ExcludeZulu515 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA515 { width: number; height: number; depth: number } -interface ShapeB515 { color: string; opacity: number; blend: string } -interface ShapeC515 { x: number; y: number; z: number; w: number } -interface ShapeD515 { label: string; title: string; summary: string } - -type Combined515 = ShapeA515 & ShapeB515 & ShapeC515 & ShapeD515; -type OptionalAll515 = { [K in keyof Combined515]?: Combined515[K] }; -type RequiredAll515 = { [K in keyof Combined515]-?: Combined515[K] }; -type ReadonlyAll515 = { readonly [K in keyof Combined515]: Combined515[K] }; -type NullableAll515 = { [K in keyof Combined515]: Combined515[K] | null }; +type EV_0515 = Val_0515; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString515 = T extends string ? true : false; -type IsNumber515 = T extends number ? true : false; -type TypeName515 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames515 = { - [K in keyof BigRecord515]: TypeName515; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb515 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource515 = "user" | "post" | "comment" | "tag" | "category"; -type Action515 = `${Verb515}_${Resource515}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise515 = T extends Promise ? UnwrapPromise515 : T; -type UnwrapArray515 = T extends (infer U)[] ? UnwrapArray515 : T; -type Head515 = T extends [infer H, ...infer _] ? H : never; -type Tail515 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation515 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation515>] - : never; +interface Registry_05_15 { + entities: Map; + validators: EV_0515; + paths: Set; + merged: DeepMerge_0515; +} -type SmallUnion515 = "a" | "b" | "c" | "d"; -type AllPerms515 = Permutation515; +type CK_0515 = `p05.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig515, - Flat515, - FR515, - BigUnion515, - ExtractAlpha515, - ExcludeZulu515, - OptionalAll515, - RequiredAll515, - ReadonlyAll515, - NullableAll515, - TypeNames515, - Action515, - AllPerms515, -}; +export type { Entity_05_15, Registry_05_15, CK_0515, EP_0515, EV_0515, DeepMerge_0515 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts index 1950acc9..5aba278e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-16.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-16 (seed 516) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-16 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0516 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0516 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord516 { - a516: { x: number; y: string; z: boolean }; - b516: { p: string[]; q: Record }; - c516: { nested: { deep: { deeper: { deepest: string } } } }; - d516: number; - e516: string; - f516: boolean; - g516: null; - h516: undefined; - i516: bigint; - j516: symbol; +interface Entity_05_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_16 | null; children: Entity_05_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0516: number; y0516: string; z0516: boolean }; } -type PartialBig516 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten516 = T extends Array ? Flatten516 : T; -type Nested516 = number[][][][][][][][][][]; -type Flat516 = Flatten516; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly516 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly516 : T[K]; -}; -type DeepRequired516 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired516 : T[K]; +type Path_0516 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0516}` }[keyof T & string] : never; +type EP_0516 = Path_0516; + +type Val_0516 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0516 } + : T[K] extends object ? { t: 'o'; props: Val_0516 } + : { t: 'u' }; }; -type FR516 = DeepReadonly516>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion516 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha516 = Extract; -type ExcludeZulu516 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA516 { width: number; height: number; depth: number } -interface ShapeB516 { color: string; opacity: number; blend: string } -interface ShapeC516 { x: number; y: number; z: number; w: number } -interface ShapeD516 { label: string; title: string; summary: string } - -type Combined516 = ShapeA516 & ShapeB516 & ShapeC516 & ShapeD516; -type OptionalAll516 = { [K in keyof Combined516]?: Combined516[K] }; -type RequiredAll516 = { [K in keyof Combined516]-?: Combined516[K] }; -type ReadonlyAll516 = { readonly [K in keyof Combined516]: Combined516[K] }; -type NullableAll516 = { [K in keyof Combined516]: Combined516[K] | null }; +type EV_0516 = Val_0516; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString516 = T extends string ? true : false; -type IsNumber516 = T extends number ? true : false; -type TypeName516 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames516 = { - [K in keyof BigRecord516]: TypeName516; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb516 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource516 = "user" | "post" | "comment" | "tag" | "category"; -type Action516 = `${Verb516}_${Resource516}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise516 = T extends Promise ? UnwrapPromise516 : T; -type UnwrapArray516 = T extends (infer U)[] ? UnwrapArray516 : T; -type Head516 = T extends [infer H, ...infer _] ? H : never; -type Tail516 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation516 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation516>] - : never; +interface Registry_05_16 { + entities: Map; + validators: EV_0516; + paths: Set; + merged: DeepMerge_0516; +} -type SmallUnion516 = "a" | "b" | "c" | "d"; -type AllPerms516 = Permutation516; +type CK_0516 = `p05.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig516, - Flat516, - FR516, - BigUnion516, - ExtractAlpha516, - ExcludeZulu516, - OptionalAll516, - RequiredAll516, - ReadonlyAll516, - NullableAll516, - TypeNames516, - Action516, - AllPerms516, -}; +export type { Entity_05_16, Registry_05_16, CK_0516, EP_0516, EV_0516, DeepMerge_0516 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts index c10adda9..877527a3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-17.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-17 (seed 517) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-17 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0517 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0517 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord517 { - a517: { x: number; y: string; z: boolean }; - b517: { p: string[]; q: Record }; - c517: { nested: { deep: { deeper: { deepest: string } } } }; - d517: number; - e517: string; - f517: boolean; - g517: null; - h517: undefined; - i517: bigint; - j517: symbol; +interface Entity_05_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_17 | null; children: Entity_05_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0517: number; y0517: string; z0517: boolean }; } -type PartialBig517 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten517 = T extends Array ? Flatten517 : T; -type Nested517 = number[][][][][][][][][][]; -type Flat517 = Flatten517; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly517 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly517 : T[K]; -}; -type DeepRequired517 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired517 : T[K]; +type Path_0517 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0517}` }[keyof T & string] : never; +type EP_0517 = Path_0517; + +type Val_0517 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0517 } + : T[K] extends object ? { t: 'o'; props: Val_0517 } + : { t: 'u' }; }; -type FR517 = DeepReadonly517>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion517 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha517 = Extract; -type ExcludeZulu517 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA517 { width: number; height: number; depth: number } -interface ShapeB517 { color: string; opacity: number; blend: string } -interface ShapeC517 { x: number; y: number; z: number; w: number } -interface ShapeD517 { label: string; title: string; summary: string } - -type Combined517 = ShapeA517 & ShapeB517 & ShapeC517 & ShapeD517; -type OptionalAll517 = { [K in keyof Combined517]?: Combined517[K] }; -type RequiredAll517 = { [K in keyof Combined517]-?: Combined517[K] }; -type ReadonlyAll517 = { readonly [K in keyof Combined517]: Combined517[K] }; -type NullableAll517 = { [K in keyof Combined517]: Combined517[K] | null }; +type EV_0517 = Val_0517; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString517 = T extends string ? true : false; -type IsNumber517 = T extends number ? true : false; -type TypeName517 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames517 = { - [K in keyof BigRecord517]: TypeName517; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb517 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource517 = "user" | "post" | "comment" | "tag" | "category"; -type Action517 = `${Verb517}_${Resource517}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise517 = T extends Promise ? UnwrapPromise517 : T; -type UnwrapArray517 = T extends (infer U)[] ? UnwrapArray517 : T; -type Head517 = T extends [infer H, ...infer _] ? H : never; -type Tail517 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation517 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation517>] - : never; +interface Registry_05_17 { + entities: Map; + validators: EV_0517; + paths: Set; + merged: DeepMerge_0517; +} -type SmallUnion517 = "a" | "b" | "c" | "d"; -type AllPerms517 = Permutation517; +type CK_0517 = `p05.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig517, - Flat517, - FR517, - BigUnion517, - ExtractAlpha517, - ExcludeZulu517, - OptionalAll517, - RequiredAll517, - ReadonlyAll517, - NullableAll517, - TypeNames517, - Action517, - AllPerms517, -}; +export type { Entity_05_17, Registry_05_17, CK_0517, EP_0517, EV_0517, DeepMerge_0517 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts index 35fdf30d..795eedcc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-18.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-18 (seed 518) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-18 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0518 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0518 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord518 { - a518: { x: number; y: string; z: boolean }; - b518: { p: string[]; q: Record }; - c518: { nested: { deep: { deeper: { deepest: string } } } }; - d518: number; - e518: string; - f518: boolean; - g518: null; - h518: undefined; - i518: bigint; - j518: symbol; +interface Entity_05_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_18 | null; children: Entity_05_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0518: number; y0518: string; z0518: boolean }; } -type PartialBig518 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten518 = T extends Array ? Flatten518 : T; -type Nested518 = number[][][][][][][][][][]; -type Flat518 = Flatten518; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly518 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly518 : T[K]; -}; -type DeepRequired518 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired518 : T[K]; +type Path_0518 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0518}` }[keyof T & string] : never; +type EP_0518 = Path_0518; + +type Val_0518 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0518 } + : T[K] extends object ? { t: 'o'; props: Val_0518 } + : { t: 'u' }; }; -type FR518 = DeepReadonly518>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion518 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha518 = Extract; -type ExcludeZulu518 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA518 { width: number; height: number; depth: number } -interface ShapeB518 { color: string; opacity: number; blend: string } -interface ShapeC518 { x: number; y: number; z: number; w: number } -interface ShapeD518 { label: string; title: string; summary: string } - -type Combined518 = ShapeA518 & ShapeB518 & ShapeC518 & ShapeD518; -type OptionalAll518 = { [K in keyof Combined518]?: Combined518[K] }; -type RequiredAll518 = { [K in keyof Combined518]-?: Combined518[K] }; -type ReadonlyAll518 = { readonly [K in keyof Combined518]: Combined518[K] }; -type NullableAll518 = { [K in keyof Combined518]: Combined518[K] | null }; +type EV_0518 = Val_0518; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString518 = T extends string ? true : false; -type IsNumber518 = T extends number ? true : false; -type TypeName518 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames518 = { - [K in keyof BigRecord518]: TypeName518; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb518 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource518 = "user" | "post" | "comment" | "tag" | "category"; -type Action518 = `${Verb518}_${Resource518}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise518 = T extends Promise ? UnwrapPromise518 : T; -type UnwrapArray518 = T extends (infer U)[] ? UnwrapArray518 : T; -type Head518 = T extends [infer H, ...infer _] ? H : never; -type Tail518 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation518 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation518>] - : never; +interface Registry_05_18 { + entities: Map; + validators: EV_0518; + paths: Set; + merged: DeepMerge_0518; +} -type SmallUnion518 = "a" | "b" | "c" | "d"; -type AllPerms518 = Permutation518; +type CK_0518 = `p05.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig518, - Flat518, - FR518, - BigUnion518, - ExtractAlpha518, - ExcludeZulu518, - OptionalAll518, - RequiredAll518, - ReadonlyAll518, - NullableAll518, - TypeNames518, - Action518, - AllPerms518, -}; +export type { Entity_05_18, Registry_05_18, CK_0518, EP_0518, EV_0518, DeepMerge_0518 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts index 9cfc2d6c..987dcd39 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-19.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-19 (seed 519) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-19 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0519 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0519 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord519 { - a519: { x: number; y: string; z: boolean }; - b519: { p: string[]; q: Record }; - c519: { nested: { deep: { deeper: { deepest: string } } } }; - d519: number; - e519: string; - f519: boolean; - g519: null; - h519: undefined; - i519: bigint; - j519: symbol; +interface Entity_05_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_19 | null; children: Entity_05_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0519: number; y0519: string; z0519: boolean }; } -type PartialBig519 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten519 = T extends Array ? Flatten519 : T; -type Nested519 = number[][][][][][][][][][]; -type Flat519 = Flatten519; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly519 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly519 : T[K]; -}; -type DeepRequired519 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired519 : T[K]; +type Path_0519 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0519}` }[keyof T & string] : never; +type EP_0519 = Path_0519; + +type Val_0519 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0519 } + : T[K] extends object ? { t: 'o'; props: Val_0519 } + : { t: 'u' }; }; -type FR519 = DeepReadonly519>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion519 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha519 = Extract; -type ExcludeZulu519 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA519 { width: number; height: number; depth: number } -interface ShapeB519 { color: string; opacity: number; blend: string } -interface ShapeC519 { x: number; y: number; z: number; w: number } -interface ShapeD519 { label: string; title: string; summary: string } - -type Combined519 = ShapeA519 & ShapeB519 & ShapeC519 & ShapeD519; -type OptionalAll519 = { [K in keyof Combined519]?: Combined519[K] }; -type RequiredAll519 = { [K in keyof Combined519]-?: Combined519[K] }; -type ReadonlyAll519 = { readonly [K in keyof Combined519]: Combined519[K] }; -type NullableAll519 = { [K in keyof Combined519]: Combined519[K] | null }; +type EV_0519 = Val_0519; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString519 = T extends string ? true : false; -type IsNumber519 = T extends number ? true : false; -type TypeName519 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames519 = { - [K in keyof BigRecord519]: TypeName519; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb519 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource519 = "user" | "post" | "comment" | "tag" | "category"; -type Action519 = `${Verb519}_${Resource519}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise519 = T extends Promise ? UnwrapPromise519 : T; -type UnwrapArray519 = T extends (infer U)[] ? UnwrapArray519 : T; -type Head519 = T extends [infer H, ...infer _] ? H : never; -type Tail519 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation519 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation519>] - : never; +interface Registry_05_19 { + entities: Map; + validators: EV_0519; + paths: Set; + merged: DeepMerge_0519; +} -type SmallUnion519 = "a" | "b" | "c" | "d"; -type AllPerms519 = Permutation519; +type CK_0519 = `p05.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig519, - Flat519, - FR519, - BigUnion519, - ExtractAlpha519, - ExcludeZulu519, - OptionalAll519, - RequiredAll519, - ReadonlyAll519, - NullableAll519, - TypeNames519, - Action519, - AllPerms519, -}; +export type { Entity_05_19, Registry_05_19, CK_0519, EP_0519, EV_0519, DeepMerge_0519 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts index 1f4baef4..6c9811c2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-20.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-20 (seed 520) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-20 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0520 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0520 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord520 { - a520: { x: number; y: string; z: boolean }; - b520: { p: string[]; q: Record }; - c520: { nested: { deep: { deeper: { deepest: string } } } }; - d520: number; - e520: string; - f520: boolean; - g520: null; - h520: undefined; - i520: bigint; - j520: symbol; +interface Entity_05_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_20 | null; children: Entity_05_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0520: number; y0520: string; z0520: boolean }; } -type PartialBig520 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten520 = T extends Array ? Flatten520 : T; -type Nested520 = number[][][][][][][][][][]; -type Flat520 = Flatten520; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly520 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly520 : T[K]; -}; -type DeepRequired520 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired520 : T[K]; +type Path_0520 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0520}` }[keyof T & string] : never; +type EP_0520 = Path_0520; + +type Val_0520 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0520 } + : T[K] extends object ? { t: 'o'; props: Val_0520 } + : { t: 'u' }; }; -type FR520 = DeepReadonly520>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion520 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha520 = Extract; -type ExcludeZulu520 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA520 { width: number; height: number; depth: number } -interface ShapeB520 { color: string; opacity: number; blend: string } -interface ShapeC520 { x: number; y: number; z: number; w: number } -interface ShapeD520 { label: string; title: string; summary: string } - -type Combined520 = ShapeA520 & ShapeB520 & ShapeC520 & ShapeD520; -type OptionalAll520 = { [K in keyof Combined520]?: Combined520[K] }; -type RequiredAll520 = { [K in keyof Combined520]-?: Combined520[K] }; -type ReadonlyAll520 = { readonly [K in keyof Combined520]: Combined520[K] }; -type NullableAll520 = { [K in keyof Combined520]: Combined520[K] | null }; +type EV_0520 = Val_0520; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString520 = T extends string ? true : false; -type IsNumber520 = T extends number ? true : false; -type TypeName520 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames520 = { - [K in keyof BigRecord520]: TypeName520; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb520 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource520 = "user" | "post" | "comment" | "tag" | "category"; -type Action520 = `${Verb520}_${Resource520}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise520 = T extends Promise ? UnwrapPromise520 : T; -type UnwrapArray520 = T extends (infer U)[] ? UnwrapArray520 : T; -type Head520 = T extends [infer H, ...infer _] ? H : never; -type Tail520 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation520 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation520>] - : never; +interface Registry_05_20 { + entities: Map; + validators: EV_0520; + paths: Set; + merged: DeepMerge_0520; +} -type SmallUnion520 = "a" | "b" | "c" | "d"; -type AllPerms520 = Permutation520; +type CK_0520 = `p05.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig520, - Flat520, - FR520, - BigUnion520, - ExtractAlpha520, - ExcludeZulu520, - OptionalAll520, - RequiredAll520, - ReadonlyAll520, - NullableAll520, - TypeNames520, - Action520, - AllPerms520, -}; +export type { Entity_05_20, Registry_05_20, CK_0520, EP_0520, EV_0520, DeepMerge_0520 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts index 9629bd79..2135cc02 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-21.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-21 (seed 521) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-21 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0521 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0521 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord521 { - a521: { x: number; y: string; z: boolean }; - b521: { p: string[]; q: Record }; - c521: { nested: { deep: { deeper: { deepest: string } } } }; - d521: number; - e521: string; - f521: boolean; - g521: null; - h521: undefined; - i521: bigint; - j521: symbol; +interface Entity_05_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_21 | null; children: Entity_05_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0521: number; y0521: string; z0521: boolean }; } -type PartialBig521 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten521 = T extends Array ? Flatten521 : T; -type Nested521 = number[][][][][][][][][][]; -type Flat521 = Flatten521; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly521 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly521 : T[K]; -}; -type DeepRequired521 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired521 : T[K]; +type Path_0521 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0521}` }[keyof T & string] : never; +type EP_0521 = Path_0521; + +type Val_0521 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0521 } + : T[K] extends object ? { t: 'o'; props: Val_0521 } + : { t: 'u' }; }; -type FR521 = DeepReadonly521>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion521 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha521 = Extract; -type ExcludeZulu521 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA521 { width: number; height: number; depth: number } -interface ShapeB521 { color: string; opacity: number; blend: string } -interface ShapeC521 { x: number; y: number; z: number; w: number } -interface ShapeD521 { label: string; title: string; summary: string } - -type Combined521 = ShapeA521 & ShapeB521 & ShapeC521 & ShapeD521; -type OptionalAll521 = { [K in keyof Combined521]?: Combined521[K] }; -type RequiredAll521 = { [K in keyof Combined521]-?: Combined521[K] }; -type ReadonlyAll521 = { readonly [K in keyof Combined521]: Combined521[K] }; -type NullableAll521 = { [K in keyof Combined521]: Combined521[K] | null }; +type EV_0521 = Val_0521; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString521 = T extends string ? true : false; -type IsNumber521 = T extends number ? true : false; -type TypeName521 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames521 = { - [K in keyof BigRecord521]: TypeName521; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb521 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource521 = "user" | "post" | "comment" | "tag" | "category"; -type Action521 = `${Verb521}_${Resource521}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise521 = T extends Promise ? UnwrapPromise521 : T; -type UnwrapArray521 = T extends (infer U)[] ? UnwrapArray521 : T; -type Head521 = T extends [infer H, ...infer _] ? H : never; -type Tail521 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation521 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation521>] - : never; +interface Registry_05_21 { + entities: Map; + validators: EV_0521; + paths: Set; + merged: DeepMerge_0521; +} -type SmallUnion521 = "a" | "b" | "c" | "d"; -type AllPerms521 = Permutation521; +type CK_0521 = `p05.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig521, - Flat521, - FR521, - BigUnion521, - ExtractAlpha521, - ExcludeZulu521, - OptionalAll521, - RequiredAll521, - ReadonlyAll521, - NullableAll521, - TypeNames521, - Action521, - AllPerms521, -}; +export type { Entity_05_21, Registry_05_21, CK_0521, EP_0521, EV_0521, DeepMerge_0521 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts index 9077cc47..8e99daa7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-22.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-22 (seed 522) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-22 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0522 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0522 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord522 { - a522: { x: number; y: string; z: boolean }; - b522: { p: string[]; q: Record }; - c522: { nested: { deep: { deeper: { deepest: string } } } }; - d522: number; - e522: string; - f522: boolean; - g522: null; - h522: undefined; - i522: bigint; - j522: symbol; +interface Entity_05_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_22 | null; children: Entity_05_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0522: number; y0522: string; z0522: boolean }; } -type PartialBig522 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten522 = T extends Array ? Flatten522 : T; -type Nested522 = number[][][][][][][][][][]; -type Flat522 = Flatten522; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly522 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly522 : T[K]; -}; -type DeepRequired522 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired522 : T[K]; +type Path_0522 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0522}` }[keyof T & string] : never; +type EP_0522 = Path_0522; + +type Val_0522 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0522 } + : T[K] extends object ? { t: 'o'; props: Val_0522 } + : { t: 'u' }; }; -type FR522 = DeepReadonly522>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion522 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha522 = Extract; -type ExcludeZulu522 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA522 { width: number; height: number; depth: number } -interface ShapeB522 { color: string; opacity: number; blend: string } -interface ShapeC522 { x: number; y: number; z: number; w: number } -interface ShapeD522 { label: string; title: string; summary: string } - -type Combined522 = ShapeA522 & ShapeB522 & ShapeC522 & ShapeD522; -type OptionalAll522 = { [K in keyof Combined522]?: Combined522[K] }; -type RequiredAll522 = { [K in keyof Combined522]-?: Combined522[K] }; -type ReadonlyAll522 = { readonly [K in keyof Combined522]: Combined522[K] }; -type NullableAll522 = { [K in keyof Combined522]: Combined522[K] | null }; +type EV_0522 = Val_0522; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString522 = T extends string ? true : false; -type IsNumber522 = T extends number ? true : false; -type TypeName522 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames522 = { - [K in keyof BigRecord522]: TypeName522; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb522 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource522 = "user" | "post" | "comment" | "tag" | "category"; -type Action522 = `${Verb522}_${Resource522}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise522 = T extends Promise ? UnwrapPromise522 : T; -type UnwrapArray522 = T extends (infer U)[] ? UnwrapArray522 : T; -type Head522 = T extends [infer H, ...infer _] ? H : never; -type Tail522 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation522 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation522>] - : never; +interface Registry_05_22 { + entities: Map; + validators: EV_0522; + paths: Set; + merged: DeepMerge_0522; +} -type SmallUnion522 = "a" | "b" | "c" | "d"; -type AllPerms522 = Permutation522; +type CK_0522 = `p05.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig522, - Flat522, - FR522, - BigUnion522, - ExtractAlpha522, - ExcludeZulu522, - OptionalAll522, - RequiredAll522, - ReadonlyAll522, - NullableAll522, - TypeNames522, - Action522, - AllPerms522, -}; +export type { Entity_05_22, Registry_05_22, CK_0522, EP_0522, EV_0522, DeepMerge_0522 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts index c5a8f98b..ff490745 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-23.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-23 (seed 523) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-23 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0523 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0523 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord523 { - a523: { x: number; y: string; z: boolean }; - b523: { p: string[]; q: Record }; - c523: { nested: { deep: { deeper: { deepest: string } } } }; - d523: number; - e523: string; - f523: boolean; - g523: null; - h523: undefined; - i523: bigint; - j523: symbol; +interface Entity_05_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_23 | null; children: Entity_05_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0523: number; y0523: string; z0523: boolean }; } -type PartialBig523 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten523 = T extends Array ? Flatten523 : T; -type Nested523 = number[][][][][][][][][][]; -type Flat523 = Flatten523; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly523 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly523 : T[K]; -}; -type DeepRequired523 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired523 : T[K]; +type Path_0523 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0523}` }[keyof T & string] : never; +type EP_0523 = Path_0523; + +type Val_0523 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0523 } + : T[K] extends object ? { t: 'o'; props: Val_0523 } + : { t: 'u' }; }; -type FR523 = DeepReadonly523>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion523 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha523 = Extract; -type ExcludeZulu523 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA523 { width: number; height: number; depth: number } -interface ShapeB523 { color: string; opacity: number; blend: string } -interface ShapeC523 { x: number; y: number; z: number; w: number } -interface ShapeD523 { label: string; title: string; summary: string } - -type Combined523 = ShapeA523 & ShapeB523 & ShapeC523 & ShapeD523; -type OptionalAll523 = { [K in keyof Combined523]?: Combined523[K] }; -type RequiredAll523 = { [K in keyof Combined523]-?: Combined523[K] }; -type ReadonlyAll523 = { readonly [K in keyof Combined523]: Combined523[K] }; -type NullableAll523 = { [K in keyof Combined523]: Combined523[K] | null }; +type EV_0523 = Val_0523; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString523 = T extends string ? true : false; -type IsNumber523 = T extends number ? true : false; -type TypeName523 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames523 = { - [K in keyof BigRecord523]: TypeName523; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb523 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource523 = "user" | "post" | "comment" | "tag" | "category"; -type Action523 = `${Verb523}_${Resource523}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise523 = T extends Promise ? UnwrapPromise523 : T; -type UnwrapArray523 = T extends (infer U)[] ? UnwrapArray523 : T; -type Head523 = T extends [infer H, ...infer _] ? H : never; -type Tail523 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation523 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation523>] - : never; +interface Registry_05_23 { + entities: Map; + validators: EV_0523; + paths: Set; + merged: DeepMerge_0523; +} -type SmallUnion523 = "a" | "b" | "c" | "d"; -type AllPerms523 = Permutation523; +type CK_0523 = `p05.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig523, - Flat523, - FR523, - BigUnion523, - ExtractAlpha523, - ExcludeZulu523, - OptionalAll523, - RequiredAll523, - ReadonlyAll523, - NullableAll523, - TypeNames523, - Action523, - AllPerms523, -}; +export type { Entity_05_23, Registry_05_23, CK_0523, EP_0523, EV_0523, DeepMerge_0523 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts index 636ca60d..d49d4635 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-24.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-24 (seed 524) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-24 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0524 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0524 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord524 { - a524: { x: number; y: string; z: boolean }; - b524: { p: string[]; q: Record }; - c524: { nested: { deep: { deeper: { deepest: string } } } }; - d524: number; - e524: string; - f524: boolean; - g524: null; - h524: undefined; - i524: bigint; - j524: symbol; +interface Entity_05_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_24 | null; children: Entity_05_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0524: number; y0524: string; z0524: boolean }; } -type PartialBig524 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten524 = T extends Array ? Flatten524 : T; -type Nested524 = number[][][][][][][][][][]; -type Flat524 = Flatten524; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly524 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly524 : T[K]; -}; -type DeepRequired524 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired524 : T[K]; +type Path_0524 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0524}` }[keyof T & string] : never; +type EP_0524 = Path_0524; + +type Val_0524 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0524 } + : T[K] extends object ? { t: 'o'; props: Val_0524 } + : { t: 'u' }; }; -type FR524 = DeepReadonly524>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion524 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha524 = Extract; -type ExcludeZulu524 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA524 { width: number; height: number; depth: number } -interface ShapeB524 { color: string; opacity: number; blend: string } -interface ShapeC524 { x: number; y: number; z: number; w: number } -interface ShapeD524 { label: string; title: string; summary: string } - -type Combined524 = ShapeA524 & ShapeB524 & ShapeC524 & ShapeD524; -type OptionalAll524 = { [K in keyof Combined524]?: Combined524[K] }; -type RequiredAll524 = { [K in keyof Combined524]-?: Combined524[K] }; -type ReadonlyAll524 = { readonly [K in keyof Combined524]: Combined524[K] }; -type NullableAll524 = { [K in keyof Combined524]: Combined524[K] | null }; +type EV_0524 = Val_0524; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString524 = T extends string ? true : false; -type IsNumber524 = T extends number ? true : false; -type TypeName524 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames524 = { - [K in keyof BigRecord524]: TypeName524; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb524 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource524 = "user" | "post" | "comment" | "tag" | "category"; -type Action524 = `${Verb524}_${Resource524}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise524 = T extends Promise ? UnwrapPromise524 : T; -type UnwrapArray524 = T extends (infer U)[] ? UnwrapArray524 : T; -type Head524 = T extends [infer H, ...infer _] ? H : never; -type Tail524 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation524 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation524>] - : never; +interface Registry_05_24 { + entities: Map; + validators: EV_0524; + paths: Set; + merged: DeepMerge_0524; +} -type SmallUnion524 = "a" | "b" | "c" | "d"; -type AllPerms524 = Permutation524; +type CK_0524 = `p05.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig524, - Flat524, - FR524, - BigUnion524, - ExtractAlpha524, - ExcludeZulu524, - OptionalAll524, - RequiredAll524, - ReadonlyAll524, - NullableAll524, - TypeNames524, - Action524, - AllPerms524, -}; +export type { Entity_05_24, Registry_05_24, CK_0524, EP_0524, EV_0524, DeepMerge_0524 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts index 81604220..a5f58e2e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-25.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-25 (seed 525) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-25 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0525 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0525 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord525 { - a525: { x: number; y: string; z: boolean }; - b525: { p: string[]; q: Record }; - c525: { nested: { deep: { deeper: { deepest: string } } } }; - d525: number; - e525: string; - f525: boolean; - g525: null; - h525: undefined; - i525: bigint; - j525: symbol; +interface Entity_05_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_25 | null; children: Entity_05_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0525: number; y0525: string; z0525: boolean }; } -type PartialBig525 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten525 = T extends Array ? Flatten525 : T; -type Nested525 = number[][][][][][][][][][]; -type Flat525 = Flatten525; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly525 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly525 : T[K]; -}; -type DeepRequired525 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired525 : T[K]; +type Path_0525 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0525}` }[keyof T & string] : never; +type EP_0525 = Path_0525; + +type Val_0525 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0525 } + : T[K] extends object ? { t: 'o'; props: Val_0525 } + : { t: 'u' }; }; -type FR525 = DeepReadonly525>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion525 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha525 = Extract; -type ExcludeZulu525 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA525 { width: number; height: number; depth: number } -interface ShapeB525 { color: string; opacity: number; blend: string } -interface ShapeC525 { x: number; y: number; z: number; w: number } -interface ShapeD525 { label: string; title: string; summary: string } - -type Combined525 = ShapeA525 & ShapeB525 & ShapeC525 & ShapeD525; -type OptionalAll525 = { [K in keyof Combined525]?: Combined525[K] }; -type RequiredAll525 = { [K in keyof Combined525]-?: Combined525[K] }; -type ReadonlyAll525 = { readonly [K in keyof Combined525]: Combined525[K] }; -type NullableAll525 = { [K in keyof Combined525]: Combined525[K] | null }; +type EV_0525 = Val_0525; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString525 = T extends string ? true : false; -type IsNumber525 = T extends number ? true : false; -type TypeName525 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames525 = { - [K in keyof BigRecord525]: TypeName525; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb525 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource525 = "user" | "post" | "comment" | "tag" | "category"; -type Action525 = `${Verb525}_${Resource525}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise525 = T extends Promise ? UnwrapPromise525 : T; -type UnwrapArray525 = T extends (infer U)[] ? UnwrapArray525 : T; -type Head525 = T extends [infer H, ...infer _] ? H : never; -type Tail525 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation525 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation525>] - : never; +interface Registry_05_25 { + entities: Map; + validators: EV_0525; + paths: Set; + merged: DeepMerge_0525; +} -type SmallUnion525 = "a" | "b" | "c" | "d"; -type AllPerms525 = Permutation525; +type CK_0525 = `p05.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig525, - Flat525, - FR525, - BigUnion525, - ExtractAlpha525, - ExcludeZulu525, - OptionalAll525, - RequiredAll525, - ReadonlyAll525, - NullableAll525, - TypeNames525, - Action525, - AllPerms525, -}; +export type { Entity_05_25, Registry_05_25, CK_0525, EP_0525, EV_0525, DeepMerge_0525 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts index 7a90e401..52c5daf3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-26.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-26 (seed 526) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-26 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0526 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0526 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord526 { - a526: { x: number; y: string; z: boolean }; - b526: { p: string[]; q: Record }; - c526: { nested: { deep: { deeper: { deepest: string } } } }; - d526: number; - e526: string; - f526: boolean; - g526: null; - h526: undefined; - i526: bigint; - j526: symbol; +interface Entity_05_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_26 | null; children: Entity_05_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0526: number; y0526: string; z0526: boolean }; } -type PartialBig526 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten526 = T extends Array ? Flatten526 : T; -type Nested526 = number[][][][][][][][][][]; -type Flat526 = Flatten526; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly526 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly526 : T[K]; -}; -type DeepRequired526 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired526 : T[K]; +type Path_0526 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0526}` }[keyof T & string] : never; +type EP_0526 = Path_0526; + +type Val_0526 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0526 } + : T[K] extends object ? { t: 'o'; props: Val_0526 } + : { t: 'u' }; }; -type FR526 = DeepReadonly526>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion526 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha526 = Extract; -type ExcludeZulu526 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA526 { width: number; height: number; depth: number } -interface ShapeB526 { color: string; opacity: number; blend: string } -interface ShapeC526 { x: number; y: number; z: number; w: number } -interface ShapeD526 { label: string; title: string; summary: string } - -type Combined526 = ShapeA526 & ShapeB526 & ShapeC526 & ShapeD526; -type OptionalAll526 = { [K in keyof Combined526]?: Combined526[K] }; -type RequiredAll526 = { [K in keyof Combined526]-?: Combined526[K] }; -type ReadonlyAll526 = { readonly [K in keyof Combined526]: Combined526[K] }; -type NullableAll526 = { [K in keyof Combined526]: Combined526[K] | null }; +type EV_0526 = Val_0526; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString526 = T extends string ? true : false; -type IsNumber526 = T extends number ? true : false; -type TypeName526 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames526 = { - [K in keyof BigRecord526]: TypeName526; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb526 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource526 = "user" | "post" | "comment" | "tag" | "category"; -type Action526 = `${Verb526}_${Resource526}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise526 = T extends Promise ? UnwrapPromise526 : T; -type UnwrapArray526 = T extends (infer U)[] ? UnwrapArray526 : T; -type Head526 = T extends [infer H, ...infer _] ? H : never; -type Tail526 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation526 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation526>] - : never; +interface Registry_05_26 { + entities: Map; + validators: EV_0526; + paths: Set; + merged: DeepMerge_0526; +} -type SmallUnion526 = "a" | "b" | "c" | "d"; -type AllPerms526 = Permutation526; +type CK_0526 = `p05.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig526, - Flat526, - FR526, - BigUnion526, - ExtractAlpha526, - ExcludeZulu526, - OptionalAll526, - RequiredAll526, - ReadonlyAll526, - NullableAll526, - TypeNames526, - Action526, - AllPerms526, -}; +export type { Entity_05_26, Registry_05_26, CK_0526, EP_0526, EV_0526, DeepMerge_0526 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts index e1fb0a53..3c67391e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-27.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-27 (seed 527) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-27 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0527 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0527 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord527 { - a527: { x: number; y: string; z: boolean }; - b527: { p: string[]; q: Record }; - c527: { nested: { deep: { deeper: { deepest: string } } } }; - d527: number; - e527: string; - f527: boolean; - g527: null; - h527: undefined; - i527: bigint; - j527: symbol; +interface Entity_05_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_27 | null; children: Entity_05_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0527: number; y0527: string; z0527: boolean }; } -type PartialBig527 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten527 = T extends Array ? Flatten527 : T; -type Nested527 = number[][][][][][][][][][]; -type Flat527 = Flatten527; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly527 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly527 : T[K]; -}; -type DeepRequired527 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired527 : T[K]; +type Path_0527 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0527}` }[keyof T & string] : never; +type EP_0527 = Path_0527; + +type Val_0527 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0527 } + : T[K] extends object ? { t: 'o'; props: Val_0527 } + : { t: 'u' }; }; -type FR527 = DeepReadonly527>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion527 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha527 = Extract; -type ExcludeZulu527 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA527 { width: number; height: number; depth: number } -interface ShapeB527 { color: string; opacity: number; blend: string } -interface ShapeC527 { x: number; y: number; z: number; w: number } -interface ShapeD527 { label: string; title: string; summary: string } - -type Combined527 = ShapeA527 & ShapeB527 & ShapeC527 & ShapeD527; -type OptionalAll527 = { [K in keyof Combined527]?: Combined527[K] }; -type RequiredAll527 = { [K in keyof Combined527]-?: Combined527[K] }; -type ReadonlyAll527 = { readonly [K in keyof Combined527]: Combined527[K] }; -type NullableAll527 = { [K in keyof Combined527]: Combined527[K] | null }; +type EV_0527 = Val_0527; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString527 = T extends string ? true : false; -type IsNumber527 = T extends number ? true : false; -type TypeName527 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames527 = { - [K in keyof BigRecord527]: TypeName527; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb527 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource527 = "user" | "post" | "comment" | "tag" | "category"; -type Action527 = `${Verb527}_${Resource527}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise527 = T extends Promise ? UnwrapPromise527 : T; -type UnwrapArray527 = T extends (infer U)[] ? UnwrapArray527 : T; -type Head527 = T extends [infer H, ...infer _] ? H : never; -type Tail527 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation527 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation527>] - : never; +interface Registry_05_27 { + entities: Map; + validators: EV_0527; + paths: Set; + merged: DeepMerge_0527; +} -type SmallUnion527 = "a" | "b" | "c" | "d"; -type AllPerms527 = Permutation527; +type CK_0527 = `p05.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig527, - Flat527, - FR527, - BigUnion527, - ExtractAlpha527, - ExcludeZulu527, - OptionalAll527, - RequiredAll527, - ReadonlyAll527, - NullableAll527, - TypeNames527, - Action527, - AllPerms527, -}; +export type { Entity_05_27, Registry_05_27, CK_0527, EP_0527, EV_0527, DeepMerge_0527 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts index 97b9011c..4deb37e4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-28.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-28 (seed 528) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-28 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0528 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0528 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord528 { - a528: { x: number; y: string; z: boolean }; - b528: { p: string[]; q: Record }; - c528: { nested: { deep: { deeper: { deepest: string } } } }; - d528: number; - e528: string; - f528: boolean; - g528: null; - h528: undefined; - i528: bigint; - j528: symbol; +interface Entity_05_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_28 | null; children: Entity_05_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0528: number; y0528: string; z0528: boolean }; } -type PartialBig528 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten528 = T extends Array ? Flatten528 : T; -type Nested528 = number[][][][][][][][][][]; -type Flat528 = Flatten528; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly528 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly528 : T[K]; -}; -type DeepRequired528 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired528 : T[K]; +type Path_0528 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0528}` }[keyof T & string] : never; +type EP_0528 = Path_0528; + +type Val_0528 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0528 } + : T[K] extends object ? { t: 'o'; props: Val_0528 } + : { t: 'u' }; }; -type FR528 = DeepReadonly528>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion528 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha528 = Extract; -type ExcludeZulu528 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA528 { width: number; height: number; depth: number } -interface ShapeB528 { color: string; opacity: number; blend: string } -interface ShapeC528 { x: number; y: number; z: number; w: number } -interface ShapeD528 { label: string; title: string; summary: string } - -type Combined528 = ShapeA528 & ShapeB528 & ShapeC528 & ShapeD528; -type OptionalAll528 = { [K in keyof Combined528]?: Combined528[K] }; -type RequiredAll528 = { [K in keyof Combined528]-?: Combined528[K] }; -type ReadonlyAll528 = { readonly [K in keyof Combined528]: Combined528[K] }; -type NullableAll528 = { [K in keyof Combined528]: Combined528[K] | null }; +type EV_0528 = Val_0528; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString528 = T extends string ? true : false; -type IsNumber528 = T extends number ? true : false; -type TypeName528 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames528 = { - [K in keyof BigRecord528]: TypeName528; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb528 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource528 = "user" | "post" | "comment" | "tag" | "category"; -type Action528 = `${Verb528}_${Resource528}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise528 = T extends Promise ? UnwrapPromise528 : T; -type UnwrapArray528 = T extends (infer U)[] ? UnwrapArray528 : T; -type Head528 = T extends [infer H, ...infer _] ? H : never; -type Tail528 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation528 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation528>] - : never; +interface Registry_05_28 { + entities: Map; + validators: EV_0528; + paths: Set; + merged: DeepMerge_0528; +} -type SmallUnion528 = "a" | "b" | "c" | "d"; -type AllPerms528 = Permutation528; +type CK_0528 = `p05.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig528, - Flat528, - FR528, - BigUnion528, - ExtractAlpha528, - ExcludeZulu528, - OptionalAll528, - RequiredAll528, - ReadonlyAll528, - NullableAll528, - TypeNames528, - Action528, - AllPerms528, -}; +export type { Entity_05_28, Registry_05_28, CK_0528, EP_0528, EV_0528, DeepMerge_0528 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts index 327eb879..08e3a6fc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-29.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-29 (seed 529) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-29 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0529 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0529 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord529 { - a529: { x: number; y: string; z: boolean }; - b529: { p: string[]; q: Record }; - c529: { nested: { deep: { deeper: { deepest: string } } } }; - d529: number; - e529: string; - f529: boolean; - g529: null; - h529: undefined; - i529: bigint; - j529: symbol; +interface Entity_05_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_29 | null; children: Entity_05_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0529: number; y0529: string; z0529: boolean }; } -type PartialBig529 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten529 = T extends Array ? Flatten529 : T; -type Nested529 = number[][][][][][][][][][]; -type Flat529 = Flatten529; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly529 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly529 : T[K]; -}; -type DeepRequired529 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired529 : T[K]; +type Path_0529 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0529}` }[keyof T & string] : never; +type EP_0529 = Path_0529; + +type Val_0529 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0529 } + : T[K] extends object ? { t: 'o'; props: Val_0529 } + : { t: 'u' }; }; -type FR529 = DeepReadonly529>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion529 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha529 = Extract; -type ExcludeZulu529 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA529 { width: number; height: number; depth: number } -interface ShapeB529 { color: string; opacity: number; blend: string } -interface ShapeC529 { x: number; y: number; z: number; w: number } -interface ShapeD529 { label: string; title: string; summary: string } - -type Combined529 = ShapeA529 & ShapeB529 & ShapeC529 & ShapeD529; -type OptionalAll529 = { [K in keyof Combined529]?: Combined529[K] }; -type RequiredAll529 = { [K in keyof Combined529]-?: Combined529[K] }; -type ReadonlyAll529 = { readonly [K in keyof Combined529]: Combined529[K] }; -type NullableAll529 = { [K in keyof Combined529]: Combined529[K] | null }; +type EV_0529 = Val_0529; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString529 = T extends string ? true : false; -type IsNumber529 = T extends number ? true : false; -type TypeName529 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames529 = { - [K in keyof BigRecord529]: TypeName529; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb529 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource529 = "user" | "post" | "comment" | "tag" | "category"; -type Action529 = `${Verb529}_${Resource529}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise529 = T extends Promise ? UnwrapPromise529 : T; -type UnwrapArray529 = T extends (infer U)[] ? UnwrapArray529 : T; -type Head529 = T extends [infer H, ...infer _] ? H : never; -type Tail529 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation529 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation529>] - : never; +interface Registry_05_29 { + entities: Map; + validators: EV_0529; + paths: Set; + merged: DeepMerge_0529; +} -type SmallUnion529 = "a" | "b" | "c" | "d"; -type AllPerms529 = Permutation529; +type CK_0529 = `p05.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig529, - Flat529, - FR529, - BigUnion529, - ExtractAlpha529, - ExcludeZulu529, - OptionalAll529, - RequiredAll529, - ReadonlyAll529, - NullableAll529, - TypeNames529, - Action529, - AllPerms529, -}; +export type { Entity_05_29, Registry_05_29, CK_0529, EP_0529, EV_0529, DeepMerge_0529 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts index 32129b7a..2aa77988 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-30.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-30 (seed 530) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-30 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0530 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0530 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord530 { - a530: { x: number; y: string; z: boolean }; - b530: { p: string[]; q: Record }; - c530: { nested: { deep: { deeper: { deepest: string } } } }; - d530: number; - e530: string; - f530: boolean; - g530: null; - h530: undefined; - i530: bigint; - j530: symbol; +interface Entity_05_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_30 | null; children: Entity_05_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0530: number; y0530: string; z0530: boolean }; } -type PartialBig530 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten530 = T extends Array ? Flatten530 : T; -type Nested530 = number[][][][][][][][][][]; -type Flat530 = Flatten530; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly530 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly530 : T[K]; -}; -type DeepRequired530 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired530 : T[K]; +type Path_0530 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0530}` }[keyof T & string] : never; +type EP_0530 = Path_0530; + +type Val_0530 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0530 } + : T[K] extends object ? { t: 'o'; props: Val_0530 } + : { t: 'u' }; }; -type FR530 = DeepReadonly530>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion530 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha530 = Extract; -type ExcludeZulu530 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA530 { width: number; height: number; depth: number } -interface ShapeB530 { color: string; opacity: number; blend: string } -interface ShapeC530 { x: number; y: number; z: number; w: number } -interface ShapeD530 { label: string; title: string; summary: string } - -type Combined530 = ShapeA530 & ShapeB530 & ShapeC530 & ShapeD530; -type OptionalAll530 = { [K in keyof Combined530]?: Combined530[K] }; -type RequiredAll530 = { [K in keyof Combined530]-?: Combined530[K] }; -type ReadonlyAll530 = { readonly [K in keyof Combined530]: Combined530[K] }; -type NullableAll530 = { [K in keyof Combined530]: Combined530[K] | null }; +type EV_0530 = Val_0530; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString530 = T extends string ? true : false; -type IsNumber530 = T extends number ? true : false; -type TypeName530 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames530 = { - [K in keyof BigRecord530]: TypeName530; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb530 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource530 = "user" | "post" | "comment" | "tag" | "category"; -type Action530 = `${Verb530}_${Resource530}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise530 = T extends Promise ? UnwrapPromise530 : T; -type UnwrapArray530 = T extends (infer U)[] ? UnwrapArray530 : T; -type Head530 = T extends [infer H, ...infer _] ? H : never; -type Tail530 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation530 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation530>] - : never; +interface Registry_05_30 { + entities: Map; + validators: EV_0530; + paths: Set; + merged: DeepMerge_0530; +} -type SmallUnion530 = "a" | "b" | "c" | "d"; -type AllPerms530 = Permutation530; +type CK_0530 = `p05.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig530, - Flat530, - FR530, - BigUnion530, - ExtractAlpha530, - ExcludeZulu530, - OptionalAll530, - RequiredAll530, - ReadonlyAll530, - NullableAll530, - TypeNames530, - Action530, - AllPerms530, -}; +export type { Entity_05_30, Registry_05_30, CK_0530, EP_0530, EV_0530, DeepMerge_0530 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts index f58b58e4..3d03d1c6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-31.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-31 (seed 531) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-31 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0531 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0531 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord531 { - a531: { x: number; y: string; z: boolean }; - b531: { p: string[]; q: Record }; - c531: { nested: { deep: { deeper: { deepest: string } } } }; - d531: number; - e531: string; - f531: boolean; - g531: null; - h531: undefined; - i531: bigint; - j531: symbol; +interface Entity_05_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_31 | null; children: Entity_05_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0531: number; y0531: string; z0531: boolean }; } -type PartialBig531 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten531 = T extends Array ? Flatten531 : T; -type Nested531 = number[][][][][][][][][][]; -type Flat531 = Flatten531; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly531 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly531 : T[K]; -}; -type DeepRequired531 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired531 : T[K]; +type Path_0531 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0531}` }[keyof T & string] : never; +type EP_0531 = Path_0531; + +type Val_0531 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0531 } + : T[K] extends object ? { t: 'o'; props: Val_0531 } + : { t: 'u' }; }; -type FR531 = DeepReadonly531>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion531 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha531 = Extract; -type ExcludeZulu531 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA531 { width: number; height: number; depth: number } -interface ShapeB531 { color: string; opacity: number; blend: string } -interface ShapeC531 { x: number; y: number; z: number; w: number } -interface ShapeD531 { label: string; title: string; summary: string } - -type Combined531 = ShapeA531 & ShapeB531 & ShapeC531 & ShapeD531; -type OptionalAll531 = { [K in keyof Combined531]?: Combined531[K] }; -type RequiredAll531 = { [K in keyof Combined531]-?: Combined531[K] }; -type ReadonlyAll531 = { readonly [K in keyof Combined531]: Combined531[K] }; -type NullableAll531 = { [K in keyof Combined531]: Combined531[K] | null }; +type EV_0531 = Val_0531; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString531 = T extends string ? true : false; -type IsNumber531 = T extends number ? true : false; -type TypeName531 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames531 = { - [K in keyof BigRecord531]: TypeName531; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb531 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource531 = "user" | "post" | "comment" | "tag" | "category"; -type Action531 = `${Verb531}_${Resource531}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise531 = T extends Promise ? UnwrapPromise531 : T; -type UnwrapArray531 = T extends (infer U)[] ? UnwrapArray531 : T; -type Head531 = T extends [infer H, ...infer _] ? H : never; -type Tail531 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation531 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation531>] - : never; +interface Registry_05_31 { + entities: Map; + validators: EV_0531; + paths: Set; + merged: DeepMerge_0531; +} -type SmallUnion531 = "a" | "b" | "c" | "d"; -type AllPerms531 = Permutation531; +type CK_0531 = `p05.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig531, - Flat531, - FR531, - BigUnion531, - ExtractAlpha531, - ExcludeZulu531, - OptionalAll531, - RequiredAll531, - ReadonlyAll531, - NullableAll531, - TypeNames531, - Action531, - AllPerms531, -}; +export type { Entity_05_31, Registry_05_31, CK_0531, EP_0531, EV_0531, DeepMerge_0531 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts index fa60b158..064eb0f3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-32.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-32 (seed 532) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-32 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0532 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0532 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord532 { - a532: { x: number; y: string; z: boolean }; - b532: { p: string[]; q: Record }; - c532: { nested: { deep: { deeper: { deepest: string } } } }; - d532: number; - e532: string; - f532: boolean; - g532: null; - h532: undefined; - i532: bigint; - j532: symbol; +interface Entity_05_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_32 | null; children: Entity_05_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0532: number; y0532: string; z0532: boolean }; } -type PartialBig532 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten532 = T extends Array ? Flatten532 : T; -type Nested532 = number[][][][][][][][][][]; -type Flat532 = Flatten532; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly532 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly532 : T[K]; -}; -type DeepRequired532 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired532 : T[K]; +type Path_0532 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0532}` }[keyof T & string] : never; +type EP_0532 = Path_0532; + +type Val_0532 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0532 } + : T[K] extends object ? { t: 'o'; props: Val_0532 } + : { t: 'u' }; }; -type FR532 = DeepReadonly532>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion532 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha532 = Extract; -type ExcludeZulu532 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA532 { width: number; height: number; depth: number } -interface ShapeB532 { color: string; opacity: number; blend: string } -interface ShapeC532 { x: number; y: number; z: number; w: number } -interface ShapeD532 { label: string; title: string; summary: string } - -type Combined532 = ShapeA532 & ShapeB532 & ShapeC532 & ShapeD532; -type OptionalAll532 = { [K in keyof Combined532]?: Combined532[K] }; -type RequiredAll532 = { [K in keyof Combined532]-?: Combined532[K] }; -type ReadonlyAll532 = { readonly [K in keyof Combined532]: Combined532[K] }; -type NullableAll532 = { [K in keyof Combined532]: Combined532[K] | null }; +type EV_0532 = Val_0532; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString532 = T extends string ? true : false; -type IsNumber532 = T extends number ? true : false; -type TypeName532 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames532 = { - [K in keyof BigRecord532]: TypeName532; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb532 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource532 = "user" | "post" | "comment" | "tag" | "category"; -type Action532 = `${Verb532}_${Resource532}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise532 = T extends Promise ? UnwrapPromise532 : T; -type UnwrapArray532 = T extends (infer U)[] ? UnwrapArray532 : T; -type Head532 = T extends [infer H, ...infer _] ? H : never; -type Tail532 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation532 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation532>] - : never; +interface Registry_05_32 { + entities: Map; + validators: EV_0532; + paths: Set; + merged: DeepMerge_0532; +} -type SmallUnion532 = "a" | "b" | "c" | "d"; -type AllPerms532 = Permutation532; +type CK_0532 = `p05.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig532, - Flat532, - FR532, - BigUnion532, - ExtractAlpha532, - ExcludeZulu532, - OptionalAll532, - RequiredAll532, - ReadonlyAll532, - NullableAll532, - TypeNames532, - Action532, - AllPerms532, -}; +export type { Entity_05_32, Registry_05_32, CK_0532, EP_0532, EV_0532, DeepMerge_0532 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts index 8fa1521b..cd1bf284 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-33.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-33 (seed 533) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-33 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0533 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0533 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord533 { - a533: { x: number; y: string; z: boolean }; - b533: { p: string[]; q: Record }; - c533: { nested: { deep: { deeper: { deepest: string } } } }; - d533: number; - e533: string; - f533: boolean; - g533: null; - h533: undefined; - i533: bigint; - j533: symbol; +interface Entity_05_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_33 | null; children: Entity_05_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0533: number; y0533: string; z0533: boolean }; } -type PartialBig533 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten533 = T extends Array ? Flatten533 : T; -type Nested533 = number[][][][][][][][][][]; -type Flat533 = Flatten533; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly533 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly533 : T[K]; -}; -type DeepRequired533 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired533 : T[K]; +type Path_0533 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0533}` }[keyof T & string] : never; +type EP_0533 = Path_0533; + +type Val_0533 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0533 } + : T[K] extends object ? { t: 'o'; props: Val_0533 } + : { t: 'u' }; }; -type FR533 = DeepReadonly533>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion533 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha533 = Extract; -type ExcludeZulu533 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA533 { width: number; height: number; depth: number } -interface ShapeB533 { color: string; opacity: number; blend: string } -interface ShapeC533 { x: number; y: number; z: number; w: number } -interface ShapeD533 { label: string; title: string; summary: string } - -type Combined533 = ShapeA533 & ShapeB533 & ShapeC533 & ShapeD533; -type OptionalAll533 = { [K in keyof Combined533]?: Combined533[K] }; -type RequiredAll533 = { [K in keyof Combined533]-?: Combined533[K] }; -type ReadonlyAll533 = { readonly [K in keyof Combined533]: Combined533[K] }; -type NullableAll533 = { [K in keyof Combined533]: Combined533[K] | null }; +type EV_0533 = Val_0533; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString533 = T extends string ? true : false; -type IsNumber533 = T extends number ? true : false; -type TypeName533 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames533 = { - [K in keyof BigRecord533]: TypeName533; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb533 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource533 = "user" | "post" | "comment" | "tag" | "category"; -type Action533 = `${Verb533}_${Resource533}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise533 = T extends Promise ? UnwrapPromise533 : T; -type UnwrapArray533 = T extends (infer U)[] ? UnwrapArray533 : T; -type Head533 = T extends [infer H, ...infer _] ? H : never; -type Tail533 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation533 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation533>] - : never; +interface Registry_05_33 { + entities: Map; + validators: EV_0533; + paths: Set; + merged: DeepMerge_0533; +} -type SmallUnion533 = "a" | "b" | "c" | "d"; -type AllPerms533 = Permutation533; +type CK_0533 = `p05.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig533, - Flat533, - FR533, - BigUnion533, - ExtractAlpha533, - ExcludeZulu533, - OptionalAll533, - RequiredAll533, - ReadonlyAll533, - NullableAll533, - TypeNames533, - Action533, - AllPerms533, -}; +export type { Entity_05_33, Registry_05_33, CK_0533, EP_0533, EV_0533, DeepMerge_0533 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts index 79b4b55a..e6bdd6be 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-34.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-34 (seed 534) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-34 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0534 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0534 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord534 { - a534: { x: number; y: string; z: boolean }; - b534: { p: string[]; q: Record }; - c534: { nested: { deep: { deeper: { deepest: string } } } }; - d534: number; - e534: string; - f534: boolean; - g534: null; - h534: undefined; - i534: bigint; - j534: symbol; +interface Entity_05_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_34 | null; children: Entity_05_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0534: number; y0534: string; z0534: boolean }; } -type PartialBig534 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten534 = T extends Array ? Flatten534 : T; -type Nested534 = number[][][][][][][][][][]; -type Flat534 = Flatten534; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly534 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly534 : T[K]; -}; -type DeepRequired534 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired534 : T[K]; +type Path_0534 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0534}` }[keyof T & string] : never; +type EP_0534 = Path_0534; + +type Val_0534 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0534 } + : T[K] extends object ? { t: 'o'; props: Val_0534 } + : { t: 'u' }; }; -type FR534 = DeepReadonly534>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion534 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha534 = Extract; -type ExcludeZulu534 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA534 { width: number; height: number; depth: number } -interface ShapeB534 { color: string; opacity: number; blend: string } -interface ShapeC534 { x: number; y: number; z: number; w: number } -interface ShapeD534 { label: string; title: string; summary: string } - -type Combined534 = ShapeA534 & ShapeB534 & ShapeC534 & ShapeD534; -type OptionalAll534 = { [K in keyof Combined534]?: Combined534[K] }; -type RequiredAll534 = { [K in keyof Combined534]-?: Combined534[K] }; -type ReadonlyAll534 = { readonly [K in keyof Combined534]: Combined534[K] }; -type NullableAll534 = { [K in keyof Combined534]: Combined534[K] | null }; +type EV_0534 = Val_0534; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString534 = T extends string ? true : false; -type IsNumber534 = T extends number ? true : false; -type TypeName534 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames534 = { - [K in keyof BigRecord534]: TypeName534; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb534 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource534 = "user" | "post" | "comment" | "tag" | "category"; -type Action534 = `${Verb534}_${Resource534}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise534 = T extends Promise ? UnwrapPromise534 : T; -type UnwrapArray534 = T extends (infer U)[] ? UnwrapArray534 : T; -type Head534 = T extends [infer H, ...infer _] ? H : never; -type Tail534 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation534 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation534>] - : never; +interface Registry_05_34 { + entities: Map; + validators: EV_0534; + paths: Set; + merged: DeepMerge_0534; +} -type SmallUnion534 = "a" | "b" | "c" | "d"; -type AllPerms534 = Permutation534; +type CK_0534 = `p05.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig534, - Flat534, - FR534, - BigUnion534, - ExtractAlpha534, - ExcludeZulu534, - OptionalAll534, - RequiredAll534, - ReadonlyAll534, - NullableAll534, - TypeNames534, - Action534, - AllPerms534, -}; +export type { Entity_05_34, Registry_05_34, CK_0534, EP_0534, EV_0534, DeepMerge_0534 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts index 2452ec1a..a0040cf0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-35.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-35 (seed 535) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-35 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0535 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0535 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord535 { - a535: { x: number; y: string; z: boolean }; - b535: { p: string[]; q: Record }; - c535: { nested: { deep: { deeper: { deepest: string } } } }; - d535: number; - e535: string; - f535: boolean; - g535: null; - h535: undefined; - i535: bigint; - j535: symbol; +interface Entity_05_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_35 | null; children: Entity_05_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0535: number; y0535: string; z0535: boolean }; } -type PartialBig535 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten535 = T extends Array ? Flatten535 : T; -type Nested535 = number[][][][][][][][][][]; -type Flat535 = Flatten535; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly535 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly535 : T[K]; -}; -type DeepRequired535 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired535 : T[K]; +type Path_0535 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0535}` }[keyof T & string] : never; +type EP_0535 = Path_0535; + +type Val_0535 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0535 } + : T[K] extends object ? { t: 'o'; props: Val_0535 } + : { t: 'u' }; }; -type FR535 = DeepReadonly535>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion535 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha535 = Extract; -type ExcludeZulu535 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA535 { width: number; height: number; depth: number } -interface ShapeB535 { color: string; opacity: number; blend: string } -interface ShapeC535 { x: number; y: number; z: number; w: number } -interface ShapeD535 { label: string; title: string; summary: string } - -type Combined535 = ShapeA535 & ShapeB535 & ShapeC535 & ShapeD535; -type OptionalAll535 = { [K in keyof Combined535]?: Combined535[K] }; -type RequiredAll535 = { [K in keyof Combined535]-?: Combined535[K] }; -type ReadonlyAll535 = { readonly [K in keyof Combined535]: Combined535[K] }; -type NullableAll535 = { [K in keyof Combined535]: Combined535[K] | null }; +type EV_0535 = Val_0535; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString535 = T extends string ? true : false; -type IsNumber535 = T extends number ? true : false; -type TypeName535 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames535 = { - [K in keyof BigRecord535]: TypeName535; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb535 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource535 = "user" | "post" | "comment" | "tag" | "category"; -type Action535 = `${Verb535}_${Resource535}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise535 = T extends Promise ? UnwrapPromise535 : T; -type UnwrapArray535 = T extends (infer U)[] ? UnwrapArray535 : T; -type Head535 = T extends [infer H, ...infer _] ? H : never; -type Tail535 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation535 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation535>] - : never; +interface Registry_05_35 { + entities: Map; + validators: EV_0535; + paths: Set; + merged: DeepMerge_0535; +} -type SmallUnion535 = "a" | "b" | "c" | "d"; -type AllPerms535 = Permutation535; +type CK_0535 = `p05.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig535, - Flat535, - FR535, - BigUnion535, - ExtractAlpha535, - ExcludeZulu535, - OptionalAll535, - RequiredAll535, - ReadonlyAll535, - NullableAll535, - TypeNames535, - Action535, - AllPerms535, -}; +export type { Entity_05_35, Registry_05_35, CK_0535, EP_0535, EV_0535, DeepMerge_0535 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts index 9f7c96dd..7417384a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-36.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-36 (seed 536) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-36 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0536 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0536 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord536 { - a536: { x: number; y: string; z: boolean }; - b536: { p: string[]; q: Record }; - c536: { nested: { deep: { deeper: { deepest: string } } } }; - d536: number; - e536: string; - f536: boolean; - g536: null; - h536: undefined; - i536: bigint; - j536: symbol; +interface Entity_05_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_36 | null; children: Entity_05_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0536: number; y0536: string; z0536: boolean }; } -type PartialBig536 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten536 = T extends Array ? Flatten536 : T; -type Nested536 = number[][][][][][][][][][]; -type Flat536 = Flatten536; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly536 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly536 : T[K]; -}; -type DeepRequired536 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired536 : T[K]; +type Path_0536 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0536}` }[keyof T & string] : never; +type EP_0536 = Path_0536; + +type Val_0536 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0536 } + : T[K] extends object ? { t: 'o'; props: Val_0536 } + : { t: 'u' }; }; -type FR536 = DeepReadonly536>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion536 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha536 = Extract; -type ExcludeZulu536 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA536 { width: number; height: number; depth: number } -interface ShapeB536 { color: string; opacity: number; blend: string } -interface ShapeC536 { x: number; y: number; z: number; w: number } -interface ShapeD536 { label: string; title: string; summary: string } - -type Combined536 = ShapeA536 & ShapeB536 & ShapeC536 & ShapeD536; -type OptionalAll536 = { [K in keyof Combined536]?: Combined536[K] }; -type RequiredAll536 = { [K in keyof Combined536]-?: Combined536[K] }; -type ReadonlyAll536 = { readonly [K in keyof Combined536]: Combined536[K] }; -type NullableAll536 = { [K in keyof Combined536]: Combined536[K] | null }; +type EV_0536 = Val_0536; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString536 = T extends string ? true : false; -type IsNumber536 = T extends number ? true : false; -type TypeName536 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames536 = { - [K in keyof BigRecord536]: TypeName536; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb536 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource536 = "user" | "post" | "comment" | "tag" | "category"; -type Action536 = `${Verb536}_${Resource536}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise536 = T extends Promise ? UnwrapPromise536 : T; -type UnwrapArray536 = T extends (infer U)[] ? UnwrapArray536 : T; -type Head536 = T extends [infer H, ...infer _] ? H : never; -type Tail536 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation536 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation536>] - : never; +interface Registry_05_36 { + entities: Map; + validators: EV_0536; + paths: Set; + merged: DeepMerge_0536; +} -type SmallUnion536 = "a" | "b" | "c" | "d"; -type AllPerms536 = Permutation536; +type CK_0536 = `p05.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig536, - Flat536, - FR536, - BigUnion536, - ExtractAlpha536, - ExcludeZulu536, - OptionalAll536, - RequiredAll536, - ReadonlyAll536, - NullableAll536, - TypeNames536, - Action536, - AllPerms536, -}; +export type { Entity_05_36, Registry_05_36, CK_0536, EP_0536, EV_0536, DeepMerge_0536 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts index a0fae258..d7afc42e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-37.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-37 (seed 537) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-37 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0537 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0537 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord537 { - a537: { x: number; y: string; z: boolean }; - b537: { p: string[]; q: Record }; - c537: { nested: { deep: { deeper: { deepest: string } } } }; - d537: number; - e537: string; - f537: boolean; - g537: null; - h537: undefined; - i537: bigint; - j537: symbol; +interface Entity_05_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_37 | null; children: Entity_05_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0537: number; y0537: string; z0537: boolean }; } -type PartialBig537 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten537 = T extends Array ? Flatten537 : T; -type Nested537 = number[][][][][][][][][][]; -type Flat537 = Flatten537; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly537 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly537 : T[K]; -}; -type DeepRequired537 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired537 : T[K]; +type Path_0537 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0537}` }[keyof T & string] : never; +type EP_0537 = Path_0537; + +type Val_0537 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0537 } + : T[K] extends object ? { t: 'o'; props: Val_0537 } + : { t: 'u' }; }; -type FR537 = DeepReadonly537>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion537 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha537 = Extract; -type ExcludeZulu537 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA537 { width: number; height: number; depth: number } -interface ShapeB537 { color: string; opacity: number; blend: string } -interface ShapeC537 { x: number; y: number; z: number; w: number } -interface ShapeD537 { label: string; title: string; summary: string } - -type Combined537 = ShapeA537 & ShapeB537 & ShapeC537 & ShapeD537; -type OptionalAll537 = { [K in keyof Combined537]?: Combined537[K] }; -type RequiredAll537 = { [K in keyof Combined537]-?: Combined537[K] }; -type ReadonlyAll537 = { readonly [K in keyof Combined537]: Combined537[K] }; -type NullableAll537 = { [K in keyof Combined537]: Combined537[K] | null }; +type EV_0537 = Val_0537; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString537 = T extends string ? true : false; -type IsNumber537 = T extends number ? true : false; -type TypeName537 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames537 = { - [K in keyof BigRecord537]: TypeName537; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb537 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource537 = "user" | "post" | "comment" | "tag" | "category"; -type Action537 = `${Verb537}_${Resource537}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise537 = T extends Promise ? UnwrapPromise537 : T; -type UnwrapArray537 = T extends (infer U)[] ? UnwrapArray537 : T; -type Head537 = T extends [infer H, ...infer _] ? H : never; -type Tail537 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation537 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation537>] - : never; +interface Registry_05_37 { + entities: Map; + validators: EV_0537; + paths: Set; + merged: DeepMerge_0537; +} -type SmallUnion537 = "a" | "b" | "c" | "d"; -type AllPerms537 = Permutation537; +type CK_0537 = `p05.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig537, - Flat537, - FR537, - BigUnion537, - ExtractAlpha537, - ExcludeZulu537, - OptionalAll537, - RequiredAll537, - ReadonlyAll537, - NullableAll537, - TypeNames537, - Action537, - AllPerms537, -}; +export type { Entity_05_37, Registry_05_37, CK_0537, EP_0537, EV_0537, DeepMerge_0537 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts index 066f0e6b..f9aa15bf 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-38.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-38 (seed 538) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-38 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0538 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0538 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord538 { - a538: { x: number; y: string; z: boolean }; - b538: { p: string[]; q: Record }; - c538: { nested: { deep: { deeper: { deepest: string } } } }; - d538: number; - e538: string; - f538: boolean; - g538: null; - h538: undefined; - i538: bigint; - j538: symbol; +interface Entity_05_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_38 | null; children: Entity_05_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0538: number; y0538: string; z0538: boolean }; } -type PartialBig538 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten538 = T extends Array ? Flatten538 : T; -type Nested538 = number[][][][][][][][][][]; -type Flat538 = Flatten538; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly538 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly538 : T[K]; -}; -type DeepRequired538 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired538 : T[K]; +type Path_0538 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0538}` }[keyof T & string] : never; +type EP_0538 = Path_0538; + +type Val_0538 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0538 } + : T[K] extends object ? { t: 'o'; props: Val_0538 } + : { t: 'u' }; }; -type FR538 = DeepReadonly538>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion538 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha538 = Extract; -type ExcludeZulu538 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA538 { width: number; height: number; depth: number } -interface ShapeB538 { color: string; opacity: number; blend: string } -interface ShapeC538 { x: number; y: number; z: number; w: number } -interface ShapeD538 { label: string; title: string; summary: string } - -type Combined538 = ShapeA538 & ShapeB538 & ShapeC538 & ShapeD538; -type OptionalAll538 = { [K in keyof Combined538]?: Combined538[K] }; -type RequiredAll538 = { [K in keyof Combined538]-?: Combined538[K] }; -type ReadonlyAll538 = { readonly [K in keyof Combined538]: Combined538[K] }; -type NullableAll538 = { [K in keyof Combined538]: Combined538[K] | null }; +type EV_0538 = Val_0538; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString538 = T extends string ? true : false; -type IsNumber538 = T extends number ? true : false; -type TypeName538 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames538 = { - [K in keyof BigRecord538]: TypeName538; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb538 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource538 = "user" | "post" | "comment" | "tag" | "category"; -type Action538 = `${Verb538}_${Resource538}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise538 = T extends Promise ? UnwrapPromise538 : T; -type UnwrapArray538 = T extends (infer U)[] ? UnwrapArray538 : T; -type Head538 = T extends [infer H, ...infer _] ? H : never; -type Tail538 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation538 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation538>] - : never; +interface Registry_05_38 { + entities: Map; + validators: EV_0538; + paths: Set; + merged: DeepMerge_0538; +} -type SmallUnion538 = "a" | "b" | "c" | "d"; -type AllPerms538 = Permutation538; +type CK_0538 = `p05.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig538, - Flat538, - FR538, - BigUnion538, - ExtractAlpha538, - ExcludeZulu538, - OptionalAll538, - RequiredAll538, - ReadonlyAll538, - NullableAll538, - TypeNames538, - Action538, - AllPerms538, -}; +export type { Entity_05_38, Registry_05_38, CK_0538, EP_0538, EV_0538, DeepMerge_0538 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts index ca927d9c..2ab5557b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-39.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-39 (seed 539) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-39 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0539 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0539 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord539 { - a539: { x: number; y: string; z: boolean }; - b539: { p: string[]; q: Record }; - c539: { nested: { deep: { deeper: { deepest: string } } } }; - d539: number; - e539: string; - f539: boolean; - g539: null; - h539: undefined; - i539: bigint; - j539: symbol; +interface Entity_05_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_39 | null; children: Entity_05_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0539: number; y0539: string; z0539: boolean }; } -type PartialBig539 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten539 = T extends Array ? Flatten539 : T; -type Nested539 = number[][][][][][][][][][]; -type Flat539 = Flatten539; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly539 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly539 : T[K]; -}; -type DeepRequired539 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired539 : T[K]; +type Path_0539 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0539}` }[keyof T & string] : never; +type EP_0539 = Path_0539; + +type Val_0539 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0539 } + : T[K] extends object ? { t: 'o'; props: Val_0539 } + : { t: 'u' }; }; -type FR539 = DeepReadonly539>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion539 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha539 = Extract; -type ExcludeZulu539 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA539 { width: number; height: number; depth: number } -interface ShapeB539 { color: string; opacity: number; blend: string } -interface ShapeC539 { x: number; y: number; z: number; w: number } -interface ShapeD539 { label: string; title: string; summary: string } - -type Combined539 = ShapeA539 & ShapeB539 & ShapeC539 & ShapeD539; -type OptionalAll539 = { [K in keyof Combined539]?: Combined539[K] }; -type RequiredAll539 = { [K in keyof Combined539]-?: Combined539[K] }; -type ReadonlyAll539 = { readonly [K in keyof Combined539]: Combined539[K] }; -type NullableAll539 = { [K in keyof Combined539]: Combined539[K] | null }; +type EV_0539 = Val_0539; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString539 = T extends string ? true : false; -type IsNumber539 = T extends number ? true : false; -type TypeName539 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames539 = { - [K in keyof BigRecord539]: TypeName539; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb539 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource539 = "user" | "post" | "comment" | "tag" | "category"; -type Action539 = `${Verb539}_${Resource539}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise539 = T extends Promise ? UnwrapPromise539 : T; -type UnwrapArray539 = T extends (infer U)[] ? UnwrapArray539 : T; -type Head539 = T extends [infer H, ...infer _] ? H : never; -type Tail539 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation539 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation539>] - : never; +interface Registry_05_39 { + entities: Map; + validators: EV_0539; + paths: Set; + merged: DeepMerge_0539; +} -type SmallUnion539 = "a" | "b" | "c" | "d"; -type AllPerms539 = Permutation539; +type CK_0539 = `p05.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig539, - Flat539, - FR539, - BigUnion539, - ExtractAlpha539, - ExcludeZulu539, - OptionalAll539, - RequiredAll539, - ReadonlyAll539, - NullableAll539, - TypeNames539, - Action539, - AllPerms539, -}; +export type { Entity_05_39, Registry_05_39, CK_0539, EP_0539, EV_0539, DeepMerge_0539 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts index f1b21ce0..03a1d2f5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-40.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-40 (seed 540) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-40 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0540 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0540 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord540 { - a540: { x: number; y: string; z: boolean }; - b540: { p: string[]; q: Record }; - c540: { nested: { deep: { deeper: { deepest: string } } } }; - d540: number; - e540: string; - f540: boolean; - g540: null; - h540: undefined; - i540: bigint; - j540: symbol; +interface Entity_05_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_40 | null; children: Entity_05_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0540: number; y0540: string; z0540: boolean }; } -type PartialBig540 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten540 = T extends Array ? Flatten540 : T; -type Nested540 = number[][][][][][][][][][]; -type Flat540 = Flatten540; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly540 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly540 : T[K]; -}; -type DeepRequired540 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired540 : T[K]; +type Path_0540 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0540}` }[keyof T & string] : never; +type EP_0540 = Path_0540; + +type Val_0540 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0540 } + : T[K] extends object ? { t: 'o'; props: Val_0540 } + : { t: 'u' }; }; -type FR540 = DeepReadonly540>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion540 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha540 = Extract; -type ExcludeZulu540 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA540 { width: number; height: number; depth: number } -interface ShapeB540 { color: string; opacity: number; blend: string } -interface ShapeC540 { x: number; y: number; z: number; w: number } -interface ShapeD540 { label: string; title: string; summary: string } - -type Combined540 = ShapeA540 & ShapeB540 & ShapeC540 & ShapeD540; -type OptionalAll540 = { [K in keyof Combined540]?: Combined540[K] }; -type RequiredAll540 = { [K in keyof Combined540]-?: Combined540[K] }; -type ReadonlyAll540 = { readonly [K in keyof Combined540]: Combined540[K] }; -type NullableAll540 = { [K in keyof Combined540]: Combined540[K] | null }; +type EV_0540 = Val_0540; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString540 = T extends string ? true : false; -type IsNumber540 = T extends number ? true : false; -type TypeName540 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames540 = { - [K in keyof BigRecord540]: TypeName540; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb540 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource540 = "user" | "post" | "comment" | "tag" | "category"; -type Action540 = `${Verb540}_${Resource540}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise540 = T extends Promise ? UnwrapPromise540 : T; -type UnwrapArray540 = T extends (infer U)[] ? UnwrapArray540 : T; -type Head540 = T extends [infer H, ...infer _] ? H : never; -type Tail540 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation540 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation540>] - : never; +interface Registry_05_40 { + entities: Map; + validators: EV_0540; + paths: Set; + merged: DeepMerge_0540; +} -type SmallUnion540 = "a" | "b" | "c" | "d"; -type AllPerms540 = Permutation540; +type CK_0540 = `p05.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig540, - Flat540, - FR540, - BigUnion540, - ExtractAlpha540, - ExcludeZulu540, - OptionalAll540, - RequiredAll540, - ReadonlyAll540, - NullableAll540, - TypeNames540, - Action540, - AllPerms540, -}; +export type { Entity_05_40, Registry_05_40, CK_0540, EP_0540, EV_0540, DeepMerge_0540 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts index 75bf0e66..b5c20393 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-41.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-41 (seed 541) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-41 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0541 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0541 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord541 { - a541: { x: number; y: string; z: boolean }; - b541: { p: string[]; q: Record }; - c541: { nested: { deep: { deeper: { deepest: string } } } }; - d541: number; - e541: string; - f541: boolean; - g541: null; - h541: undefined; - i541: bigint; - j541: symbol; +interface Entity_05_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_41 | null; children: Entity_05_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0541: number; y0541: string; z0541: boolean }; } -type PartialBig541 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten541 = T extends Array ? Flatten541 : T; -type Nested541 = number[][][][][][][][][][]; -type Flat541 = Flatten541; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly541 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly541 : T[K]; -}; -type DeepRequired541 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired541 : T[K]; +type Path_0541 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0541}` }[keyof T & string] : never; +type EP_0541 = Path_0541; + +type Val_0541 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0541 } + : T[K] extends object ? { t: 'o'; props: Val_0541 } + : { t: 'u' }; }; -type FR541 = DeepReadonly541>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion541 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha541 = Extract; -type ExcludeZulu541 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA541 { width: number; height: number; depth: number } -interface ShapeB541 { color: string; opacity: number; blend: string } -interface ShapeC541 { x: number; y: number; z: number; w: number } -interface ShapeD541 { label: string; title: string; summary: string } - -type Combined541 = ShapeA541 & ShapeB541 & ShapeC541 & ShapeD541; -type OptionalAll541 = { [K in keyof Combined541]?: Combined541[K] }; -type RequiredAll541 = { [K in keyof Combined541]-?: Combined541[K] }; -type ReadonlyAll541 = { readonly [K in keyof Combined541]: Combined541[K] }; -type NullableAll541 = { [K in keyof Combined541]: Combined541[K] | null }; +type EV_0541 = Val_0541; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString541 = T extends string ? true : false; -type IsNumber541 = T extends number ? true : false; -type TypeName541 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames541 = { - [K in keyof BigRecord541]: TypeName541; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb541 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource541 = "user" | "post" | "comment" | "tag" | "category"; -type Action541 = `${Verb541}_${Resource541}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise541 = T extends Promise ? UnwrapPromise541 : T; -type UnwrapArray541 = T extends (infer U)[] ? UnwrapArray541 : T; -type Head541 = T extends [infer H, ...infer _] ? H : never; -type Tail541 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation541 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation541>] - : never; +interface Registry_05_41 { + entities: Map; + validators: EV_0541; + paths: Set; + merged: DeepMerge_0541; +} -type SmallUnion541 = "a" | "b" | "c" | "d"; -type AllPerms541 = Permutation541; +type CK_0541 = `p05.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig541, - Flat541, - FR541, - BigUnion541, - ExtractAlpha541, - ExcludeZulu541, - OptionalAll541, - RequiredAll541, - ReadonlyAll541, - NullableAll541, - TypeNames541, - Action541, - AllPerms541, -}; +export type { Entity_05_41, Registry_05_41, CK_0541, EP_0541, EV_0541, DeepMerge_0541 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts index 82237cd7..31a9fe82 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-42.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-42 (seed 542) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-42 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0542 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0542 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord542 { - a542: { x: number; y: string; z: boolean }; - b542: { p: string[]; q: Record }; - c542: { nested: { deep: { deeper: { deepest: string } } } }; - d542: number; - e542: string; - f542: boolean; - g542: null; - h542: undefined; - i542: bigint; - j542: symbol; +interface Entity_05_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_42 | null; children: Entity_05_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0542: number; y0542: string; z0542: boolean }; } -type PartialBig542 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten542 = T extends Array ? Flatten542 : T; -type Nested542 = number[][][][][][][][][][]; -type Flat542 = Flatten542; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly542 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly542 : T[K]; -}; -type DeepRequired542 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired542 : T[K]; +type Path_0542 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0542}` }[keyof T & string] : never; +type EP_0542 = Path_0542; + +type Val_0542 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0542 } + : T[K] extends object ? { t: 'o'; props: Val_0542 } + : { t: 'u' }; }; -type FR542 = DeepReadonly542>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion542 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha542 = Extract; -type ExcludeZulu542 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA542 { width: number; height: number; depth: number } -interface ShapeB542 { color: string; opacity: number; blend: string } -interface ShapeC542 { x: number; y: number; z: number; w: number } -interface ShapeD542 { label: string; title: string; summary: string } - -type Combined542 = ShapeA542 & ShapeB542 & ShapeC542 & ShapeD542; -type OptionalAll542 = { [K in keyof Combined542]?: Combined542[K] }; -type RequiredAll542 = { [K in keyof Combined542]-?: Combined542[K] }; -type ReadonlyAll542 = { readonly [K in keyof Combined542]: Combined542[K] }; -type NullableAll542 = { [K in keyof Combined542]: Combined542[K] | null }; +type EV_0542 = Val_0542; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString542 = T extends string ? true : false; -type IsNumber542 = T extends number ? true : false; -type TypeName542 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames542 = { - [K in keyof BigRecord542]: TypeName542; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb542 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource542 = "user" | "post" | "comment" | "tag" | "category"; -type Action542 = `${Verb542}_${Resource542}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise542 = T extends Promise ? UnwrapPromise542 : T; -type UnwrapArray542 = T extends (infer U)[] ? UnwrapArray542 : T; -type Head542 = T extends [infer H, ...infer _] ? H : never; -type Tail542 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation542 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation542>] - : never; +interface Registry_05_42 { + entities: Map; + validators: EV_0542; + paths: Set; + merged: DeepMerge_0542; +} -type SmallUnion542 = "a" | "b" | "c" | "d"; -type AllPerms542 = Permutation542; +type CK_0542 = `p05.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig542, - Flat542, - FR542, - BigUnion542, - ExtractAlpha542, - ExcludeZulu542, - OptionalAll542, - RequiredAll542, - ReadonlyAll542, - NullableAll542, - TypeNames542, - Action542, - AllPerms542, -}; +export type { Entity_05_42, Registry_05_42, CK_0542, EP_0542, EV_0542, DeepMerge_0542 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts index 36ee3f68..d27a2cd3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-43.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-43 (seed 543) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-43 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0543 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0543 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord543 { - a543: { x: number; y: string; z: boolean }; - b543: { p: string[]; q: Record }; - c543: { nested: { deep: { deeper: { deepest: string } } } }; - d543: number; - e543: string; - f543: boolean; - g543: null; - h543: undefined; - i543: bigint; - j543: symbol; +interface Entity_05_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_43 | null; children: Entity_05_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0543: number; y0543: string; z0543: boolean }; } -type PartialBig543 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten543 = T extends Array ? Flatten543 : T; -type Nested543 = number[][][][][][][][][][]; -type Flat543 = Flatten543; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly543 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly543 : T[K]; -}; -type DeepRequired543 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired543 : T[K]; +type Path_0543 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0543}` }[keyof T & string] : never; +type EP_0543 = Path_0543; + +type Val_0543 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0543 } + : T[K] extends object ? { t: 'o'; props: Val_0543 } + : { t: 'u' }; }; -type FR543 = DeepReadonly543>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion543 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha543 = Extract; -type ExcludeZulu543 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA543 { width: number; height: number; depth: number } -interface ShapeB543 { color: string; opacity: number; blend: string } -interface ShapeC543 { x: number; y: number; z: number; w: number } -interface ShapeD543 { label: string; title: string; summary: string } - -type Combined543 = ShapeA543 & ShapeB543 & ShapeC543 & ShapeD543; -type OptionalAll543 = { [K in keyof Combined543]?: Combined543[K] }; -type RequiredAll543 = { [K in keyof Combined543]-?: Combined543[K] }; -type ReadonlyAll543 = { readonly [K in keyof Combined543]: Combined543[K] }; -type NullableAll543 = { [K in keyof Combined543]: Combined543[K] | null }; +type EV_0543 = Val_0543; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString543 = T extends string ? true : false; -type IsNumber543 = T extends number ? true : false; -type TypeName543 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames543 = { - [K in keyof BigRecord543]: TypeName543; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb543 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource543 = "user" | "post" | "comment" | "tag" | "category"; -type Action543 = `${Verb543}_${Resource543}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise543 = T extends Promise ? UnwrapPromise543 : T; -type UnwrapArray543 = T extends (infer U)[] ? UnwrapArray543 : T; -type Head543 = T extends [infer H, ...infer _] ? H : never; -type Tail543 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation543 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation543>] - : never; +interface Registry_05_43 { + entities: Map; + validators: EV_0543; + paths: Set; + merged: DeepMerge_0543; +} -type SmallUnion543 = "a" | "b" | "c" | "d"; -type AllPerms543 = Permutation543; +type CK_0543 = `p05.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig543, - Flat543, - FR543, - BigUnion543, - ExtractAlpha543, - ExcludeZulu543, - OptionalAll543, - RequiredAll543, - ReadonlyAll543, - NullableAll543, - TypeNames543, - Action543, - AllPerms543, -}; +export type { Entity_05_43, Registry_05_43, CK_0543, EP_0543, EV_0543, DeepMerge_0543 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts index db69deb7..e6890fe3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-44.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-44 (seed 544) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-44 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0544 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0544 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord544 { - a544: { x: number; y: string; z: boolean }; - b544: { p: string[]; q: Record }; - c544: { nested: { deep: { deeper: { deepest: string } } } }; - d544: number; - e544: string; - f544: boolean; - g544: null; - h544: undefined; - i544: bigint; - j544: symbol; +interface Entity_05_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_44 | null; children: Entity_05_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0544: number; y0544: string; z0544: boolean }; } -type PartialBig544 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten544 = T extends Array ? Flatten544 : T; -type Nested544 = number[][][][][][][][][][]; -type Flat544 = Flatten544; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly544 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly544 : T[K]; -}; -type DeepRequired544 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired544 : T[K]; +type Path_0544 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0544}` }[keyof T & string] : never; +type EP_0544 = Path_0544; + +type Val_0544 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0544 } + : T[K] extends object ? { t: 'o'; props: Val_0544 } + : { t: 'u' }; }; -type FR544 = DeepReadonly544>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion544 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha544 = Extract; -type ExcludeZulu544 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA544 { width: number; height: number; depth: number } -interface ShapeB544 { color: string; opacity: number; blend: string } -interface ShapeC544 { x: number; y: number; z: number; w: number } -interface ShapeD544 { label: string; title: string; summary: string } - -type Combined544 = ShapeA544 & ShapeB544 & ShapeC544 & ShapeD544; -type OptionalAll544 = { [K in keyof Combined544]?: Combined544[K] }; -type RequiredAll544 = { [K in keyof Combined544]-?: Combined544[K] }; -type ReadonlyAll544 = { readonly [K in keyof Combined544]: Combined544[K] }; -type NullableAll544 = { [K in keyof Combined544]: Combined544[K] | null }; +type EV_0544 = Val_0544; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString544 = T extends string ? true : false; -type IsNumber544 = T extends number ? true : false; -type TypeName544 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames544 = { - [K in keyof BigRecord544]: TypeName544; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb544 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource544 = "user" | "post" | "comment" | "tag" | "category"; -type Action544 = `${Verb544}_${Resource544}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise544 = T extends Promise ? UnwrapPromise544 : T; -type UnwrapArray544 = T extends (infer U)[] ? UnwrapArray544 : T; -type Head544 = T extends [infer H, ...infer _] ? H : never; -type Tail544 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation544 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation544>] - : never; +interface Registry_05_44 { + entities: Map; + validators: EV_0544; + paths: Set; + merged: DeepMerge_0544; +} -type SmallUnion544 = "a" | "b" | "c" | "d"; -type AllPerms544 = Permutation544; +type CK_0544 = `p05.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig544, - Flat544, - FR544, - BigUnion544, - ExtractAlpha544, - ExcludeZulu544, - OptionalAll544, - RequiredAll544, - ReadonlyAll544, - NullableAll544, - TypeNames544, - Action544, - AllPerms544, -}; +export type { Entity_05_44, Registry_05_44, CK_0544, EP_0544, EV_0544, DeepMerge_0544 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts index ad594ed4..5f90bf5b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-45.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-45 (seed 545) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-45 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0545 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0545 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord545 { - a545: { x: number; y: string; z: boolean }; - b545: { p: string[]; q: Record }; - c545: { nested: { deep: { deeper: { deepest: string } } } }; - d545: number; - e545: string; - f545: boolean; - g545: null; - h545: undefined; - i545: bigint; - j545: symbol; +interface Entity_05_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_45 | null; children: Entity_05_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0545: number; y0545: string; z0545: boolean }; } -type PartialBig545 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten545 = T extends Array ? Flatten545 : T; -type Nested545 = number[][][][][][][][][][]; -type Flat545 = Flatten545; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly545 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly545 : T[K]; -}; -type DeepRequired545 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired545 : T[K]; +type Path_0545 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0545}` }[keyof T & string] : never; +type EP_0545 = Path_0545; + +type Val_0545 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0545 } + : T[K] extends object ? { t: 'o'; props: Val_0545 } + : { t: 'u' }; }; -type FR545 = DeepReadonly545>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion545 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha545 = Extract; -type ExcludeZulu545 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA545 { width: number; height: number; depth: number } -interface ShapeB545 { color: string; opacity: number; blend: string } -interface ShapeC545 { x: number; y: number; z: number; w: number } -interface ShapeD545 { label: string; title: string; summary: string } - -type Combined545 = ShapeA545 & ShapeB545 & ShapeC545 & ShapeD545; -type OptionalAll545 = { [K in keyof Combined545]?: Combined545[K] }; -type RequiredAll545 = { [K in keyof Combined545]-?: Combined545[K] }; -type ReadonlyAll545 = { readonly [K in keyof Combined545]: Combined545[K] }; -type NullableAll545 = { [K in keyof Combined545]: Combined545[K] | null }; +type EV_0545 = Val_0545; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString545 = T extends string ? true : false; -type IsNumber545 = T extends number ? true : false; -type TypeName545 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames545 = { - [K in keyof BigRecord545]: TypeName545; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb545 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource545 = "user" | "post" | "comment" | "tag" | "category"; -type Action545 = `${Verb545}_${Resource545}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise545 = T extends Promise ? UnwrapPromise545 : T; -type UnwrapArray545 = T extends (infer U)[] ? UnwrapArray545 : T; -type Head545 = T extends [infer H, ...infer _] ? H : never; -type Tail545 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation545 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation545>] - : never; +interface Registry_05_45 { + entities: Map; + validators: EV_0545; + paths: Set; + merged: DeepMerge_0545; +} -type SmallUnion545 = "a" | "b" | "c" | "d"; -type AllPerms545 = Permutation545; +type CK_0545 = `p05.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig545, - Flat545, - FR545, - BigUnion545, - ExtractAlpha545, - ExcludeZulu545, - OptionalAll545, - RequiredAll545, - ReadonlyAll545, - NullableAll545, - TypeNames545, - Action545, - AllPerms545, -}; +export type { Entity_05_45, Registry_05_45, CK_0545, EP_0545, EV_0545, DeepMerge_0545 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts index 7d6a40e9..d452bd10 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-46.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-46 (seed 546) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-46 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0546 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0546 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord546 { - a546: { x: number; y: string; z: boolean }; - b546: { p: string[]; q: Record }; - c546: { nested: { deep: { deeper: { deepest: string } } } }; - d546: number; - e546: string; - f546: boolean; - g546: null; - h546: undefined; - i546: bigint; - j546: symbol; +interface Entity_05_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_46 | null; children: Entity_05_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0546: number; y0546: string; z0546: boolean }; } -type PartialBig546 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten546 = T extends Array ? Flatten546 : T; -type Nested546 = number[][][][][][][][][][]; -type Flat546 = Flatten546; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly546 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly546 : T[K]; -}; -type DeepRequired546 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired546 : T[K]; +type Path_0546 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0546}` }[keyof T & string] : never; +type EP_0546 = Path_0546; + +type Val_0546 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0546 } + : T[K] extends object ? { t: 'o'; props: Val_0546 } + : { t: 'u' }; }; -type FR546 = DeepReadonly546>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion546 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha546 = Extract; -type ExcludeZulu546 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA546 { width: number; height: number; depth: number } -interface ShapeB546 { color: string; opacity: number; blend: string } -interface ShapeC546 { x: number; y: number; z: number; w: number } -interface ShapeD546 { label: string; title: string; summary: string } - -type Combined546 = ShapeA546 & ShapeB546 & ShapeC546 & ShapeD546; -type OptionalAll546 = { [K in keyof Combined546]?: Combined546[K] }; -type RequiredAll546 = { [K in keyof Combined546]-?: Combined546[K] }; -type ReadonlyAll546 = { readonly [K in keyof Combined546]: Combined546[K] }; -type NullableAll546 = { [K in keyof Combined546]: Combined546[K] | null }; +type EV_0546 = Val_0546; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString546 = T extends string ? true : false; -type IsNumber546 = T extends number ? true : false; -type TypeName546 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames546 = { - [K in keyof BigRecord546]: TypeName546; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb546 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource546 = "user" | "post" | "comment" | "tag" | "category"; -type Action546 = `${Verb546}_${Resource546}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise546 = T extends Promise ? UnwrapPromise546 : T; -type UnwrapArray546 = T extends (infer U)[] ? UnwrapArray546 : T; -type Head546 = T extends [infer H, ...infer _] ? H : never; -type Tail546 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation546 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation546>] - : never; +interface Registry_05_46 { + entities: Map; + validators: EV_0546; + paths: Set; + merged: DeepMerge_0546; +} -type SmallUnion546 = "a" | "b" | "c" | "d"; -type AllPerms546 = Permutation546; +type CK_0546 = `p05.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig546, - Flat546, - FR546, - BigUnion546, - ExtractAlpha546, - ExcludeZulu546, - OptionalAll546, - RequiredAll546, - ReadonlyAll546, - NullableAll546, - TypeNames546, - Action546, - AllPerms546, -}; +export type { Entity_05_46, Registry_05_46, CK_0546, EP_0546, EV_0546, DeepMerge_0546 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts index 3d8014f9..9a065969 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-47.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-47 (seed 547) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-47 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0547 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0547 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord547 { - a547: { x: number; y: string; z: boolean }; - b547: { p: string[]; q: Record }; - c547: { nested: { deep: { deeper: { deepest: string } } } }; - d547: number; - e547: string; - f547: boolean; - g547: null; - h547: undefined; - i547: bigint; - j547: symbol; +interface Entity_05_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_47 | null; children: Entity_05_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0547: number; y0547: string; z0547: boolean }; } -type PartialBig547 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten547 = T extends Array ? Flatten547 : T; -type Nested547 = number[][][][][][][][][][]; -type Flat547 = Flatten547; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly547 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly547 : T[K]; -}; -type DeepRequired547 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired547 : T[K]; +type Path_0547 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0547}` }[keyof T & string] : never; +type EP_0547 = Path_0547; + +type Val_0547 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0547 } + : T[K] extends object ? { t: 'o'; props: Val_0547 } + : { t: 'u' }; }; -type FR547 = DeepReadonly547>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion547 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha547 = Extract; -type ExcludeZulu547 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA547 { width: number; height: number; depth: number } -interface ShapeB547 { color: string; opacity: number; blend: string } -interface ShapeC547 { x: number; y: number; z: number; w: number } -interface ShapeD547 { label: string; title: string; summary: string } - -type Combined547 = ShapeA547 & ShapeB547 & ShapeC547 & ShapeD547; -type OptionalAll547 = { [K in keyof Combined547]?: Combined547[K] }; -type RequiredAll547 = { [K in keyof Combined547]-?: Combined547[K] }; -type ReadonlyAll547 = { readonly [K in keyof Combined547]: Combined547[K] }; -type NullableAll547 = { [K in keyof Combined547]: Combined547[K] | null }; +type EV_0547 = Val_0547; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString547 = T extends string ? true : false; -type IsNumber547 = T extends number ? true : false; -type TypeName547 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames547 = { - [K in keyof BigRecord547]: TypeName547; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb547 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource547 = "user" | "post" | "comment" | "tag" | "category"; -type Action547 = `${Verb547}_${Resource547}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise547 = T extends Promise ? UnwrapPromise547 : T; -type UnwrapArray547 = T extends (infer U)[] ? UnwrapArray547 : T; -type Head547 = T extends [infer H, ...infer _] ? H : never; -type Tail547 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation547 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation547>] - : never; +interface Registry_05_47 { + entities: Map; + validators: EV_0547; + paths: Set; + merged: DeepMerge_0547; +} -type SmallUnion547 = "a" | "b" | "c" | "d"; -type AllPerms547 = Permutation547; +type CK_0547 = `p05.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig547, - Flat547, - FR547, - BigUnion547, - ExtractAlpha547, - ExcludeZulu547, - OptionalAll547, - RequiredAll547, - ReadonlyAll547, - NullableAll547, - TypeNames547, - Action547, - AllPerms547, -}; +export type { Entity_05_47, Registry_05_47, CK_0547, EP_0547, EV_0547, DeepMerge_0547 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts index f3f320ae..41b41f64 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-48.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-48 (seed 548) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-48 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0548 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0548 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord548 { - a548: { x: number; y: string; z: boolean }; - b548: { p: string[]; q: Record }; - c548: { nested: { deep: { deeper: { deepest: string } } } }; - d548: number; - e548: string; - f548: boolean; - g548: null; - h548: undefined; - i548: bigint; - j548: symbol; +interface Entity_05_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_48 | null; children: Entity_05_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0548: number; y0548: string; z0548: boolean }; } -type PartialBig548 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten548 = T extends Array ? Flatten548 : T; -type Nested548 = number[][][][][][][][][][]; -type Flat548 = Flatten548; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly548 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly548 : T[K]; -}; -type DeepRequired548 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired548 : T[K]; +type Path_0548 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0548}` }[keyof T & string] : never; +type EP_0548 = Path_0548; + +type Val_0548 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0548 } + : T[K] extends object ? { t: 'o'; props: Val_0548 } + : { t: 'u' }; }; -type FR548 = DeepReadonly548>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion548 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha548 = Extract; -type ExcludeZulu548 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA548 { width: number; height: number; depth: number } -interface ShapeB548 { color: string; opacity: number; blend: string } -interface ShapeC548 { x: number; y: number; z: number; w: number } -interface ShapeD548 { label: string; title: string; summary: string } - -type Combined548 = ShapeA548 & ShapeB548 & ShapeC548 & ShapeD548; -type OptionalAll548 = { [K in keyof Combined548]?: Combined548[K] }; -type RequiredAll548 = { [K in keyof Combined548]-?: Combined548[K] }; -type ReadonlyAll548 = { readonly [K in keyof Combined548]: Combined548[K] }; -type NullableAll548 = { [K in keyof Combined548]: Combined548[K] | null }; +type EV_0548 = Val_0548; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString548 = T extends string ? true : false; -type IsNumber548 = T extends number ? true : false; -type TypeName548 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames548 = { - [K in keyof BigRecord548]: TypeName548; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb548 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource548 = "user" | "post" | "comment" | "tag" | "category"; -type Action548 = `${Verb548}_${Resource548}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise548 = T extends Promise ? UnwrapPromise548 : T; -type UnwrapArray548 = T extends (infer U)[] ? UnwrapArray548 : T; -type Head548 = T extends [infer H, ...infer _] ? H : never; -type Tail548 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation548 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation548>] - : never; +interface Registry_05_48 { + entities: Map; + validators: EV_0548; + paths: Set; + merged: DeepMerge_0548; +} -type SmallUnion548 = "a" | "b" | "c" | "d"; -type AllPerms548 = Permutation548; +type CK_0548 = `p05.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig548, - Flat548, - FR548, - BigUnion548, - ExtractAlpha548, - ExcludeZulu548, - OptionalAll548, - RequiredAll548, - ReadonlyAll548, - NullableAll548, - TypeNames548, - Action548, - AllPerms548, -}; +export type { Entity_05_48, Registry_05_48, CK_0548, EP_0548, EV_0548, DeepMerge_0548 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts index caecd666..8b677fb4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-49.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-49 (seed 549) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-49 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0549 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0549 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord549 { - a549: { x: number; y: string; z: boolean }; - b549: { p: string[]; q: Record }; - c549: { nested: { deep: { deeper: { deepest: string } } } }; - d549: number; - e549: string; - f549: boolean; - g549: null; - h549: undefined; - i549: bigint; - j549: symbol; +interface Entity_05_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_49 | null; children: Entity_05_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0549: number; y0549: string; z0549: boolean }; } -type PartialBig549 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten549 = T extends Array ? Flatten549 : T; -type Nested549 = number[][][][][][][][][][]; -type Flat549 = Flatten549; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly549 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly549 : T[K]; -}; -type DeepRequired549 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired549 : T[K]; +type Path_0549 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0549}` }[keyof T & string] : never; +type EP_0549 = Path_0549; + +type Val_0549 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0549 } + : T[K] extends object ? { t: 'o'; props: Val_0549 } + : { t: 'u' }; }; -type FR549 = DeepReadonly549>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion549 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha549 = Extract; -type ExcludeZulu549 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA549 { width: number; height: number; depth: number } -interface ShapeB549 { color: string; opacity: number; blend: string } -interface ShapeC549 { x: number; y: number; z: number; w: number } -interface ShapeD549 { label: string; title: string; summary: string } - -type Combined549 = ShapeA549 & ShapeB549 & ShapeC549 & ShapeD549; -type OptionalAll549 = { [K in keyof Combined549]?: Combined549[K] }; -type RequiredAll549 = { [K in keyof Combined549]-?: Combined549[K] }; -type ReadonlyAll549 = { readonly [K in keyof Combined549]: Combined549[K] }; -type NullableAll549 = { [K in keyof Combined549]: Combined549[K] | null }; +type EV_0549 = Val_0549; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString549 = T extends string ? true : false; -type IsNumber549 = T extends number ? true : false; -type TypeName549 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames549 = { - [K in keyof BigRecord549]: TypeName549; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb549 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource549 = "user" | "post" | "comment" | "tag" | "category"; -type Action549 = `${Verb549}_${Resource549}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise549 = T extends Promise ? UnwrapPromise549 : T; -type UnwrapArray549 = T extends (infer U)[] ? UnwrapArray549 : T; -type Head549 = T extends [infer H, ...infer _] ? H : never; -type Tail549 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation549 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation549>] - : never; +interface Registry_05_49 { + entities: Map; + validators: EV_0549; + paths: Set; + merged: DeepMerge_0549; +} -type SmallUnion549 = "a" | "b" | "c" | "d"; -type AllPerms549 = Permutation549; +type CK_0549 = `p05.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig549, - Flat549, - FR549, - BigUnion549, - ExtractAlpha549, - ExcludeZulu549, - OptionalAll549, - RequiredAll549, - ReadonlyAll549, - NullableAll549, - TypeNames549, - Action549, - AllPerms549, -}; +export type { Entity_05_49, Registry_05_49, CK_0549, EP_0549, EV_0549, DeepMerge_0549 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts index 9975d32c..4fa60c72 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-05/types-50.ts @@ -1,125 +1,50 @@ -// pkg-05 / types-50 (seed 550) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-05/types-50 - heavy interconnected types + +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; +import type { Entity_2_01, Registry_2_01 } from '../pkg-02/types-01'; +import type { Entity_2_10, Registry_2_10 } from '../pkg-02/types-10'; +import type { Entity_2_20, Registry_2_20 } from '../pkg-02/types-20'; + +type DeepMerge_0550 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0550 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord550 { - a550: { x: number; y: string; z: boolean }; - b550: { p: string[]; q: Record }; - c550: { nested: { deep: { deeper: { deepest: string } } } }; - d550: number; - e550: string; - f550: boolean; - g550: null; - h550: undefined; - i550: bigint; - j550: symbol; +interface Entity_05_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_05_50 | null; children: Entity_05_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0550: number; y0550: string; z0550: boolean }; } -type PartialBig550 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten550 = T extends Array ? Flatten550 : T; -type Nested550 = number[][][][][][][][][][]; -type Flat550 = Flatten550; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly550 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly550 : T[K]; -}; -type DeepRequired550 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired550 : T[K]; +type Path_0550 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0550}` }[keyof T & string] : never; +type EP_0550 = Path_0550; + +type Val_0550 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0550 } + : T[K] extends object ? { t: 'o'; props: Val_0550 } + : { t: 'u' }; }; -type FR550 = DeepReadonly550>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion550 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha550 = Extract; -type ExcludeZulu550 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA550 { width: number; height: number; depth: number } -interface ShapeB550 { color: string; opacity: number; blend: string } -interface ShapeC550 { x: number; y: number; z: number; w: number } -interface ShapeD550 { label: string; title: string; summary: string } - -type Combined550 = ShapeA550 & ShapeB550 & ShapeC550 & ShapeD550; -type OptionalAll550 = { [K in keyof Combined550]?: Combined550[K] }; -type RequiredAll550 = { [K in keyof Combined550]-?: Combined550[K] }; -type ReadonlyAll550 = { readonly [K in keyof Combined550]: Combined550[K] }; -type NullableAll550 = { [K in keyof Combined550]: Combined550[K] | null }; +type EV_0550 = Val_0550; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString550 = T extends string ? true : false; -type IsNumber550 = T extends number ? true : false; -type TypeName550 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames550 = { - [K in keyof BigRecord550]: TypeName550; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb550 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource550 = "user" | "post" | "comment" | "tag" | "category"; -type Action550 = `${Verb550}_${Resource550}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise550 = T extends Promise ? UnwrapPromise550 : T; -type UnwrapArray550 = T extends (infer U)[] ? UnwrapArray550 : T; -type Head550 = T extends [infer H, ...infer _] ? H : never; -type Tail550 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation550 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation550>] - : never; +interface Registry_05_50 { + entities: Map; + validators: EV_0550; + paths: Set; + merged: DeepMerge_0550; +} -type SmallUnion550 = "a" | "b" | "c" | "d"; -type AllPerms550 = Permutation550; +type CK_0550 = `p05.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig550, - Flat550, - FR550, - BigUnion550, - ExtractAlpha550, - ExcludeZulu550, - OptionalAll550, - RequiredAll550, - ReadonlyAll550, - NullableAll550, - TypeNames550, - Action550, - AllPerms550, -}; +export type { Entity_05_50, Registry_05_50, CK_0550, EP_0550, EV_0550, DeepMerge_0550 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts index 878e1cd7..5e03f960 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-01.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-01 (seed 601) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-01 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0601 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0601 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord601 { - a601: { x: number; y: string; z: boolean }; - b601: { p: string[]; q: Record }; - c601: { nested: { deep: { deeper: { deepest: string } } } }; - d601: number; - e601: string; - f601: boolean; - g601: null; - h601: undefined; - i601: bigint; - j601: symbol; +interface Entity_06_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_01 | null; children: Entity_06_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0601: number; y0601: string; z0601: boolean }; } -type PartialBig601 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten601 = T extends Array ? Flatten601 : T; -type Nested601 = number[][][][][][][][][][]; -type Flat601 = Flatten601; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly601 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly601 : T[K]; -}; -type DeepRequired601 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired601 : T[K]; +type Path_0601 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0601}` }[keyof T & string] : never; +type EP_0601 = Path_0601; + +type Val_0601 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0601 } + : T[K] extends object ? { t: 'o'; props: Val_0601 } + : { t: 'u' }; }; -type FR601 = DeepReadonly601>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion601 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha601 = Extract; -type ExcludeZulu601 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA601 { width: number; height: number; depth: number } -interface ShapeB601 { color: string; opacity: number; blend: string } -interface ShapeC601 { x: number; y: number; z: number; w: number } -interface ShapeD601 { label: string; title: string; summary: string } - -type Combined601 = ShapeA601 & ShapeB601 & ShapeC601 & ShapeD601; -type OptionalAll601 = { [K in keyof Combined601]?: Combined601[K] }; -type RequiredAll601 = { [K in keyof Combined601]-?: Combined601[K] }; -type ReadonlyAll601 = { readonly [K in keyof Combined601]: Combined601[K] }; -type NullableAll601 = { [K in keyof Combined601]: Combined601[K] | null }; +type EV_0601 = Val_0601; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString601 = T extends string ? true : false; -type IsNumber601 = T extends number ? true : false; -type TypeName601 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames601 = { - [K in keyof BigRecord601]: TypeName601; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb601 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource601 = "user" | "post" | "comment" | "tag" | "category"; -type Action601 = `${Verb601}_${Resource601}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise601 = T extends Promise ? UnwrapPromise601 : T; -type UnwrapArray601 = T extends (infer U)[] ? UnwrapArray601 : T; -type Head601 = T extends [infer H, ...infer _] ? H : never; -type Tail601 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation601 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation601>] - : never; +interface Registry_06_01 { + entities: Map; + validators: EV_0601; + paths: Set; + merged: DeepMerge_0601; +} -type SmallUnion601 = "a" | "b" | "c" | "d"; -type AllPerms601 = Permutation601; +type CK_0601 = `p06.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig601, - Flat601, - FR601, - BigUnion601, - ExtractAlpha601, - ExcludeZulu601, - OptionalAll601, - RequiredAll601, - ReadonlyAll601, - NullableAll601, - TypeNames601, - Action601, - AllPerms601, -}; +export type { Entity_06_01, Registry_06_01, CK_0601, EP_0601, EV_0601, DeepMerge_0601 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts index 2ff3431f..4296a4be 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-02.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-02 (seed 602) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-02 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0602 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0602 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord602 { - a602: { x: number; y: string; z: boolean }; - b602: { p: string[]; q: Record }; - c602: { nested: { deep: { deeper: { deepest: string } } } }; - d602: number; - e602: string; - f602: boolean; - g602: null; - h602: undefined; - i602: bigint; - j602: symbol; +interface Entity_06_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_02 | null; children: Entity_06_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0602: number; y0602: string; z0602: boolean }; } -type PartialBig602 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten602 = T extends Array ? Flatten602 : T; -type Nested602 = number[][][][][][][][][][]; -type Flat602 = Flatten602; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly602 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly602 : T[K]; -}; -type DeepRequired602 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired602 : T[K]; +type Path_0602 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0602}` }[keyof T & string] : never; +type EP_0602 = Path_0602; + +type Val_0602 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0602 } + : T[K] extends object ? { t: 'o'; props: Val_0602 } + : { t: 'u' }; }; -type FR602 = DeepReadonly602>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion602 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha602 = Extract; -type ExcludeZulu602 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA602 { width: number; height: number; depth: number } -interface ShapeB602 { color: string; opacity: number; blend: string } -interface ShapeC602 { x: number; y: number; z: number; w: number } -interface ShapeD602 { label: string; title: string; summary: string } - -type Combined602 = ShapeA602 & ShapeB602 & ShapeC602 & ShapeD602; -type OptionalAll602 = { [K in keyof Combined602]?: Combined602[K] }; -type RequiredAll602 = { [K in keyof Combined602]-?: Combined602[K] }; -type ReadonlyAll602 = { readonly [K in keyof Combined602]: Combined602[K] }; -type NullableAll602 = { [K in keyof Combined602]: Combined602[K] | null }; +type EV_0602 = Val_0602; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString602 = T extends string ? true : false; -type IsNumber602 = T extends number ? true : false; -type TypeName602 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames602 = { - [K in keyof BigRecord602]: TypeName602; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb602 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource602 = "user" | "post" | "comment" | "tag" | "category"; -type Action602 = `${Verb602}_${Resource602}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise602 = T extends Promise ? UnwrapPromise602 : T; -type UnwrapArray602 = T extends (infer U)[] ? UnwrapArray602 : T; -type Head602 = T extends [infer H, ...infer _] ? H : never; -type Tail602 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation602 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation602>] - : never; +interface Registry_06_02 { + entities: Map; + validators: EV_0602; + paths: Set; + merged: DeepMerge_0602; +} -type SmallUnion602 = "a" | "b" | "c" | "d"; -type AllPerms602 = Permutation602; +type CK_0602 = `p06.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig602, - Flat602, - FR602, - BigUnion602, - ExtractAlpha602, - ExcludeZulu602, - OptionalAll602, - RequiredAll602, - ReadonlyAll602, - NullableAll602, - TypeNames602, - Action602, - AllPerms602, -}; +export type { Entity_06_02, Registry_06_02, CK_0602, EP_0602, EV_0602, DeepMerge_0602 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts index 523830ad..550f5e2a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-03.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-03 (seed 603) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-03 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0603 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0603 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord603 { - a603: { x: number; y: string; z: boolean }; - b603: { p: string[]; q: Record }; - c603: { nested: { deep: { deeper: { deepest: string } } } }; - d603: number; - e603: string; - f603: boolean; - g603: null; - h603: undefined; - i603: bigint; - j603: symbol; +interface Entity_06_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_03 | null; children: Entity_06_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0603: number; y0603: string; z0603: boolean }; } -type PartialBig603 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten603 = T extends Array ? Flatten603 : T; -type Nested603 = number[][][][][][][][][][]; -type Flat603 = Flatten603; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly603 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly603 : T[K]; -}; -type DeepRequired603 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired603 : T[K]; +type Path_0603 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0603}` }[keyof T & string] : never; +type EP_0603 = Path_0603; + +type Val_0603 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0603 } + : T[K] extends object ? { t: 'o'; props: Val_0603 } + : { t: 'u' }; }; -type FR603 = DeepReadonly603>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion603 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha603 = Extract; -type ExcludeZulu603 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA603 { width: number; height: number; depth: number } -interface ShapeB603 { color: string; opacity: number; blend: string } -interface ShapeC603 { x: number; y: number; z: number; w: number } -interface ShapeD603 { label: string; title: string; summary: string } - -type Combined603 = ShapeA603 & ShapeB603 & ShapeC603 & ShapeD603; -type OptionalAll603 = { [K in keyof Combined603]?: Combined603[K] }; -type RequiredAll603 = { [K in keyof Combined603]-?: Combined603[K] }; -type ReadonlyAll603 = { readonly [K in keyof Combined603]: Combined603[K] }; -type NullableAll603 = { [K in keyof Combined603]: Combined603[K] | null }; +type EV_0603 = Val_0603; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString603 = T extends string ? true : false; -type IsNumber603 = T extends number ? true : false; -type TypeName603 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames603 = { - [K in keyof BigRecord603]: TypeName603; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb603 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource603 = "user" | "post" | "comment" | "tag" | "category"; -type Action603 = `${Verb603}_${Resource603}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise603 = T extends Promise ? UnwrapPromise603 : T; -type UnwrapArray603 = T extends (infer U)[] ? UnwrapArray603 : T; -type Head603 = T extends [infer H, ...infer _] ? H : never; -type Tail603 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation603 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation603>] - : never; +interface Registry_06_03 { + entities: Map; + validators: EV_0603; + paths: Set; + merged: DeepMerge_0603; +} -type SmallUnion603 = "a" | "b" | "c" | "d"; -type AllPerms603 = Permutation603; +type CK_0603 = `p06.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig603, - Flat603, - FR603, - BigUnion603, - ExtractAlpha603, - ExcludeZulu603, - OptionalAll603, - RequiredAll603, - ReadonlyAll603, - NullableAll603, - TypeNames603, - Action603, - AllPerms603, -}; +export type { Entity_06_03, Registry_06_03, CK_0603, EP_0603, EV_0603, DeepMerge_0603 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts index 47a87a3e..9205d7da 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-04.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-04 (seed 604) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-04 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0604 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0604 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord604 { - a604: { x: number; y: string; z: boolean }; - b604: { p: string[]; q: Record }; - c604: { nested: { deep: { deeper: { deepest: string } } } }; - d604: number; - e604: string; - f604: boolean; - g604: null; - h604: undefined; - i604: bigint; - j604: symbol; +interface Entity_06_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_04 | null; children: Entity_06_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0604: number; y0604: string; z0604: boolean }; } -type PartialBig604 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten604 = T extends Array ? Flatten604 : T; -type Nested604 = number[][][][][][][][][][]; -type Flat604 = Flatten604; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly604 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly604 : T[K]; -}; -type DeepRequired604 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired604 : T[K]; +type Path_0604 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0604}` }[keyof T & string] : never; +type EP_0604 = Path_0604; + +type Val_0604 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0604 } + : T[K] extends object ? { t: 'o'; props: Val_0604 } + : { t: 'u' }; }; -type FR604 = DeepReadonly604>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion604 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha604 = Extract; -type ExcludeZulu604 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA604 { width: number; height: number; depth: number } -interface ShapeB604 { color: string; opacity: number; blend: string } -interface ShapeC604 { x: number; y: number; z: number; w: number } -interface ShapeD604 { label: string; title: string; summary: string } - -type Combined604 = ShapeA604 & ShapeB604 & ShapeC604 & ShapeD604; -type OptionalAll604 = { [K in keyof Combined604]?: Combined604[K] }; -type RequiredAll604 = { [K in keyof Combined604]-?: Combined604[K] }; -type ReadonlyAll604 = { readonly [K in keyof Combined604]: Combined604[K] }; -type NullableAll604 = { [K in keyof Combined604]: Combined604[K] | null }; +type EV_0604 = Val_0604; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString604 = T extends string ? true : false; -type IsNumber604 = T extends number ? true : false; -type TypeName604 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames604 = { - [K in keyof BigRecord604]: TypeName604; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb604 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource604 = "user" | "post" | "comment" | "tag" | "category"; -type Action604 = `${Verb604}_${Resource604}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise604 = T extends Promise ? UnwrapPromise604 : T; -type UnwrapArray604 = T extends (infer U)[] ? UnwrapArray604 : T; -type Head604 = T extends [infer H, ...infer _] ? H : never; -type Tail604 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation604 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation604>] - : never; +interface Registry_06_04 { + entities: Map; + validators: EV_0604; + paths: Set; + merged: DeepMerge_0604; +} -type SmallUnion604 = "a" | "b" | "c" | "d"; -type AllPerms604 = Permutation604; +type CK_0604 = `p06.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig604, - Flat604, - FR604, - BigUnion604, - ExtractAlpha604, - ExcludeZulu604, - OptionalAll604, - RequiredAll604, - ReadonlyAll604, - NullableAll604, - TypeNames604, - Action604, - AllPerms604, -}; +export type { Entity_06_04, Registry_06_04, CK_0604, EP_0604, EV_0604, DeepMerge_0604 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts index 6b6c3ee5..5aeadf13 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-05.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-05 (seed 605) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-05 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0605 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0605 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord605 { - a605: { x: number; y: string; z: boolean }; - b605: { p: string[]; q: Record }; - c605: { nested: { deep: { deeper: { deepest: string } } } }; - d605: number; - e605: string; - f605: boolean; - g605: null; - h605: undefined; - i605: bigint; - j605: symbol; +interface Entity_06_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_05 | null; children: Entity_06_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0605: number; y0605: string; z0605: boolean }; } -type PartialBig605 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten605 = T extends Array ? Flatten605 : T; -type Nested605 = number[][][][][][][][][][]; -type Flat605 = Flatten605; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly605 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly605 : T[K]; -}; -type DeepRequired605 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired605 : T[K]; +type Path_0605 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0605}` }[keyof T & string] : never; +type EP_0605 = Path_0605; + +type Val_0605 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0605 } + : T[K] extends object ? { t: 'o'; props: Val_0605 } + : { t: 'u' }; }; -type FR605 = DeepReadonly605>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion605 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha605 = Extract; -type ExcludeZulu605 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA605 { width: number; height: number; depth: number } -interface ShapeB605 { color: string; opacity: number; blend: string } -interface ShapeC605 { x: number; y: number; z: number; w: number } -interface ShapeD605 { label: string; title: string; summary: string } - -type Combined605 = ShapeA605 & ShapeB605 & ShapeC605 & ShapeD605; -type OptionalAll605 = { [K in keyof Combined605]?: Combined605[K] }; -type RequiredAll605 = { [K in keyof Combined605]-?: Combined605[K] }; -type ReadonlyAll605 = { readonly [K in keyof Combined605]: Combined605[K] }; -type NullableAll605 = { [K in keyof Combined605]: Combined605[K] | null }; +type EV_0605 = Val_0605; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString605 = T extends string ? true : false; -type IsNumber605 = T extends number ? true : false; -type TypeName605 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames605 = { - [K in keyof BigRecord605]: TypeName605; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb605 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource605 = "user" | "post" | "comment" | "tag" | "category"; -type Action605 = `${Verb605}_${Resource605}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise605 = T extends Promise ? UnwrapPromise605 : T; -type UnwrapArray605 = T extends (infer U)[] ? UnwrapArray605 : T; -type Head605 = T extends [infer H, ...infer _] ? H : never; -type Tail605 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation605 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation605>] - : never; +interface Registry_06_05 { + entities: Map; + validators: EV_0605; + paths: Set; + merged: DeepMerge_0605; +} -type SmallUnion605 = "a" | "b" | "c" | "d"; -type AllPerms605 = Permutation605; +type CK_0605 = `p06.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig605, - Flat605, - FR605, - BigUnion605, - ExtractAlpha605, - ExcludeZulu605, - OptionalAll605, - RequiredAll605, - ReadonlyAll605, - NullableAll605, - TypeNames605, - Action605, - AllPerms605, -}; +export type { Entity_06_05, Registry_06_05, CK_0605, EP_0605, EV_0605, DeepMerge_0605 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts index 7302eb5f..ab4a020a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-06.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-06 (seed 606) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-06 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0606 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0606 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord606 { - a606: { x: number; y: string; z: boolean }; - b606: { p: string[]; q: Record }; - c606: { nested: { deep: { deeper: { deepest: string } } } }; - d606: number; - e606: string; - f606: boolean; - g606: null; - h606: undefined; - i606: bigint; - j606: symbol; +interface Entity_06_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_06 | null; children: Entity_06_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0606: number; y0606: string; z0606: boolean }; } -type PartialBig606 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten606 = T extends Array ? Flatten606 : T; -type Nested606 = number[][][][][][][][][][]; -type Flat606 = Flatten606; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly606 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly606 : T[K]; -}; -type DeepRequired606 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired606 : T[K]; +type Path_0606 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0606}` }[keyof T & string] : never; +type EP_0606 = Path_0606; + +type Val_0606 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0606 } + : T[K] extends object ? { t: 'o'; props: Val_0606 } + : { t: 'u' }; }; -type FR606 = DeepReadonly606>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion606 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha606 = Extract; -type ExcludeZulu606 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA606 { width: number; height: number; depth: number } -interface ShapeB606 { color: string; opacity: number; blend: string } -interface ShapeC606 { x: number; y: number; z: number; w: number } -interface ShapeD606 { label: string; title: string; summary: string } - -type Combined606 = ShapeA606 & ShapeB606 & ShapeC606 & ShapeD606; -type OptionalAll606 = { [K in keyof Combined606]?: Combined606[K] }; -type RequiredAll606 = { [K in keyof Combined606]-?: Combined606[K] }; -type ReadonlyAll606 = { readonly [K in keyof Combined606]: Combined606[K] }; -type NullableAll606 = { [K in keyof Combined606]: Combined606[K] | null }; +type EV_0606 = Val_0606; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString606 = T extends string ? true : false; -type IsNumber606 = T extends number ? true : false; -type TypeName606 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames606 = { - [K in keyof BigRecord606]: TypeName606; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb606 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource606 = "user" | "post" | "comment" | "tag" | "category"; -type Action606 = `${Verb606}_${Resource606}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise606 = T extends Promise ? UnwrapPromise606 : T; -type UnwrapArray606 = T extends (infer U)[] ? UnwrapArray606 : T; -type Head606 = T extends [infer H, ...infer _] ? H : never; -type Tail606 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation606 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation606>] - : never; +interface Registry_06_06 { + entities: Map; + validators: EV_0606; + paths: Set; + merged: DeepMerge_0606; +} -type SmallUnion606 = "a" | "b" | "c" | "d"; -type AllPerms606 = Permutation606; +type CK_0606 = `p06.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig606, - Flat606, - FR606, - BigUnion606, - ExtractAlpha606, - ExcludeZulu606, - OptionalAll606, - RequiredAll606, - ReadonlyAll606, - NullableAll606, - TypeNames606, - Action606, - AllPerms606, -}; +export type { Entity_06_06, Registry_06_06, CK_0606, EP_0606, EV_0606, DeepMerge_0606 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts index 74dd477d..6c9dbf2f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-07.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-07 (seed 607) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-07 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0607 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0607 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord607 { - a607: { x: number; y: string; z: boolean }; - b607: { p: string[]; q: Record }; - c607: { nested: { deep: { deeper: { deepest: string } } } }; - d607: number; - e607: string; - f607: boolean; - g607: null; - h607: undefined; - i607: bigint; - j607: symbol; +interface Entity_06_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_07 | null; children: Entity_06_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0607: number; y0607: string; z0607: boolean }; } -type PartialBig607 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten607 = T extends Array ? Flatten607 : T; -type Nested607 = number[][][][][][][][][][]; -type Flat607 = Flatten607; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly607 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly607 : T[K]; -}; -type DeepRequired607 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired607 : T[K]; +type Path_0607 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0607}` }[keyof T & string] : never; +type EP_0607 = Path_0607; + +type Val_0607 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0607 } + : T[K] extends object ? { t: 'o'; props: Val_0607 } + : { t: 'u' }; }; -type FR607 = DeepReadonly607>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion607 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha607 = Extract; -type ExcludeZulu607 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA607 { width: number; height: number; depth: number } -interface ShapeB607 { color: string; opacity: number; blend: string } -interface ShapeC607 { x: number; y: number; z: number; w: number } -interface ShapeD607 { label: string; title: string; summary: string } - -type Combined607 = ShapeA607 & ShapeB607 & ShapeC607 & ShapeD607; -type OptionalAll607 = { [K in keyof Combined607]?: Combined607[K] }; -type RequiredAll607 = { [K in keyof Combined607]-?: Combined607[K] }; -type ReadonlyAll607 = { readonly [K in keyof Combined607]: Combined607[K] }; -type NullableAll607 = { [K in keyof Combined607]: Combined607[K] | null }; +type EV_0607 = Val_0607; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString607 = T extends string ? true : false; -type IsNumber607 = T extends number ? true : false; -type TypeName607 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames607 = { - [K in keyof BigRecord607]: TypeName607; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb607 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource607 = "user" | "post" | "comment" | "tag" | "category"; -type Action607 = `${Verb607}_${Resource607}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise607 = T extends Promise ? UnwrapPromise607 : T; -type UnwrapArray607 = T extends (infer U)[] ? UnwrapArray607 : T; -type Head607 = T extends [infer H, ...infer _] ? H : never; -type Tail607 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation607 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation607>] - : never; +interface Registry_06_07 { + entities: Map; + validators: EV_0607; + paths: Set; + merged: DeepMerge_0607; +} -type SmallUnion607 = "a" | "b" | "c" | "d"; -type AllPerms607 = Permutation607; +type CK_0607 = `p06.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig607, - Flat607, - FR607, - BigUnion607, - ExtractAlpha607, - ExcludeZulu607, - OptionalAll607, - RequiredAll607, - ReadonlyAll607, - NullableAll607, - TypeNames607, - Action607, - AllPerms607, -}; +export type { Entity_06_07, Registry_06_07, CK_0607, EP_0607, EV_0607, DeepMerge_0607 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts index 2f572696..5ef6b1cf 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-08.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-08 (seed 608) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-08 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0608 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0608 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord608 { - a608: { x: number; y: string; z: boolean }; - b608: { p: string[]; q: Record }; - c608: { nested: { deep: { deeper: { deepest: string } } } }; - d608: number; - e608: string; - f608: boolean; - g608: null; - h608: undefined; - i608: bigint; - j608: symbol; +interface Entity_06_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_08 | null; children: Entity_06_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0608: number; y0608: string; z0608: boolean }; } -type PartialBig608 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten608 = T extends Array ? Flatten608 : T; -type Nested608 = number[][][][][][][][][][]; -type Flat608 = Flatten608; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly608 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly608 : T[K]; -}; -type DeepRequired608 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired608 : T[K]; +type Path_0608 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0608}` }[keyof T & string] : never; +type EP_0608 = Path_0608; + +type Val_0608 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0608 } + : T[K] extends object ? { t: 'o'; props: Val_0608 } + : { t: 'u' }; }; -type FR608 = DeepReadonly608>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion608 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha608 = Extract; -type ExcludeZulu608 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA608 { width: number; height: number; depth: number } -interface ShapeB608 { color: string; opacity: number; blend: string } -interface ShapeC608 { x: number; y: number; z: number; w: number } -interface ShapeD608 { label: string; title: string; summary: string } - -type Combined608 = ShapeA608 & ShapeB608 & ShapeC608 & ShapeD608; -type OptionalAll608 = { [K in keyof Combined608]?: Combined608[K] }; -type RequiredAll608 = { [K in keyof Combined608]-?: Combined608[K] }; -type ReadonlyAll608 = { readonly [K in keyof Combined608]: Combined608[K] }; -type NullableAll608 = { [K in keyof Combined608]: Combined608[K] | null }; +type EV_0608 = Val_0608; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString608 = T extends string ? true : false; -type IsNumber608 = T extends number ? true : false; -type TypeName608 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames608 = { - [K in keyof BigRecord608]: TypeName608; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb608 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource608 = "user" | "post" | "comment" | "tag" | "category"; -type Action608 = `${Verb608}_${Resource608}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise608 = T extends Promise ? UnwrapPromise608 : T; -type UnwrapArray608 = T extends (infer U)[] ? UnwrapArray608 : T; -type Head608 = T extends [infer H, ...infer _] ? H : never; -type Tail608 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation608 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation608>] - : never; +interface Registry_06_08 { + entities: Map; + validators: EV_0608; + paths: Set; + merged: DeepMerge_0608; +} -type SmallUnion608 = "a" | "b" | "c" | "d"; -type AllPerms608 = Permutation608; +type CK_0608 = `p06.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig608, - Flat608, - FR608, - BigUnion608, - ExtractAlpha608, - ExcludeZulu608, - OptionalAll608, - RequiredAll608, - ReadonlyAll608, - NullableAll608, - TypeNames608, - Action608, - AllPerms608, -}; +export type { Entity_06_08, Registry_06_08, CK_0608, EP_0608, EV_0608, DeepMerge_0608 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts index 31e7b83b..950dfbca 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-09.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-09 (seed 609) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-09 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0609 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0609 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord609 { - a609: { x: number; y: string; z: boolean }; - b609: { p: string[]; q: Record }; - c609: { nested: { deep: { deeper: { deepest: string } } } }; - d609: number; - e609: string; - f609: boolean; - g609: null; - h609: undefined; - i609: bigint; - j609: symbol; +interface Entity_06_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_09 | null; children: Entity_06_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0609: number; y0609: string; z0609: boolean }; } -type PartialBig609 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten609 = T extends Array ? Flatten609 : T; -type Nested609 = number[][][][][][][][][][]; -type Flat609 = Flatten609; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly609 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly609 : T[K]; -}; -type DeepRequired609 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired609 : T[K]; +type Path_0609 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0609}` }[keyof T & string] : never; +type EP_0609 = Path_0609; + +type Val_0609 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0609 } + : T[K] extends object ? { t: 'o'; props: Val_0609 } + : { t: 'u' }; }; -type FR609 = DeepReadonly609>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion609 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha609 = Extract; -type ExcludeZulu609 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA609 { width: number; height: number; depth: number } -interface ShapeB609 { color: string; opacity: number; blend: string } -interface ShapeC609 { x: number; y: number; z: number; w: number } -interface ShapeD609 { label: string; title: string; summary: string } - -type Combined609 = ShapeA609 & ShapeB609 & ShapeC609 & ShapeD609; -type OptionalAll609 = { [K in keyof Combined609]?: Combined609[K] }; -type RequiredAll609 = { [K in keyof Combined609]-?: Combined609[K] }; -type ReadonlyAll609 = { readonly [K in keyof Combined609]: Combined609[K] }; -type NullableAll609 = { [K in keyof Combined609]: Combined609[K] | null }; +type EV_0609 = Val_0609; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString609 = T extends string ? true : false; -type IsNumber609 = T extends number ? true : false; -type TypeName609 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames609 = { - [K in keyof BigRecord609]: TypeName609; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb609 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource609 = "user" | "post" | "comment" | "tag" | "category"; -type Action609 = `${Verb609}_${Resource609}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise609 = T extends Promise ? UnwrapPromise609 : T; -type UnwrapArray609 = T extends (infer U)[] ? UnwrapArray609 : T; -type Head609 = T extends [infer H, ...infer _] ? H : never; -type Tail609 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation609 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation609>] - : never; +interface Registry_06_09 { + entities: Map; + validators: EV_0609; + paths: Set; + merged: DeepMerge_0609; +} -type SmallUnion609 = "a" | "b" | "c" | "d"; -type AllPerms609 = Permutation609; +type CK_0609 = `p06.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig609, - Flat609, - FR609, - BigUnion609, - ExtractAlpha609, - ExcludeZulu609, - OptionalAll609, - RequiredAll609, - ReadonlyAll609, - NullableAll609, - TypeNames609, - Action609, - AllPerms609, -}; +export type { Entity_06_09, Registry_06_09, CK_0609, EP_0609, EV_0609, DeepMerge_0609 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts index 2763471a..c3d0915e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-10.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-10 (seed 610) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-10 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0610 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0610 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord610 { - a610: { x: number; y: string; z: boolean }; - b610: { p: string[]; q: Record }; - c610: { nested: { deep: { deeper: { deepest: string } } } }; - d610: number; - e610: string; - f610: boolean; - g610: null; - h610: undefined; - i610: bigint; - j610: symbol; +interface Entity_06_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_10 | null; children: Entity_06_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0610: number; y0610: string; z0610: boolean }; } -type PartialBig610 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten610 = T extends Array ? Flatten610 : T; -type Nested610 = number[][][][][][][][][][]; -type Flat610 = Flatten610; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly610 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly610 : T[K]; -}; -type DeepRequired610 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired610 : T[K]; +type Path_0610 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0610}` }[keyof T & string] : never; +type EP_0610 = Path_0610; + +type Val_0610 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0610 } + : T[K] extends object ? { t: 'o'; props: Val_0610 } + : { t: 'u' }; }; -type FR610 = DeepReadonly610>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion610 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha610 = Extract; -type ExcludeZulu610 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA610 { width: number; height: number; depth: number } -interface ShapeB610 { color: string; opacity: number; blend: string } -interface ShapeC610 { x: number; y: number; z: number; w: number } -interface ShapeD610 { label: string; title: string; summary: string } - -type Combined610 = ShapeA610 & ShapeB610 & ShapeC610 & ShapeD610; -type OptionalAll610 = { [K in keyof Combined610]?: Combined610[K] }; -type RequiredAll610 = { [K in keyof Combined610]-?: Combined610[K] }; -type ReadonlyAll610 = { readonly [K in keyof Combined610]: Combined610[K] }; -type NullableAll610 = { [K in keyof Combined610]: Combined610[K] | null }; +type EV_0610 = Val_0610; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString610 = T extends string ? true : false; -type IsNumber610 = T extends number ? true : false; -type TypeName610 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames610 = { - [K in keyof BigRecord610]: TypeName610; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb610 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource610 = "user" | "post" | "comment" | "tag" | "category"; -type Action610 = `${Verb610}_${Resource610}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise610 = T extends Promise ? UnwrapPromise610 : T; -type UnwrapArray610 = T extends (infer U)[] ? UnwrapArray610 : T; -type Head610 = T extends [infer H, ...infer _] ? H : never; -type Tail610 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation610 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation610>] - : never; +interface Registry_06_10 { + entities: Map; + validators: EV_0610; + paths: Set; + merged: DeepMerge_0610; +} -type SmallUnion610 = "a" | "b" | "c" | "d"; -type AllPerms610 = Permutation610; +type CK_0610 = `p06.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig610, - Flat610, - FR610, - BigUnion610, - ExtractAlpha610, - ExcludeZulu610, - OptionalAll610, - RequiredAll610, - ReadonlyAll610, - NullableAll610, - TypeNames610, - Action610, - AllPerms610, -}; +export type { Entity_06_10, Registry_06_10, CK_0610, EP_0610, EV_0610, DeepMerge_0610 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts index 719eb81c..3dbf3f90 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-11.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-11 (seed 611) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-11 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0611 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0611 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord611 { - a611: { x: number; y: string; z: boolean }; - b611: { p: string[]; q: Record }; - c611: { nested: { deep: { deeper: { deepest: string } } } }; - d611: number; - e611: string; - f611: boolean; - g611: null; - h611: undefined; - i611: bigint; - j611: symbol; +interface Entity_06_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_11 | null; children: Entity_06_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0611: number; y0611: string; z0611: boolean }; } -type PartialBig611 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten611 = T extends Array ? Flatten611 : T; -type Nested611 = number[][][][][][][][][][]; -type Flat611 = Flatten611; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly611 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly611 : T[K]; -}; -type DeepRequired611 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired611 : T[K]; +type Path_0611 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0611}` }[keyof T & string] : never; +type EP_0611 = Path_0611; + +type Val_0611 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0611 } + : T[K] extends object ? { t: 'o'; props: Val_0611 } + : { t: 'u' }; }; -type FR611 = DeepReadonly611>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion611 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha611 = Extract; -type ExcludeZulu611 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA611 { width: number; height: number; depth: number } -interface ShapeB611 { color: string; opacity: number; blend: string } -interface ShapeC611 { x: number; y: number; z: number; w: number } -interface ShapeD611 { label: string; title: string; summary: string } - -type Combined611 = ShapeA611 & ShapeB611 & ShapeC611 & ShapeD611; -type OptionalAll611 = { [K in keyof Combined611]?: Combined611[K] }; -type RequiredAll611 = { [K in keyof Combined611]-?: Combined611[K] }; -type ReadonlyAll611 = { readonly [K in keyof Combined611]: Combined611[K] }; -type NullableAll611 = { [K in keyof Combined611]: Combined611[K] | null }; +type EV_0611 = Val_0611; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString611 = T extends string ? true : false; -type IsNumber611 = T extends number ? true : false; -type TypeName611 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames611 = { - [K in keyof BigRecord611]: TypeName611; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb611 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource611 = "user" | "post" | "comment" | "tag" | "category"; -type Action611 = `${Verb611}_${Resource611}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise611 = T extends Promise ? UnwrapPromise611 : T; -type UnwrapArray611 = T extends (infer U)[] ? UnwrapArray611 : T; -type Head611 = T extends [infer H, ...infer _] ? H : never; -type Tail611 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation611 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation611>] - : never; +interface Registry_06_11 { + entities: Map; + validators: EV_0611; + paths: Set; + merged: DeepMerge_0611; +} -type SmallUnion611 = "a" | "b" | "c" | "d"; -type AllPerms611 = Permutation611; +type CK_0611 = `p06.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig611, - Flat611, - FR611, - BigUnion611, - ExtractAlpha611, - ExcludeZulu611, - OptionalAll611, - RequiredAll611, - ReadonlyAll611, - NullableAll611, - TypeNames611, - Action611, - AllPerms611, -}; +export type { Entity_06_11, Registry_06_11, CK_0611, EP_0611, EV_0611, DeepMerge_0611 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts index 6384182e..587d1722 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-12.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-12 (seed 612) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-12 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0612 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0612 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord612 { - a612: { x: number; y: string; z: boolean }; - b612: { p: string[]; q: Record }; - c612: { nested: { deep: { deeper: { deepest: string } } } }; - d612: number; - e612: string; - f612: boolean; - g612: null; - h612: undefined; - i612: bigint; - j612: symbol; +interface Entity_06_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_12 | null; children: Entity_06_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0612: number; y0612: string; z0612: boolean }; } -type PartialBig612 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten612 = T extends Array ? Flatten612 : T; -type Nested612 = number[][][][][][][][][][]; -type Flat612 = Flatten612; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly612 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly612 : T[K]; -}; -type DeepRequired612 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired612 : T[K]; +type Path_0612 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0612}` }[keyof T & string] : never; +type EP_0612 = Path_0612; + +type Val_0612 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0612 } + : T[K] extends object ? { t: 'o'; props: Val_0612 } + : { t: 'u' }; }; -type FR612 = DeepReadonly612>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion612 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha612 = Extract; -type ExcludeZulu612 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA612 { width: number; height: number; depth: number } -interface ShapeB612 { color: string; opacity: number; blend: string } -interface ShapeC612 { x: number; y: number; z: number; w: number } -interface ShapeD612 { label: string; title: string; summary: string } - -type Combined612 = ShapeA612 & ShapeB612 & ShapeC612 & ShapeD612; -type OptionalAll612 = { [K in keyof Combined612]?: Combined612[K] }; -type RequiredAll612 = { [K in keyof Combined612]-?: Combined612[K] }; -type ReadonlyAll612 = { readonly [K in keyof Combined612]: Combined612[K] }; -type NullableAll612 = { [K in keyof Combined612]: Combined612[K] | null }; +type EV_0612 = Val_0612; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString612 = T extends string ? true : false; -type IsNumber612 = T extends number ? true : false; -type TypeName612 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames612 = { - [K in keyof BigRecord612]: TypeName612; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb612 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource612 = "user" | "post" | "comment" | "tag" | "category"; -type Action612 = `${Verb612}_${Resource612}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise612 = T extends Promise ? UnwrapPromise612 : T; -type UnwrapArray612 = T extends (infer U)[] ? UnwrapArray612 : T; -type Head612 = T extends [infer H, ...infer _] ? H : never; -type Tail612 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation612 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation612>] - : never; +interface Registry_06_12 { + entities: Map; + validators: EV_0612; + paths: Set; + merged: DeepMerge_0612; +} -type SmallUnion612 = "a" | "b" | "c" | "d"; -type AllPerms612 = Permutation612; +type CK_0612 = `p06.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig612, - Flat612, - FR612, - BigUnion612, - ExtractAlpha612, - ExcludeZulu612, - OptionalAll612, - RequiredAll612, - ReadonlyAll612, - NullableAll612, - TypeNames612, - Action612, - AllPerms612, -}; +export type { Entity_06_12, Registry_06_12, CK_0612, EP_0612, EV_0612, DeepMerge_0612 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts index 57b53d47..b29cd0a7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-13.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-13 (seed 613) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-13 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0613 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0613 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord613 { - a613: { x: number; y: string; z: boolean }; - b613: { p: string[]; q: Record }; - c613: { nested: { deep: { deeper: { deepest: string } } } }; - d613: number; - e613: string; - f613: boolean; - g613: null; - h613: undefined; - i613: bigint; - j613: symbol; +interface Entity_06_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_13 | null; children: Entity_06_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0613: number; y0613: string; z0613: boolean }; } -type PartialBig613 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten613 = T extends Array ? Flatten613 : T; -type Nested613 = number[][][][][][][][][][]; -type Flat613 = Flatten613; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly613 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly613 : T[K]; -}; -type DeepRequired613 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired613 : T[K]; +type Path_0613 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0613}` }[keyof T & string] : never; +type EP_0613 = Path_0613; + +type Val_0613 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0613 } + : T[K] extends object ? { t: 'o'; props: Val_0613 } + : { t: 'u' }; }; -type FR613 = DeepReadonly613>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion613 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha613 = Extract; -type ExcludeZulu613 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA613 { width: number; height: number; depth: number } -interface ShapeB613 { color: string; opacity: number; blend: string } -interface ShapeC613 { x: number; y: number; z: number; w: number } -interface ShapeD613 { label: string; title: string; summary: string } - -type Combined613 = ShapeA613 & ShapeB613 & ShapeC613 & ShapeD613; -type OptionalAll613 = { [K in keyof Combined613]?: Combined613[K] }; -type RequiredAll613 = { [K in keyof Combined613]-?: Combined613[K] }; -type ReadonlyAll613 = { readonly [K in keyof Combined613]: Combined613[K] }; -type NullableAll613 = { [K in keyof Combined613]: Combined613[K] | null }; +type EV_0613 = Val_0613; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString613 = T extends string ? true : false; -type IsNumber613 = T extends number ? true : false; -type TypeName613 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames613 = { - [K in keyof BigRecord613]: TypeName613; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb613 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource613 = "user" | "post" | "comment" | "tag" | "category"; -type Action613 = `${Verb613}_${Resource613}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise613 = T extends Promise ? UnwrapPromise613 : T; -type UnwrapArray613 = T extends (infer U)[] ? UnwrapArray613 : T; -type Head613 = T extends [infer H, ...infer _] ? H : never; -type Tail613 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation613 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation613>] - : never; +interface Registry_06_13 { + entities: Map; + validators: EV_0613; + paths: Set; + merged: DeepMerge_0613; +} -type SmallUnion613 = "a" | "b" | "c" | "d"; -type AllPerms613 = Permutation613; +type CK_0613 = `p06.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig613, - Flat613, - FR613, - BigUnion613, - ExtractAlpha613, - ExcludeZulu613, - OptionalAll613, - RequiredAll613, - ReadonlyAll613, - NullableAll613, - TypeNames613, - Action613, - AllPerms613, -}; +export type { Entity_06_13, Registry_06_13, CK_0613, EP_0613, EV_0613, DeepMerge_0613 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts index 175642a5..f41757a0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-14.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-14 (seed 614) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-14 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0614 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0614 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord614 { - a614: { x: number; y: string; z: boolean }; - b614: { p: string[]; q: Record }; - c614: { nested: { deep: { deeper: { deepest: string } } } }; - d614: number; - e614: string; - f614: boolean; - g614: null; - h614: undefined; - i614: bigint; - j614: symbol; +interface Entity_06_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_14 | null; children: Entity_06_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0614: number; y0614: string; z0614: boolean }; } -type PartialBig614 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten614 = T extends Array ? Flatten614 : T; -type Nested614 = number[][][][][][][][][][]; -type Flat614 = Flatten614; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly614 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly614 : T[K]; -}; -type DeepRequired614 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired614 : T[K]; +type Path_0614 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0614}` }[keyof T & string] : never; +type EP_0614 = Path_0614; + +type Val_0614 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0614 } + : T[K] extends object ? { t: 'o'; props: Val_0614 } + : { t: 'u' }; }; -type FR614 = DeepReadonly614>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion614 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha614 = Extract; -type ExcludeZulu614 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA614 { width: number; height: number; depth: number } -interface ShapeB614 { color: string; opacity: number; blend: string } -interface ShapeC614 { x: number; y: number; z: number; w: number } -interface ShapeD614 { label: string; title: string; summary: string } - -type Combined614 = ShapeA614 & ShapeB614 & ShapeC614 & ShapeD614; -type OptionalAll614 = { [K in keyof Combined614]?: Combined614[K] }; -type RequiredAll614 = { [K in keyof Combined614]-?: Combined614[K] }; -type ReadonlyAll614 = { readonly [K in keyof Combined614]: Combined614[K] }; -type NullableAll614 = { [K in keyof Combined614]: Combined614[K] | null }; +type EV_0614 = Val_0614; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString614 = T extends string ? true : false; -type IsNumber614 = T extends number ? true : false; -type TypeName614 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames614 = { - [K in keyof BigRecord614]: TypeName614; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb614 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource614 = "user" | "post" | "comment" | "tag" | "category"; -type Action614 = `${Verb614}_${Resource614}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise614 = T extends Promise ? UnwrapPromise614 : T; -type UnwrapArray614 = T extends (infer U)[] ? UnwrapArray614 : T; -type Head614 = T extends [infer H, ...infer _] ? H : never; -type Tail614 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation614 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation614>] - : never; +interface Registry_06_14 { + entities: Map; + validators: EV_0614; + paths: Set; + merged: DeepMerge_0614; +} -type SmallUnion614 = "a" | "b" | "c" | "d"; -type AllPerms614 = Permutation614; +type CK_0614 = `p06.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig614, - Flat614, - FR614, - BigUnion614, - ExtractAlpha614, - ExcludeZulu614, - OptionalAll614, - RequiredAll614, - ReadonlyAll614, - NullableAll614, - TypeNames614, - Action614, - AllPerms614, -}; +export type { Entity_06_14, Registry_06_14, CK_0614, EP_0614, EV_0614, DeepMerge_0614 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts index f8fa7eda..54366e2d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-15.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-15 (seed 615) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-15 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0615 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0615 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord615 { - a615: { x: number; y: string; z: boolean }; - b615: { p: string[]; q: Record }; - c615: { nested: { deep: { deeper: { deepest: string } } } }; - d615: number; - e615: string; - f615: boolean; - g615: null; - h615: undefined; - i615: bigint; - j615: symbol; +interface Entity_06_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_15 | null; children: Entity_06_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0615: number; y0615: string; z0615: boolean }; } -type PartialBig615 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten615 = T extends Array ? Flatten615 : T; -type Nested615 = number[][][][][][][][][][]; -type Flat615 = Flatten615; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly615 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly615 : T[K]; -}; -type DeepRequired615 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired615 : T[K]; +type Path_0615 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0615}` }[keyof T & string] : never; +type EP_0615 = Path_0615; + +type Val_0615 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0615 } + : T[K] extends object ? { t: 'o'; props: Val_0615 } + : { t: 'u' }; }; -type FR615 = DeepReadonly615>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion615 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha615 = Extract; -type ExcludeZulu615 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA615 { width: number; height: number; depth: number } -interface ShapeB615 { color: string; opacity: number; blend: string } -interface ShapeC615 { x: number; y: number; z: number; w: number } -interface ShapeD615 { label: string; title: string; summary: string } - -type Combined615 = ShapeA615 & ShapeB615 & ShapeC615 & ShapeD615; -type OptionalAll615 = { [K in keyof Combined615]?: Combined615[K] }; -type RequiredAll615 = { [K in keyof Combined615]-?: Combined615[K] }; -type ReadonlyAll615 = { readonly [K in keyof Combined615]: Combined615[K] }; -type NullableAll615 = { [K in keyof Combined615]: Combined615[K] | null }; +type EV_0615 = Val_0615; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString615 = T extends string ? true : false; -type IsNumber615 = T extends number ? true : false; -type TypeName615 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames615 = { - [K in keyof BigRecord615]: TypeName615; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb615 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource615 = "user" | "post" | "comment" | "tag" | "category"; -type Action615 = `${Verb615}_${Resource615}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise615 = T extends Promise ? UnwrapPromise615 : T; -type UnwrapArray615 = T extends (infer U)[] ? UnwrapArray615 : T; -type Head615 = T extends [infer H, ...infer _] ? H : never; -type Tail615 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation615 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation615>] - : never; +interface Registry_06_15 { + entities: Map; + validators: EV_0615; + paths: Set; + merged: DeepMerge_0615; +} -type SmallUnion615 = "a" | "b" | "c" | "d"; -type AllPerms615 = Permutation615; +type CK_0615 = `p06.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig615, - Flat615, - FR615, - BigUnion615, - ExtractAlpha615, - ExcludeZulu615, - OptionalAll615, - RequiredAll615, - ReadonlyAll615, - NullableAll615, - TypeNames615, - Action615, - AllPerms615, -}; +export type { Entity_06_15, Registry_06_15, CK_0615, EP_0615, EV_0615, DeepMerge_0615 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts index eb4fb68a..8ffb3cad 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-16.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-16 (seed 616) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-16 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0616 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0616 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord616 { - a616: { x: number; y: string; z: boolean }; - b616: { p: string[]; q: Record }; - c616: { nested: { deep: { deeper: { deepest: string } } } }; - d616: number; - e616: string; - f616: boolean; - g616: null; - h616: undefined; - i616: bigint; - j616: symbol; +interface Entity_06_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_16 | null; children: Entity_06_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0616: number; y0616: string; z0616: boolean }; } -type PartialBig616 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten616 = T extends Array ? Flatten616 : T; -type Nested616 = number[][][][][][][][][][]; -type Flat616 = Flatten616; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly616 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly616 : T[K]; -}; -type DeepRequired616 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired616 : T[K]; +type Path_0616 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0616}` }[keyof T & string] : never; +type EP_0616 = Path_0616; + +type Val_0616 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0616 } + : T[K] extends object ? { t: 'o'; props: Val_0616 } + : { t: 'u' }; }; -type FR616 = DeepReadonly616>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion616 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha616 = Extract; -type ExcludeZulu616 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA616 { width: number; height: number; depth: number } -interface ShapeB616 { color: string; opacity: number; blend: string } -interface ShapeC616 { x: number; y: number; z: number; w: number } -interface ShapeD616 { label: string; title: string; summary: string } - -type Combined616 = ShapeA616 & ShapeB616 & ShapeC616 & ShapeD616; -type OptionalAll616 = { [K in keyof Combined616]?: Combined616[K] }; -type RequiredAll616 = { [K in keyof Combined616]-?: Combined616[K] }; -type ReadonlyAll616 = { readonly [K in keyof Combined616]: Combined616[K] }; -type NullableAll616 = { [K in keyof Combined616]: Combined616[K] | null }; +type EV_0616 = Val_0616; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString616 = T extends string ? true : false; -type IsNumber616 = T extends number ? true : false; -type TypeName616 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames616 = { - [K in keyof BigRecord616]: TypeName616; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb616 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource616 = "user" | "post" | "comment" | "tag" | "category"; -type Action616 = `${Verb616}_${Resource616}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise616 = T extends Promise ? UnwrapPromise616 : T; -type UnwrapArray616 = T extends (infer U)[] ? UnwrapArray616 : T; -type Head616 = T extends [infer H, ...infer _] ? H : never; -type Tail616 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation616 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation616>] - : never; +interface Registry_06_16 { + entities: Map; + validators: EV_0616; + paths: Set; + merged: DeepMerge_0616; +} -type SmallUnion616 = "a" | "b" | "c" | "d"; -type AllPerms616 = Permutation616; +type CK_0616 = `p06.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig616, - Flat616, - FR616, - BigUnion616, - ExtractAlpha616, - ExcludeZulu616, - OptionalAll616, - RequiredAll616, - ReadonlyAll616, - NullableAll616, - TypeNames616, - Action616, - AllPerms616, -}; +export type { Entity_06_16, Registry_06_16, CK_0616, EP_0616, EV_0616, DeepMerge_0616 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts index 1c54b36f..3a017999 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-17.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-17 (seed 617) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-17 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0617 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0617 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord617 { - a617: { x: number; y: string; z: boolean }; - b617: { p: string[]; q: Record }; - c617: { nested: { deep: { deeper: { deepest: string } } } }; - d617: number; - e617: string; - f617: boolean; - g617: null; - h617: undefined; - i617: bigint; - j617: symbol; +interface Entity_06_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_17 | null; children: Entity_06_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0617: number; y0617: string; z0617: boolean }; } -type PartialBig617 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten617 = T extends Array ? Flatten617 : T; -type Nested617 = number[][][][][][][][][][]; -type Flat617 = Flatten617; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly617 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly617 : T[K]; -}; -type DeepRequired617 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired617 : T[K]; +type Path_0617 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0617}` }[keyof T & string] : never; +type EP_0617 = Path_0617; + +type Val_0617 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0617 } + : T[K] extends object ? { t: 'o'; props: Val_0617 } + : { t: 'u' }; }; -type FR617 = DeepReadonly617>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion617 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha617 = Extract; -type ExcludeZulu617 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA617 { width: number; height: number; depth: number } -interface ShapeB617 { color: string; opacity: number; blend: string } -interface ShapeC617 { x: number; y: number; z: number; w: number } -interface ShapeD617 { label: string; title: string; summary: string } - -type Combined617 = ShapeA617 & ShapeB617 & ShapeC617 & ShapeD617; -type OptionalAll617 = { [K in keyof Combined617]?: Combined617[K] }; -type RequiredAll617 = { [K in keyof Combined617]-?: Combined617[K] }; -type ReadonlyAll617 = { readonly [K in keyof Combined617]: Combined617[K] }; -type NullableAll617 = { [K in keyof Combined617]: Combined617[K] | null }; +type EV_0617 = Val_0617; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString617 = T extends string ? true : false; -type IsNumber617 = T extends number ? true : false; -type TypeName617 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames617 = { - [K in keyof BigRecord617]: TypeName617; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb617 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource617 = "user" | "post" | "comment" | "tag" | "category"; -type Action617 = `${Verb617}_${Resource617}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise617 = T extends Promise ? UnwrapPromise617 : T; -type UnwrapArray617 = T extends (infer U)[] ? UnwrapArray617 : T; -type Head617 = T extends [infer H, ...infer _] ? H : never; -type Tail617 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation617 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation617>] - : never; +interface Registry_06_17 { + entities: Map; + validators: EV_0617; + paths: Set; + merged: DeepMerge_0617; +} -type SmallUnion617 = "a" | "b" | "c" | "d"; -type AllPerms617 = Permutation617; +type CK_0617 = `p06.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig617, - Flat617, - FR617, - BigUnion617, - ExtractAlpha617, - ExcludeZulu617, - OptionalAll617, - RequiredAll617, - ReadonlyAll617, - NullableAll617, - TypeNames617, - Action617, - AllPerms617, -}; +export type { Entity_06_17, Registry_06_17, CK_0617, EP_0617, EV_0617, DeepMerge_0617 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts index 8cc7a7a7..be8c1a53 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-18.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-18 (seed 618) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-18 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0618 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0618 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord618 { - a618: { x: number; y: string; z: boolean }; - b618: { p: string[]; q: Record }; - c618: { nested: { deep: { deeper: { deepest: string } } } }; - d618: number; - e618: string; - f618: boolean; - g618: null; - h618: undefined; - i618: bigint; - j618: symbol; +interface Entity_06_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_18 | null; children: Entity_06_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0618: number; y0618: string; z0618: boolean }; } -type PartialBig618 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten618 = T extends Array ? Flatten618 : T; -type Nested618 = number[][][][][][][][][][]; -type Flat618 = Flatten618; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly618 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly618 : T[K]; -}; -type DeepRequired618 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired618 : T[K]; +type Path_0618 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0618}` }[keyof T & string] : never; +type EP_0618 = Path_0618; + +type Val_0618 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0618 } + : T[K] extends object ? { t: 'o'; props: Val_0618 } + : { t: 'u' }; }; -type FR618 = DeepReadonly618>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion618 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha618 = Extract; -type ExcludeZulu618 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA618 { width: number; height: number; depth: number } -interface ShapeB618 { color: string; opacity: number; blend: string } -interface ShapeC618 { x: number; y: number; z: number; w: number } -interface ShapeD618 { label: string; title: string; summary: string } - -type Combined618 = ShapeA618 & ShapeB618 & ShapeC618 & ShapeD618; -type OptionalAll618 = { [K in keyof Combined618]?: Combined618[K] }; -type RequiredAll618 = { [K in keyof Combined618]-?: Combined618[K] }; -type ReadonlyAll618 = { readonly [K in keyof Combined618]: Combined618[K] }; -type NullableAll618 = { [K in keyof Combined618]: Combined618[K] | null }; +type EV_0618 = Val_0618; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString618 = T extends string ? true : false; -type IsNumber618 = T extends number ? true : false; -type TypeName618 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames618 = { - [K in keyof BigRecord618]: TypeName618; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb618 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource618 = "user" | "post" | "comment" | "tag" | "category"; -type Action618 = `${Verb618}_${Resource618}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise618 = T extends Promise ? UnwrapPromise618 : T; -type UnwrapArray618 = T extends (infer U)[] ? UnwrapArray618 : T; -type Head618 = T extends [infer H, ...infer _] ? H : never; -type Tail618 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation618 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation618>] - : never; +interface Registry_06_18 { + entities: Map; + validators: EV_0618; + paths: Set; + merged: DeepMerge_0618; +} -type SmallUnion618 = "a" | "b" | "c" | "d"; -type AllPerms618 = Permutation618; +type CK_0618 = `p06.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig618, - Flat618, - FR618, - BigUnion618, - ExtractAlpha618, - ExcludeZulu618, - OptionalAll618, - RequiredAll618, - ReadonlyAll618, - NullableAll618, - TypeNames618, - Action618, - AllPerms618, -}; +export type { Entity_06_18, Registry_06_18, CK_0618, EP_0618, EV_0618, DeepMerge_0618 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts index 45961e36..193bd3ec 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-19.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-19 (seed 619) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-19 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0619 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0619 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord619 { - a619: { x: number; y: string; z: boolean }; - b619: { p: string[]; q: Record }; - c619: { nested: { deep: { deeper: { deepest: string } } } }; - d619: number; - e619: string; - f619: boolean; - g619: null; - h619: undefined; - i619: bigint; - j619: symbol; +interface Entity_06_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_19 | null; children: Entity_06_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0619: number; y0619: string; z0619: boolean }; } -type PartialBig619 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten619 = T extends Array ? Flatten619 : T; -type Nested619 = number[][][][][][][][][][]; -type Flat619 = Flatten619; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly619 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly619 : T[K]; -}; -type DeepRequired619 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired619 : T[K]; +type Path_0619 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0619}` }[keyof T & string] : never; +type EP_0619 = Path_0619; + +type Val_0619 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0619 } + : T[K] extends object ? { t: 'o'; props: Val_0619 } + : { t: 'u' }; }; -type FR619 = DeepReadonly619>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion619 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha619 = Extract; -type ExcludeZulu619 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA619 { width: number; height: number; depth: number } -interface ShapeB619 { color: string; opacity: number; blend: string } -interface ShapeC619 { x: number; y: number; z: number; w: number } -interface ShapeD619 { label: string; title: string; summary: string } - -type Combined619 = ShapeA619 & ShapeB619 & ShapeC619 & ShapeD619; -type OptionalAll619 = { [K in keyof Combined619]?: Combined619[K] }; -type RequiredAll619 = { [K in keyof Combined619]-?: Combined619[K] }; -type ReadonlyAll619 = { readonly [K in keyof Combined619]: Combined619[K] }; -type NullableAll619 = { [K in keyof Combined619]: Combined619[K] | null }; +type EV_0619 = Val_0619; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString619 = T extends string ? true : false; -type IsNumber619 = T extends number ? true : false; -type TypeName619 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames619 = { - [K in keyof BigRecord619]: TypeName619; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb619 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource619 = "user" | "post" | "comment" | "tag" | "category"; -type Action619 = `${Verb619}_${Resource619}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise619 = T extends Promise ? UnwrapPromise619 : T; -type UnwrapArray619 = T extends (infer U)[] ? UnwrapArray619 : T; -type Head619 = T extends [infer H, ...infer _] ? H : never; -type Tail619 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation619 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation619>] - : never; +interface Registry_06_19 { + entities: Map; + validators: EV_0619; + paths: Set; + merged: DeepMerge_0619; +} -type SmallUnion619 = "a" | "b" | "c" | "d"; -type AllPerms619 = Permutation619; +type CK_0619 = `p06.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig619, - Flat619, - FR619, - BigUnion619, - ExtractAlpha619, - ExcludeZulu619, - OptionalAll619, - RequiredAll619, - ReadonlyAll619, - NullableAll619, - TypeNames619, - Action619, - AllPerms619, -}; +export type { Entity_06_19, Registry_06_19, CK_0619, EP_0619, EV_0619, DeepMerge_0619 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts index 028286d4..e9e7751e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-20.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-20 (seed 620) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-20 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0620 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0620 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord620 { - a620: { x: number; y: string; z: boolean }; - b620: { p: string[]; q: Record }; - c620: { nested: { deep: { deeper: { deepest: string } } } }; - d620: number; - e620: string; - f620: boolean; - g620: null; - h620: undefined; - i620: bigint; - j620: symbol; +interface Entity_06_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_20 | null; children: Entity_06_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0620: number; y0620: string; z0620: boolean }; } -type PartialBig620 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten620 = T extends Array ? Flatten620 : T; -type Nested620 = number[][][][][][][][][][]; -type Flat620 = Flatten620; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly620 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly620 : T[K]; -}; -type DeepRequired620 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired620 : T[K]; +type Path_0620 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0620}` }[keyof T & string] : never; +type EP_0620 = Path_0620; + +type Val_0620 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0620 } + : T[K] extends object ? { t: 'o'; props: Val_0620 } + : { t: 'u' }; }; -type FR620 = DeepReadonly620>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion620 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha620 = Extract; -type ExcludeZulu620 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA620 { width: number; height: number; depth: number } -interface ShapeB620 { color: string; opacity: number; blend: string } -interface ShapeC620 { x: number; y: number; z: number; w: number } -interface ShapeD620 { label: string; title: string; summary: string } - -type Combined620 = ShapeA620 & ShapeB620 & ShapeC620 & ShapeD620; -type OptionalAll620 = { [K in keyof Combined620]?: Combined620[K] }; -type RequiredAll620 = { [K in keyof Combined620]-?: Combined620[K] }; -type ReadonlyAll620 = { readonly [K in keyof Combined620]: Combined620[K] }; -type NullableAll620 = { [K in keyof Combined620]: Combined620[K] | null }; +type EV_0620 = Val_0620; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString620 = T extends string ? true : false; -type IsNumber620 = T extends number ? true : false; -type TypeName620 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames620 = { - [K in keyof BigRecord620]: TypeName620; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb620 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource620 = "user" | "post" | "comment" | "tag" | "category"; -type Action620 = `${Verb620}_${Resource620}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise620 = T extends Promise ? UnwrapPromise620 : T; -type UnwrapArray620 = T extends (infer U)[] ? UnwrapArray620 : T; -type Head620 = T extends [infer H, ...infer _] ? H : never; -type Tail620 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation620 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation620>] - : never; +interface Registry_06_20 { + entities: Map; + validators: EV_0620; + paths: Set; + merged: DeepMerge_0620; +} -type SmallUnion620 = "a" | "b" | "c" | "d"; -type AllPerms620 = Permutation620; +type CK_0620 = `p06.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig620, - Flat620, - FR620, - BigUnion620, - ExtractAlpha620, - ExcludeZulu620, - OptionalAll620, - RequiredAll620, - ReadonlyAll620, - NullableAll620, - TypeNames620, - Action620, - AllPerms620, -}; +export type { Entity_06_20, Registry_06_20, CK_0620, EP_0620, EV_0620, DeepMerge_0620 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts index 4fb08024..778338b1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-21.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-21 (seed 621) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-21 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0621 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0621 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord621 { - a621: { x: number; y: string; z: boolean }; - b621: { p: string[]; q: Record }; - c621: { nested: { deep: { deeper: { deepest: string } } } }; - d621: number; - e621: string; - f621: boolean; - g621: null; - h621: undefined; - i621: bigint; - j621: symbol; +interface Entity_06_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_21 | null; children: Entity_06_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0621: number; y0621: string; z0621: boolean }; } -type PartialBig621 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten621 = T extends Array ? Flatten621 : T; -type Nested621 = number[][][][][][][][][][]; -type Flat621 = Flatten621; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly621 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly621 : T[K]; -}; -type DeepRequired621 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired621 : T[K]; +type Path_0621 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0621}` }[keyof T & string] : never; +type EP_0621 = Path_0621; + +type Val_0621 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0621 } + : T[K] extends object ? { t: 'o'; props: Val_0621 } + : { t: 'u' }; }; -type FR621 = DeepReadonly621>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion621 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha621 = Extract; -type ExcludeZulu621 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA621 { width: number; height: number; depth: number } -interface ShapeB621 { color: string; opacity: number; blend: string } -interface ShapeC621 { x: number; y: number; z: number; w: number } -interface ShapeD621 { label: string; title: string; summary: string } - -type Combined621 = ShapeA621 & ShapeB621 & ShapeC621 & ShapeD621; -type OptionalAll621 = { [K in keyof Combined621]?: Combined621[K] }; -type RequiredAll621 = { [K in keyof Combined621]-?: Combined621[K] }; -type ReadonlyAll621 = { readonly [K in keyof Combined621]: Combined621[K] }; -type NullableAll621 = { [K in keyof Combined621]: Combined621[K] | null }; +type EV_0621 = Val_0621; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString621 = T extends string ? true : false; -type IsNumber621 = T extends number ? true : false; -type TypeName621 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames621 = { - [K in keyof BigRecord621]: TypeName621; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb621 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource621 = "user" | "post" | "comment" | "tag" | "category"; -type Action621 = `${Verb621}_${Resource621}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise621 = T extends Promise ? UnwrapPromise621 : T; -type UnwrapArray621 = T extends (infer U)[] ? UnwrapArray621 : T; -type Head621 = T extends [infer H, ...infer _] ? H : never; -type Tail621 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation621 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation621>] - : never; +interface Registry_06_21 { + entities: Map; + validators: EV_0621; + paths: Set; + merged: DeepMerge_0621; +} -type SmallUnion621 = "a" | "b" | "c" | "d"; -type AllPerms621 = Permutation621; +type CK_0621 = `p06.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig621, - Flat621, - FR621, - BigUnion621, - ExtractAlpha621, - ExcludeZulu621, - OptionalAll621, - RequiredAll621, - ReadonlyAll621, - NullableAll621, - TypeNames621, - Action621, - AllPerms621, -}; +export type { Entity_06_21, Registry_06_21, CK_0621, EP_0621, EV_0621, DeepMerge_0621 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts index 37c19a22..59d759f5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-22.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-22 (seed 622) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-22 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0622 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0622 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord622 { - a622: { x: number; y: string; z: boolean }; - b622: { p: string[]; q: Record }; - c622: { nested: { deep: { deeper: { deepest: string } } } }; - d622: number; - e622: string; - f622: boolean; - g622: null; - h622: undefined; - i622: bigint; - j622: symbol; +interface Entity_06_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_22 | null; children: Entity_06_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0622: number; y0622: string; z0622: boolean }; } -type PartialBig622 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten622 = T extends Array ? Flatten622 : T; -type Nested622 = number[][][][][][][][][][]; -type Flat622 = Flatten622; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly622 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly622 : T[K]; -}; -type DeepRequired622 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired622 : T[K]; +type Path_0622 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0622}` }[keyof T & string] : never; +type EP_0622 = Path_0622; + +type Val_0622 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0622 } + : T[K] extends object ? { t: 'o'; props: Val_0622 } + : { t: 'u' }; }; -type FR622 = DeepReadonly622>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion622 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha622 = Extract; -type ExcludeZulu622 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA622 { width: number; height: number; depth: number } -interface ShapeB622 { color: string; opacity: number; blend: string } -interface ShapeC622 { x: number; y: number; z: number; w: number } -interface ShapeD622 { label: string; title: string; summary: string } - -type Combined622 = ShapeA622 & ShapeB622 & ShapeC622 & ShapeD622; -type OptionalAll622 = { [K in keyof Combined622]?: Combined622[K] }; -type RequiredAll622 = { [K in keyof Combined622]-?: Combined622[K] }; -type ReadonlyAll622 = { readonly [K in keyof Combined622]: Combined622[K] }; -type NullableAll622 = { [K in keyof Combined622]: Combined622[K] | null }; +type EV_0622 = Val_0622; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString622 = T extends string ? true : false; -type IsNumber622 = T extends number ? true : false; -type TypeName622 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames622 = { - [K in keyof BigRecord622]: TypeName622; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb622 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource622 = "user" | "post" | "comment" | "tag" | "category"; -type Action622 = `${Verb622}_${Resource622}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise622 = T extends Promise ? UnwrapPromise622 : T; -type UnwrapArray622 = T extends (infer U)[] ? UnwrapArray622 : T; -type Head622 = T extends [infer H, ...infer _] ? H : never; -type Tail622 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation622 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation622>] - : never; +interface Registry_06_22 { + entities: Map; + validators: EV_0622; + paths: Set; + merged: DeepMerge_0622; +} -type SmallUnion622 = "a" | "b" | "c" | "d"; -type AllPerms622 = Permutation622; +type CK_0622 = `p06.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig622, - Flat622, - FR622, - BigUnion622, - ExtractAlpha622, - ExcludeZulu622, - OptionalAll622, - RequiredAll622, - ReadonlyAll622, - NullableAll622, - TypeNames622, - Action622, - AllPerms622, -}; +export type { Entity_06_22, Registry_06_22, CK_0622, EP_0622, EV_0622, DeepMerge_0622 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts index 5eb2e6cc..8b32c509 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-23.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-23 (seed 623) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-23 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0623 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0623 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord623 { - a623: { x: number; y: string; z: boolean }; - b623: { p: string[]; q: Record }; - c623: { nested: { deep: { deeper: { deepest: string } } } }; - d623: number; - e623: string; - f623: boolean; - g623: null; - h623: undefined; - i623: bigint; - j623: symbol; +interface Entity_06_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_23 | null; children: Entity_06_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0623: number; y0623: string; z0623: boolean }; } -type PartialBig623 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten623 = T extends Array ? Flatten623 : T; -type Nested623 = number[][][][][][][][][][]; -type Flat623 = Flatten623; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly623 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly623 : T[K]; -}; -type DeepRequired623 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired623 : T[K]; +type Path_0623 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0623}` }[keyof T & string] : never; +type EP_0623 = Path_0623; + +type Val_0623 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0623 } + : T[K] extends object ? { t: 'o'; props: Val_0623 } + : { t: 'u' }; }; -type FR623 = DeepReadonly623>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion623 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha623 = Extract; -type ExcludeZulu623 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA623 { width: number; height: number; depth: number } -interface ShapeB623 { color: string; opacity: number; blend: string } -interface ShapeC623 { x: number; y: number; z: number; w: number } -interface ShapeD623 { label: string; title: string; summary: string } - -type Combined623 = ShapeA623 & ShapeB623 & ShapeC623 & ShapeD623; -type OptionalAll623 = { [K in keyof Combined623]?: Combined623[K] }; -type RequiredAll623 = { [K in keyof Combined623]-?: Combined623[K] }; -type ReadonlyAll623 = { readonly [K in keyof Combined623]: Combined623[K] }; -type NullableAll623 = { [K in keyof Combined623]: Combined623[K] | null }; +type EV_0623 = Val_0623; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString623 = T extends string ? true : false; -type IsNumber623 = T extends number ? true : false; -type TypeName623 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames623 = { - [K in keyof BigRecord623]: TypeName623; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb623 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource623 = "user" | "post" | "comment" | "tag" | "category"; -type Action623 = `${Verb623}_${Resource623}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise623 = T extends Promise ? UnwrapPromise623 : T; -type UnwrapArray623 = T extends (infer U)[] ? UnwrapArray623 : T; -type Head623 = T extends [infer H, ...infer _] ? H : never; -type Tail623 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation623 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation623>] - : never; +interface Registry_06_23 { + entities: Map; + validators: EV_0623; + paths: Set; + merged: DeepMerge_0623; +} -type SmallUnion623 = "a" | "b" | "c" | "d"; -type AllPerms623 = Permutation623; +type CK_0623 = `p06.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig623, - Flat623, - FR623, - BigUnion623, - ExtractAlpha623, - ExcludeZulu623, - OptionalAll623, - RequiredAll623, - ReadonlyAll623, - NullableAll623, - TypeNames623, - Action623, - AllPerms623, -}; +export type { Entity_06_23, Registry_06_23, CK_0623, EP_0623, EV_0623, DeepMerge_0623 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts index 9750304b..95ee67e2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-24.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-24 (seed 624) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-24 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0624 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0624 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord624 { - a624: { x: number; y: string; z: boolean }; - b624: { p: string[]; q: Record }; - c624: { nested: { deep: { deeper: { deepest: string } } } }; - d624: number; - e624: string; - f624: boolean; - g624: null; - h624: undefined; - i624: bigint; - j624: symbol; +interface Entity_06_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_24 | null; children: Entity_06_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0624: number; y0624: string; z0624: boolean }; } -type PartialBig624 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten624 = T extends Array ? Flatten624 : T; -type Nested624 = number[][][][][][][][][][]; -type Flat624 = Flatten624; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly624 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly624 : T[K]; -}; -type DeepRequired624 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired624 : T[K]; +type Path_0624 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0624}` }[keyof T & string] : never; +type EP_0624 = Path_0624; + +type Val_0624 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0624 } + : T[K] extends object ? { t: 'o'; props: Val_0624 } + : { t: 'u' }; }; -type FR624 = DeepReadonly624>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion624 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha624 = Extract; -type ExcludeZulu624 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA624 { width: number; height: number; depth: number } -interface ShapeB624 { color: string; opacity: number; blend: string } -interface ShapeC624 { x: number; y: number; z: number; w: number } -interface ShapeD624 { label: string; title: string; summary: string } - -type Combined624 = ShapeA624 & ShapeB624 & ShapeC624 & ShapeD624; -type OptionalAll624 = { [K in keyof Combined624]?: Combined624[K] }; -type RequiredAll624 = { [K in keyof Combined624]-?: Combined624[K] }; -type ReadonlyAll624 = { readonly [K in keyof Combined624]: Combined624[K] }; -type NullableAll624 = { [K in keyof Combined624]: Combined624[K] | null }; +type EV_0624 = Val_0624; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString624 = T extends string ? true : false; -type IsNumber624 = T extends number ? true : false; -type TypeName624 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames624 = { - [K in keyof BigRecord624]: TypeName624; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb624 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource624 = "user" | "post" | "comment" | "tag" | "category"; -type Action624 = `${Verb624}_${Resource624}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise624 = T extends Promise ? UnwrapPromise624 : T; -type UnwrapArray624 = T extends (infer U)[] ? UnwrapArray624 : T; -type Head624 = T extends [infer H, ...infer _] ? H : never; -type Tail624 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation624 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation624>] - : never; +interface Registry_06_24 { + entities: Map; + validators: EV_0624; + paths: Set; + merged: DeepMerge_0624; +} -type SmallUnion624 = "a" | "b" | "c" | "d"; -type AllPerms624 = Permutation624; +type CK_0624 = `p06.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig624, - Flat624, - FR624, - BigUnion624, - ExtractAlpha624, - ExcludeZulu624, - OptionalAll624, - RequiredAll624, - ReadonlyAll624, - NullableAll624, - TypeNames624, - Action624, - AllPerms624, -}; +export type { Entity_06_24, Registry_06_24, CK_0624, EP_0624, EV_0624, DeepMerge_0624 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts index b8d88c59..6df6ae2a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-25.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-25 (seed 625) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-25 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0625 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0625 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord625 { - a625: { x: number; y: string; z: boolean }; - b625: { p: string[]; q: Record }; - c625: { nested: { deep: { deeper: { deepest: string } } } }; - d625: number; - e625: string; - f625: boolean; - g625: null; - h625: undefined; - i625: bigint; - j625: symbol; +interface Entity_06_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_25 | null; children: Entity_06_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0625: number; y0625: string; z0625: boolean }; } -type PartialBig625 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten625 = T extends Array ? Flatten625 : T; -type Nested625 = number[][][][][][][][][][]; -type Flat625 = Flatten625; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly625 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly625 : T[K]; -}; -type DeepRequired625 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired625 : T[K]; +type Path_0625 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0625}` }[keyof T & string] : never; +type EP_0625 = Path_0625; + +type Val_0625 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0625 } + : T[K] extends object ? { t: 'o'; props: Val_0625 } + : { t: 'u' }; }; -type FR625 = DeepReadonly625>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion625 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha625 = Extract; -type ExcludeZulu625 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA625 { width: number; height: number; depth: number } -interface ShapeB625 { color: string; opacity: number; blend: string } -interface ShapeC625 { x: number; y: number; z: number; w: number } -interface ShapeD625 { label: string; title: string; summary: string } - -type Combined625 = ShapeA625 & ShapeB625 & ShapeC625 & ShapeD625; -type OptionalAll625 = { [K in keyof Combined625]?: Combined625[K] }; -type RequiredAll625 = { [K in keyof Combined625]-?: Combined625[K] }; -type ReadonlyAll625 = { readonly [K in keyof Combined625]: Combined625[K] }; -type NullableAll625 = { [K in keyof Combined625]: Combined625[K] | null }; +type EV_0625 = Val_0625; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString625 = T extends string ? true : false; -type IsNumber625 = T extends number ? true : false; -type TypeName625 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames625 = { - [K in keyof BigRecord625]: TypeName625; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb625 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource625 = "user" | "post" | "comment" | "tag" | "category"; -type Action625 = `${Verb625}_${Resource625}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise625 = T extends Promise ? UnwrapPromise625 : T; -type UnwrapArray625 = T extends (infer U)[] ? UnwrapArray625 : T; -type Head625 = T extends [infer H, ...infer _] ? H : never; -type Tail625 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation625 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation625>] - : never; +interface Registry_06_25 { + entities: Map; + validators: EV_0625; + paths: Set; + merged: DeepMerge_0625; +} -type SmallUnion625 = "a" | "b" | "c" | "d"; -type AllPerms625 = Permutation625; +type CK_0625 = `p06.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig625, - Flat625, - FR625, - BigUnion625, - ExtractAlpha625, - ExcludeZulu625, - OptionalAll625, - RequiredAll625, - ReadonlyAll625, - NullableAll625, - TypeNames625, - Action625, - AllPerms625, -}; +export type { Entity_06_25, Registry_06_25, CK_0625, EP_0625, EV_0625, DeepMerge_0625 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts index 77e888e5..0f081383 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-26.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-26 (seed 626) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-26 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0626 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0626 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord626 { - a626: { x: number; y: string; z: boolean }; - b626: { p: string[]; q: Record }; - c626: { nested: { deep: { deeper: { deepest: string } } } }; - d626: number; - e626: string; - f626: boolean; - g626: null; - h626: undefined; - i626: bigint; - j626: symbol; +interface Entity_06_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_26 | null; children: Entity_06_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0626: number; y0626: string; z0626: boolean }; } -type PartialBig626 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten626 = T extends Array ? Flatten626 : T; -type Nested626 = number[][][][][][][][][][]; -type Flat626 = Flatten626; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly626 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly626 : T[K]; -}; -type DeepRequired626 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired626 : T[K]; +type Path_0626 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0626}` }[keyof T & string] : never; +type EP_0626 = Path_0626; + +type Val_0626 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0626 } + : T[K] extends object ? { t: 'o'; props: Val_0626 } + : { t: 'u' }; }; -type FR626 = DeepReadonly626>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion626 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha626 = Extract; -type ExcludeZulu626 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA626 { width: number; height: number; depth: number } -interface ShapeB626 { color: string; opacity: number; blend: string } -interface ShapeC626 { x: number; y: number; z: number; w: number } -interface ShapeD626 { label: string; title: string; summary: string } - -type Combined626 = ShapeA626 & ShapeB626 & ShapeC626 & ShapeD626; -type OptionalAll626 = { [K in keyof Combined626]?: Combined626[K] }; -type RequiredAll626 = { [K in keyof Combined626]-?: Combined626[K] }; -type ReadonlyAll626 = { readonly [K in keyof Combined626]: Combined626[K] }; -type NullableAll626 = { [K in keyof Combined626]: Combined626[K] | null }; +type EV_0626 = Val_0626; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString626 = T extends string ? true : false; -type IsNumber626 = T extends number ? true : false; -type TypeName626 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames626 = { - [K in keyof BigRecord626]: TypeName626; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb626 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource626 = "user" | "post" | "comment" | "tag" | "category"; -type Action626 = `${Verb626}_${Resource626}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise626 = T extends Promise ? UnwrapPromise626 : T; -type UnwrapArray626 = T extends (infer U)[] ? UnwrapArray626 : T; -type Head626 = T extends [infer H, ...infer _] ? H : never; -type Tail626 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation626 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation626>] - : never; +interface Registry_06_26 { + entities: Map; + validators: EV_0626; + paths: Set; + merged: DeepMerge_0626; +} -type SmallUnion626 = "a" | "b" | "c" | "d"; -type AllPerms626 = Permutation626; +type CK_0626 = `p06.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig626, - Flat626, - FR626, - BigUnion626, - ExtractAlpha626, - ExcludeZulu626, - OptionalAll626, - RequiredAll626, - ReadonlyAll626, - NullableAll626, - TypeNames626, - Action626, - AllPerms626, -}; +export type { Entity_06_26, Registry_06_26, CK_0626, EP_0626, EV_0626, DeepMerge_0626 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts index 54d01acb..d18f1e8e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-27.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-27 (seed 627) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-27 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0627 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0627 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord627 { - a627: { x: number; y: string; z: boolean }; - b627: { p: string[]; q: Record }; - c627: { nested: { deep: { deeper: { deepest: string } } } }; - d627: number; - e627: string; - f627: boolean; - g627: null; - h627: undefined; - i627: bigint; - j627: symbol; +interface Entity_06_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_27 | null; children: Entity_06_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0627: number; y0627: string; z0627: boolean }; } -type PartialBig627 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten627 = T extends Array ? Flatten627 : T; -type Nested627 = number[][][][][][][][][][]; -type Flat627 = Flatten627; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly627 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly627 : T[K]; -}; -type DeepRequired627 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired627 : T[K]; +type Path_0627 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0627}` }[keyof T & string] : never; +type EP_0627 = Path_0627; + +type Val_0627 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0627 } + : T[K] extends object ? { t: 'o'; props: Val_0627 } + : { t: 'u' }; }; -type FR627 = DeepReadonly627>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion627 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha627 = Extract; -type ExcludeZulu627 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA627 { width: number; height: number; depth: number } -interface ShapeB627 { color: string; opacity: number; blend: string } -interface ShapeC627 { x: number; y: number; z: number; w: number } -interface ShapeD627 { label: string; title: string; summary: string } - -type Combined627 = ShapeA627 & ShapeB627 & ShapeC627 & ShapeD627; -type OptionalAll627 = { [K in keyof Combined627]?: Combined627[K] }; -type RequiredAll627 = { [K in keyof Combined627]-?: Combined627[K] }; -type ReadonlyAll627 = { readonly [K in keyof Combined627]: Combined627[K] }; -type NullableAll627 = { [K in keyof Combined627]: Combined627[K] | null }; +type EV_0627 = Val_0627; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString627 = T extends string ? true : false; -type IsNumber627 = T extends number ? true : false; -type TypeName627 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames627 = { - [K in keyof BigRecord627]: TypeName627; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb627 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource627 = "user" | "post" | "comment" | "tag" | "category"; -type Action627 = `${Verb627}_${Resource627}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise627 = T extends Promise ? UnwrapPromise627 : T; -type UnwrapArray627 = T extends (infer U)[] ? UnwrapArray627 : T; -type Head627 = T extends [infer H, ...infer _] ? H : never; -type Tail627 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation627 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation627>] - : never; +interface Registry_06_27 { + entities: Map; + validators: EV_0627; + paths: Set; + merged: DeepMerge_0627; +} -type SmallUnion627 = "a" | "b" | "c" | "d"; -type AllPerms627 = Permutation627; +type CK_0627 = `p06.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig627, - Flat627, - FR627, - BigUnion627, - ExtractAlpha627, - ExcludeZulu627, - OptionalAll627, - RequiredAll627, - ReadonlyAll627, - NullableAll627, - TypeNames627, - Action627, - AllPerms627, -}; +export type { Entity_06_27, Registry_06_27, CK_0627, EP_0627, EV_0627, DeepMerge_0627 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts index 8c109ce9..3e5a7d71 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-28.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-28 (seed 628) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-28 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0628 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0628 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord628 { - a628: { x: number; y: string; z: boolean }; - b628: { p: string[]; q: Record }; - c628: { nested: { deep: { deeper: { deepest: string } } } }; - d628: number; - e628: string; - f628: boolean; - g628: null; - h628: undefined; - i628: bigint; - j628: symbol; +interface Entity_06_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_28 | null; children: Entity_06_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0628: number; y0628: string; z0628: boolean }; } -type PartialBig628 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten628 = T extends Array ? Flatten628 : T; -type Nested628 = number[][][][][][][][][][]; -type Flat628 = Flatten628; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly628 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly628 : T[K]; -}; -type DeepRequired628 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired628 : T[K]; +type Path_0628 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0628}` }[keyof T & string] : never; +type EP_0628 = Path_0628; + +type Val_0628 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0628 } + : T[K] extends object ? { t: 'o'; props: Val_0628 } + : { t: 'u' }; }; -type FR628 = DeepReadonly628>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion628 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha628 = Extract; -type ExcludeZulu628 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA628 { width: number; height: number; depth: number } -interface ShapeB628 { color: string; opacity: number; blend: string } -interface ShapeC628 { x: number; y: number; z: number; w: number } -interface ShapeD628 { label: string; title: string; summary: string } - -type Combined628 = ShapeA628 & ShapeB628 & ShapeC628 & ShapeD628; -type OptionalAll628 = { [K in keyof Combined628]?: Combined628[K] }; -type RequiredAll628 = { [K in keyof Combined628]-?: Combined628[K] }; -type ReadonlyAll628 = { readonly [K in keyof Combined628]: Combined628[K] }; -type NullableAll628 = { [K in keyof Combined628]: Combined628[K] | null }; +type EV_0628 = Val_0628; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString628 = T extends string ? true : false; -type IsNumber628 = T extends number ? true : false; -type TypeName628 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames628 = { - [K in keyof BigRecord628]: TypeName628; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb628 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource628 = "user" | "post" | "comment" | "tag" | "category"; -type Action628 = `${Verb628}_${Resource628}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise628 = T extends Promise ? UnwrapPromise628 : T; -type UnwrapArray628 = T extends (infer U)[] ? UnwrapArray628 : T; -type Head628 = T extends [infer H, ...infer _] ? H : never; -type Tail628 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation628 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation628>] - : never; +interface Registry_06_28 { + entities: Map; + validators: EV_0628; + paths: Set; + merged: DeepMerge_0628; +} -type SmallUnion628 = "a" | "b" | "c" | "d"; -type AllPerms628 = Permutation628; +type CK_0628 = `p06.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig628, - Flat628, - FR628, - BigUnion628, - ExtractAlpha628, - ExcludeZulu628, - OptionalAll628, - RequiredAll628, - ReadonlyAll628, - NullableAll628, - TypeNames628, - Action628, - AllPerms628, -}; +export type { Entity_06_28, Registry_06_28, CK_0628, EP_0628, EV_0628, DeepMerge_0628 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts index ead2f896..b480d038 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-29.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-29 (seed 629) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-29 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0629 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0629 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord629 { - a629: { x: number; y: string; z: boolean }; - b629: { p: string[]; q: Record }; - c629: { nested: { deep: { deeper: { deepest: string } } } }; - d629: number; - e629: string; - f629: boolean; - g629: null; - h629: undefined; - i629: bigint; - j629: symbol; +interface Entity_06_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_29 | null; children: Entity_06_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0629: number; y0629: string; z0629: boolean }; } -type PartialBig629 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten629 = T extends Array ? Flatten629 : T; -type Nested629 = number[][][][][][][][][][]; -type Flat629 = Flatten629; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly629 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly629 : T[K]; -}; -type DeepRequired629 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired629 : T[K]; +type Path_0629 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0629}` }[keyof T & string] : never; +type EP_0629 = Path_0629; + +type Val_0629 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0629 } + : T[K] extends object ? { t: 'o'; props: Val_0629 } + : { t: 'u' }; }; -type FR629 = DeepReadonly629>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion629 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha629 = Extract; -type ExcludeZulu629 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA629 { width: number; height: number; depth: number } -interface ShapeB629 { color: string; opacity: number; blend: string } -interface ShapeC629 { x: number; y: number; z: number; w: number } -interface ShapeD629 { label: string; title: string; summary: string } - -type Combined629 = ShapeA629 & ShapeB629 & ShapeC629 & ShapeD629; -type OptionalAll629 = { [K in keyof Combined629]?: Combined629[K] }; -type RequiredAll629 = { [K in keyof Combined629]-?: Combined629[K] }; -type ReadonlyAll629 = { readonly [K in keyof Combined629]: Combined629[K] }; -type NullableAll629 = { [K in keyof Combined629]: Combined629[K] | null }; +type EV_0629 = Val_0629; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString629 = T extends string ? true : false; -type IsNumber629 = T extends number ? true : false; -type TypeName629 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames629 = { - [K in keyof BigRecord629]: TypeName629; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb629 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource629 = "user" | "post" | "comment" | "tag" | "category"; -type Action629 = `${Verb629}_${Resource629}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise629 = T extends Promise ? UnwrapPromise629 : T; -type UnwrapArray629 = T extends (infer U)[] ? UnwrapArray629 : T; -type Head629 = T extends [infer H, ...infer _] ? H : never; -type Tail629 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation629 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation629>] - : never; +interface Registry_06_29 { + entities: Map; + validators: EV_0629; + paths: Set; + merged: DeepMerge_0629; +} -type SmallUnion629 = "a" | "b" | "c" | "d"; -type AllPerms629 = Permutation629; +type CK_0629 = `p06.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig629, - Flat629, - FR629, - BigUnion629, - ExtractAlpha629, - ExcludeZulu629, - OptionalAll629, - RequiredAll629, - ReadonlyAll629, - NullableAll629, - TypeNames629, - Action629, - AllPerms629, -}; +export type { Entity_06_29, Registry_06_29, CK_0629, EP_0629, EV_0629, DeepMerge_0629 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts index e73b52ea..3aba13b3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-30.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-30 (seed 630) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-30 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0630 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0630 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord630 { - a630: { x: number; y: string; z: boolean }; - b630: { p: string[]; q: Record }; - c630: { nested: { deep: { deeper: { deepest: string } } } }; - d630: number; - e630: string; - f630: boolean; - g630: null; - h630: undefined; - i630: bigint; - j630: symbol; +interface Entity_06_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_30 | null; children: Entity_06_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0630: number; y0630: string; z0630: boolean }; } -type PartialBig630 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten630 = T extends Array ? Flatten630 : T; -type Nested630 = number[][][][][][][][][][]; -type Flat630 = Flatten630; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly630 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly630 : T[K]; -}; -type DeepRequired630 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired630 : T[K]; +type Path_0630 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0630}` }[keyof T & string] : never; +type EP_0630 = Path_0630; + +type Val_0630 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0630 } + : T[K] extends object ? { t: 'o'; props: Val_0630 } + : { t: 'u' }; }; -type FR630 = DeepReadonly630>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion630 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha630 = Extract; -type ExcludeZulu630 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA630 { width: number; height: number; depth: number } -interface ShapeB630 { color: string; opacity: number; blend: string } -interface ShapeC630 { x: number; y: number; z: number; w: number } -interface ShapeD630 { label: string; title: string; summary: string } - -type Combined630 = ShapeA630 & ShapeB630 & ShapeC630 & ShapeD630; -type OptionalAll630 = { [K in keyof Combined630]?: Combined630[K] }; -type RequiredAll630 = { [K in keyof Combined630]-?: Combined630[K] }; -type ReadonlyAll630 = { readonly [K in keyof Combined630]: Combined630[K] }; -type NullableAll630 = { [K in keyof Combined630]: Combined630[K] | null }; +type EV_0630 = Val_0630; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString630 = T extends string ? true : false; -type IsNumber630 = T extends number ? true : false; -type TypeName630 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames630 = { - [K in keyof BigRecord630]: TypeName630; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb630 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource630 = "user" | "post" | "comment" | "tag" | "category"; -type Action630 = `${Verb630}_${Resource630}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise630 = T extends Promise ? UnwrapPromise630 : T; -type UnwrapArray630 = T extends (infer U)[] ? UnwrapArray630 : T; -type Head630 = T extends [infer H, ...infer _] ? H : never; -type Tail630 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation630 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation630>] - : never; +interface Registry_06_30 { + entities: Map; + validators: EV_0630; + paths: Set; + merged: DeepMerge_0630; +} -type SmallUnion630 = "a" | "b" | "c" | "d"; -type AllPerms630 = Permutation630; +type CK_0630 = `p06.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig630, - Flat630, - FR630, - BigUnion630, - ExtractAlpha630, - ExcludeZulu630, - OptionalAll630, - RequiredAll630, - ReadonlyAll630, - NullableAll630, - TypeNames630, - Action630, - AllPerms630, -}; +export type { Entity_06_30, Registry_06_30, CK_0630, EP_0630, EV_0630, DeepMerge_0630 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts index a1e2962c..f4f72243 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-31.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-31 (seed 631) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-31 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0631 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0631 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord631 { - a631: { x: number; y: string; z: boolean }; - b631: { p: string[]; q: Record }; - c631: { nested: { deep: { deeper: { deepest: string } } } }; - d631: number; - e631: string; - f631: boolean; - g631: null; - h631: undefined; - i631: bigint; - j631: symbol; +interface Entity_06_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_31 | null; children: Entity_06_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0631: number; y0631: string; z0631: boolean }; } -type PartialBig631 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten631 = T extends Array ? Flatten631 : T; -type Nested631 = number[][][][][][][][][][]; -type Flat631 = Flatten631; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly631 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly631 : T[K]; -}; -type DeepRequired631 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired631 : T[K]; +type Path_0631 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0631}` }[keyof T & string] : never; +type EP_0631 = Path_0631; + +type Val_0631 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0631 } + : T[K] extends object ? { t: 'o'; props: Val_0631 } + : { t: 'u' }; }; -type FR631 = DeepReadonly631>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion631 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha631 = Extract; -type ExcludeZulu631 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA631 { width: number; height: number; depth: number } -interface ShapeB631 { color: string; opacity: number; blend: string } -interface ShapeC631 { x: number; y: number; z: number; w: number } -interface ShapeD631 { label: string; title: string; summary: string } - -type Combined631 = ShapeA631 & ShapeB631 & ShapeC631 & ShapeD631; -type OptionalAll631 = { [K in keyof Combined631]?: Combined631[K] }; -type RequiredAll631 = { [K in keyof Combined631]-?: Combined631[K] }; -type ReadonlyAll631 = { readonly [K in keyof Combined631]: Combined631[K] }; -type NullableAll631 = { [K in keyof Combined631]: Combined631[K] | null }; +type EV_0631 = Val_0631; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString631 = T extends string ? true : false; -type IsNumber631 = T extends number ? true : false; -type TypeName631 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames631 = { - [K in keyof BigRecord631]: TypeName631; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb631 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource631 = "user" | "post" | "comment" | "tag" | "category"; -type Action631 = `${Verb631}_${Resource631}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise631 = T extends Promise ? UnwrapPromise631 : T; -type UnwrapArray631 = T extends (infer U)[] ? UnwrapArray631 : T; -type Head631 = T extends [infer H, ...infer _] ? H : never; -type Tail631 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation631 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation631>] - : never; +interface Registry_06_31 { + entities: Map; + validators: EV_0631; + paths: Set; + merged: DeepMerge_0631; +} -type SmallUnion631 = "a" | "b" | "c" | "d"; -type AllPerms631 = Permutation631; +type CK_0631 = `p06.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig631, - Flat631, - FR631, - BigUnion631, - ExtractAlpha631, - ExcludeZulu631, - OptionalAll631, - RequiredAll631, - ReadonlyAll631, - NullableAll631, - TypeNames631, - Action631, - AllPerms631, -}; +export type { Entity_06_31, Registry_06_31, CK_0631, EP_0631, EV_0631, DeepMerge_0631 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts index 9dcc9db1..bafa36b4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-32.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-32 (seed 632) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-32 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0632 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0632 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord632 { - a632: { x: number; y: string; z: boolean }; - b632: { p: string[]; q: Record }; - c632: { nested: { deep: { deeper: { deepest: string } } } }; - d632: number; - e632: string; - f632: boolean; - g632: null; - h632: undefined; - i632: bigint; - j632: symbol; +interface Entity_06_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_32 | null; children: Entity_06_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0632: number; y0632: string; z0632: boolean }; } -type PartialBig632 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten632 = T extends Array ? Flatten632 : T; -type Nested632 = number[][][][][][][][][][]; -type Flat632 = Flatten632; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly632 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly632 : T[K]; -}; -type DeepRequired632 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired632 : T[K]; +type Path_0632 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0632}` }[keyof T & string] : never; +type EP_0632 = Path_0632; + +type Val_0632 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0632 } + : T[K] extends object ? { t: 'o'; props: Val_0632 } + : { t: 'u' }; }; -type FR632 = DeepReadonly632>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion632 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha632 = Extract; -type ExcludeZulu632 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA632 { width: number; height: number; depth: number } -interface ShapeB632 { color: string; opacity: number; blend: string } -interface ShapeC632 { x: number; y: number; z: number; w: number } -interface ShapeD632 { label: string; title: string; summary: string } - -type Combined632 = ShapeA632 & ShapeB632 & ShapeC632 & ShapeD632; -type OptionalAll632 = { [K in keyof Combined632]?: Combined632[K] }; -type RequiredAll632 = { [K in keyof Combined632]-?: Combined632[K] }; -type ReadonlyAll632 = { readonly [K in keyof Combined632]: Combined632[K] }; -type NullableAll632 = { [K in keyof Combined632]: Combined632[K] | null }; +type EV_0632 = Val_0632; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString632 = T extends string ? true : false; -type IsNumber632 = T extends number ? true : false; -type TypeName632 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames632 = { - [K in keyof BigRecord632]: TypeName632; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb632 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource632 = "user" | "post" | "comment" | "tag" | "category"; -type Action632 = `${Verb632}_${Resource632}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise632 = T extends Promise ? UnwrapPromise632 : T; -type UnwrapArray632 = T extends (infer U)[] ? UnwrapArray632 : T; -type Head632 = T extends [infer H, ...infer _] ? H : never; -type Tail632 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation632 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation632>] - : never; +interface Registry_06_32 { + entities: Map; + validators: EV_0632; + paths: Set; + merged: DeepMerge_0632; +} -type SmallUnion632 = "a" | "b" | "c" | "d"; -type AllPerms632 = Permutation632; +type CK_0632 = `p06.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig632, - Flat632, - FR632, - BigUnion632, - ExtractAlpha632, - ExcludeZulu632, - OptionalAll632, - RequiredAll632, - ReadonlyAll632, - NullableAll632, - TypeNames632, - Action632, - AllPerms632, -}; +export type { Entity_06_32, Registry_06_32, CK_0632, EP_0632, EV_0632, DeepMerge_0632 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts index 5a50fa2a..cf32c54f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-33.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-33 (seed 633) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-33 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0633 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0633 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord633 { - a633: { x: number; y: string; z: boolean }; - b633: { p: string[]; q: Record }; - c633: { nested: { deep: { deeper: { deepest: string } } } }; - d633: number; - e633: string; - f633: boolean; - g633: null; - h633: undefined; - i633: bigint; - j633: symbol; +interface Entity_06_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_33 | null; children: Entity_06_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0633: number; y0633: string; z0633: boolean }; } -type PartialBig633 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten633 = T extends Array ? Flatten633 : T; -type Nested633 = number[][][][][][][][][][]; -type Flat633 = Flatten633; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly633 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly633 : T[K]; -}; -type DeepRequired633 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired633 : T[K]; +type Path_0633 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0633}` }[keyof T & string] : never; +type EP_0633 = Path_0633; + +type Val_0633 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0633 } + : T[K] extends object ? { t: 'o'; props: Val_0633 } + : { t: 'u' }; }; -type FR633 = DeepReadonly633>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion633 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha633 = Extract; -type ExcludeZulu633 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA633 { width: number; height: number; depth: number } -interface ShapeB633 { color: string; opacity: number; blend: string } -interface ShapeC633 { x: number; y: number; z: number; w: number } -interface ShapeD633 { label: string; title: string; summary: string } - -type Combined633 = ShapeA633 & ShapeB633 & ShapeC633 & ShapeD633; -type OptionalAll633 = { [K in keyof Combined633]?: Combined633[K] }; -type RequiredAll633 = { [K in keyof Combined633]-?: Combined633[K] }; -type ReadonlyAll633 = { readonly [K in keyof Combined633]: Combined633[K] }; -type NullableAll633 = { [K in keyof Combined633]: Combined633[K] | null }; +type EV_0633 = Val_0633; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString633 = T extends string ? true : false; -type IsNumber633 = T extends number ? true : false; -type TypeName633 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames633 = { - [K in keyof BigRecord633]: TypeName633; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb633 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource633 = "user" | "post" | "comment" | "tag" | "category"; -type Action633 = `${Verb633}_${Resource633}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise633 = T extends Promise ? UnwrapPromise633 : T; -type UnwrapArray633 = T extends (infer U)[] ? UnwrapArray633 : T; -type Head633 = T extends [infer H, ...infer _] ? H : never; -type Tail633 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation633 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation633>] - : never; +interface Registry_06_33 { + entities: Map; + validators: EV_0633; + paths: Set; + merged: DeepMerge_0633; +} -type SmallUnion633 = "a" | "b" | "c" | "d"; -type AllPerms633 = Permutation633; +type CK_0633 = `p06.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig633, - Flat633, - FR633, - BigUnion633, - ExtractAlpha633, - ExcludeZulu633, - OptionalAll633, - RequiredAll633, - ReadonlyAll633, - NullableAll633, - TypeNames633, - Action633, - AllPerms633, -}; +export type { Entity_06_33, Registry_06_33, CK_0633, EP_0633, EV_0633, DeepMerge_0633 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts index 637e5c42..7ba68ecc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-34.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-34 (seed 634) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-34 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0634 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0634 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord634 { - a634: { x: number; y: string; z: boolean }; - b634: { p: string[]; q: Record }; - c634: { nested: { deep: { deeper: { deepest: string } } } }; - d634: number; - e634: string; - f634: boolean; - g634: null; - h634: undefined; - i634: bigint; - j634: symbol; +interface Entity_06_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_34 | null; children: Entity_06_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0634: number; y0634: string; z0634: boolean }; } -type PartialBig634 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten634 = T extends Array ? Flatten634 : T; -type Nested634 = number[][][][][][][][][][]; -type Flat634 = Flatten634; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly634 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly634 : T[K]; -}; -type DeepRequired634 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired634 : T[K]; +type Path_0634 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0634}` }[keyof T & string] : never; +type EP_0634 = Path_0634; + +type Val_0634 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0634 } + : T[K] extends object ? { t: 'o'; props: Val_0634 } + : { t: 'u' }; }; -type FR634 = DeepReadonly634>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion634 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha634 = Extract; -type ExcludeZulu634 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA634 { width: number; height: number; depth: number } -interface ShapeB634 { color: string; opacity: number; blend: string } -interface ShapeC634 { x: number; y: number; z: number; w: number } -interface ShapeD634 { label: string; title: string; summary: string } - -type Combined634 = ShapeA634 & ShapeB634 & ShapeC634 & ShapeD634; -type OptionalAll634 = { [K in keyof Combined634]?: Combined634[K] }; -type RequiredAll634 = { [K in keyof Combined634]-?: Combined634[K] }; -type ReadonlyAll634 = { readonly [K in keyof Combined634]: Combined634[K] }; -type NullableAll634 = { [K in keyof Combined634]: Combined634[K] | null }; +type EV_0634 = Val_0634; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString634 = T extends string ? true : false; -type IsNumber634 = T extends number ? true : false; -type TypeName634 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames634 = { - [K in keyof BigRecord634]: TypeName634; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb634 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource634 = "user" | "post" | "comment" | "tag" | "category"; -type Action634 = `${Verb634}_${Resource634}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise634 = T extends Promise ? UnwrapPromise634 : T; -type UnwrapArray634 = T extends (infer U)[] ? UnwrapArray634 : T; -type Head634 = T extends [infer H, ...infer _] ? H : never; -type Tail634 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation634 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation634>] - : never; +interface Registry_06_34 { + entities: Map; + validators: EV_0634; + paths: Set; + merged: DeepMerge_0634; +} -type SmallUnion634 = "a" | "b" | "c" | "d"; -type AllPerms634 = Permutation634; +type CK_0634 = `p06.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig634, - Flat634, - FR634, - BigUnion634, - ExtractAlpha634, - ExcludeZulu634, - OptionalAll634, - RequiredAll634, - ReadonlyAll634, - NullableAll634, - TypeNames634, - Action634, - AllPerms634, -}; +export type { Entity_06_34, Registry_06_34, CK_0634, EP_0634, EV_0634, DeepMerge_0634 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts index 7bf20fc9..4b39dbe9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-35.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-35 (seed 635) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-35 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0635 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0635 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord635 { - a635: { x: number; y: string; z: boolean }; - b635: { p: string[]; q: Record }; - c635: { nested: { deep: { deeper: { deepest: string } } } }; - d635: number; - e635: string; - f635: boolean; - g635: null; - h635: undefined; - i635: bigint; - j635: symbol; +interface Entity_06_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_35 | null; children: Entity_06_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0635: number; y0635: string; z0635: boolean }; } -type PartialBig635 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten635 = T extends Array ? Flatten635 : T; -type Nested635 = number[][][][][][][][][][]; -type Flat635 = Flatten635; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly635 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly635 : T[K]; -}; -type DeepRequired635 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired635 : T[K]; +type Path_0635 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0635}` }[keyof T & string] : never; +type EP_0635 = Path_0635; + +type Val_0635 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0635 } + : T[K] extends object ? { t: 'o'; props: Val_0635 } + : { t: 'u' }; }; -type FR635 = DeepReadonly635>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion635 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha635 = Extract; -type ExcludeZulu635 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA635 { width: number; height: number; depth: number } -interface ShapeB635 { color: string; opacity: number; blend: string } -interface ShapeC635 { x: number; y: number; z: number; w: number } -interface ShapeD635 { label: string; title: string; summary: string } - -type Combined635 = ShapeA635 & ShapeB635 & ShapeC635 & ShapeD635; -type OptionalAll635 = { [K in keyof Combined635]?: Combined635[K] }; -type RequiredAll635 = { [K in keyof Combined635]-?: Combined635[K] }; -type ReadonlyAll635 = { readonly [K in keyof Combined635]: Combined635[K] }; -type NullableAll635 = { [K in keyof Combined635]: Combined635[K] | null }; +type EV_0635 = Val_0635; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString635 = T extends string ? true : false; -type IsNumber635 = T extends number ? true : false; -type TypeName635 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames635 = { - [K in keyof BigRecord635]: TypeName635; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb635 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource635 = "user" | "post" | "comment" | "tag" | "category"; -type Action635 = `${Verb635}_${Resource635}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise635 = T extends Promise ? UnwrapPromise635 : T; -type UnwrapArray635 = T extends (infer U)[] ? UnwrapArray635 : T; -type Head635 = T extends [infer H, ...infer _] ? H : never; -type Tail635 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation635 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation635>] - : never; +interface Registry_06_35 { + entities: Map; + validators: EV_0635; + paths: Set; + merged: DeepMerge_0635; +} -type SmallUnion635 = "a" | "b" | "c" | "d"; -type AllPerms635 = Permutation635; +type CK_0635 = `p06.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig635, - Flat635, - FR635, - BigUnion635, - ExtractAlpha635, - ExcludeZulu635, - OptionalAll635, - RequiredAll635, - ReadonlyAll635, - NullableAll635, - TypeNames635, - Action635, - AllPerms635, -}; +export type { Entity_06_35, Registry_06_35, CK_0635, EP_0635, EV_0635, DeepMerge_0635 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts index e2404dad..237224ff 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-36.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-36 (seed 636) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-36 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0636 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0636 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord636 { - a636: { x: number; y: string; z: boolean }; - b636: { p: string[]; q: Record }; - c636: { nested: { deep: { deeper: { deepest: string } } } }; - d636: number; - e636: string; - f636: boolean; - g636: null; - h636: undefined; - i636: bigint; - j636: symbol; +interface Entity_06_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_36 | null; children: Entity_06_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0636: number; y0636: string; z0636: boolean }; } -type PartialBig636 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten636 = T extends Array ? Flatten636 : T; -type Nested636 = number[][][][][][][][][][]; -type Flat636 = Flatten636; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly636 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly636 : T[K]; -}; -type DeepRequired636 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired636 : T[K]; +type Path_0636 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0636}` }[keyof T & string] : never; +type EP_0636 = Path_0636; + +type Val_0636 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0636 } + : T[K] extends object ? { t: 'o'; props: Val_0636 } + : { t: 'u' }; }; -type FR636 = DeepReadonly636>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion636 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha636 = Extract; -type ExcludeZulu636 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA636 { width: number; height: number; depth: number } -interface ShapeB636 { color: string; opacity: number; blend: string } -interface ShapeC636 { x: number; y: number; z: number; w: number } -interface ShapeD636 { label: string; title: string; summary: string } - -type Combined636 = ShapeA636 & ShapeB636 & ShapeC636 & ShapeD636; -type OptionalAll636 = { [K in keyof Combined636]?: Combined636[K] }; -type RequiredAll636 = { [K in keyof Combined636]-?: Combined636[K] }; -type ReadonlyAll636 = { readonly [K in keyof Combined636]: Combined636[K] }; -type NullableAll636 = { [K in keyof Combined636]: Combined636[K] | null }; +type EV_0636 = Val_0636; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString636 = T extends string ? true : false; -type IsNumber636 = T extends number ? true : false; -type TypeName636 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames636 = { - [K in keyof BigRecord636]: TypeName636; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb636 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource636 = "user" | "post" | "comment" | "tag" | "category"; -type Action636 = `${Verb636}_${Resource636}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise636 = T extends Promise ? UnwrapPromise636 : T; -type UnwrapArray636 = T extends (infer U)[] ? UnwrapArray636 : T; -type Head636 = T extends [infer H, ...infer _] ? H : never; -type Tail636 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation636 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation636>] - : never; +interface Registry_06_36 { + entities: Map; + validators: EV_0636; + paths: Set; + merged: DeepMerge_0636; +} -type SmallUnion636 = "a" | "b" | "c" | "d"; -type AllPerms636 = Permutation636; +type CK_0636 = `p06.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig636, - Flat636, - FR636, - BigUnion636, - ExtractAlpha636, - ExcludeZulu636, - OptionalAll636, - RequiredAll636, - ReadonlyAll636, - NullableAll636, - TypeNames636, - Action636, - AllPerms636, -}; +export type { Entity_06_36, Registry_06_36, CK_0636, EP_0636, EV_0636, DeepMerge_0636 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts index 75505280..92171b8d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-37.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-37 (seed 637) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-37 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0637 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0637 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord637 { - a637: { x: number; y: string; z: boolean }; - b637: { p: string[]; q: Record }; - c637: { nested: { deep: { deeper: { deepest: string } } } }; - d637: number; - e637: string; - f637: boolean; - g637: null; - h637: undefined; - i637: bigint; - j637: symbol; +interface Entity_06_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_37 | null; children: Entity_06_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0637: number; y0637: string; z0637: boolean }; } -type PartialBig637 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten637 = T extends Array ? Flatten637 : T; -type Nested637 = number[][][][][][][][][][]; -type Flat637 = Flatten637; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly637 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly637 : T[K]; -}; -type DeepRequired637 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired637 : T[K]; +type Path_0637 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0637}` }[keyof T & string] : never; +type EP_0637 = Path_0637; + +type Val_0637 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0637 } + : T[K] extends object ? { t: 'o'; props: Val_0637 } + : { t: 'u' }; }; -type FR637 = DeepReadonly637>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion637 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha637 = Extract; -type ExcludeZulu637 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA637 { width: number; height: number; depth: number } -interface ShapeB637 { color: string; opacity: number; blend: string } -interface ShapeC637 { x: number; y: number; z: number; w: number } -interface ShapeD637 { label: string; title: string; summary: string } - -type Combined637 = ShapeA637 & ShapeB637 & ShapeC637 & ShapeD637; -type OptionalAll637 = { [K in keyof Combined637]?: Combined637[K] }; -type RequiredAll637 = { [K in keyof Combined637]-?: Combined637[K] }; -type ReadonlyAll637 = { readonly [K in keyof Combined637]: Combined637[K] }; -type NullableAll637 = { [K in keyof Combined637]: Combined637[K] | null }; +type EV_0637 = Val_0637; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString637 = T extends string ? true : false; -type IsNumber637 = T extends number ? true : false; -type TypeName637 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames637 = { - [K in keyof BigRecord637]: TypeName637; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb637 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource637 = "user" | "post" | "comment" | "tag" | "category"; -type Action637 = `${Verb637}_${Resource637}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise637 = T extends Promise ? UnwrapPromise637 : T; -type UnwrapArray637 = T extends (infer U)[] ? UnwrapArray637 : T; -type Head637 = T extends [infer H, ...infer _] ? H : never; -type Tail637 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation637 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation637>] - : never; +interface Registry_06_37 { + entities: Map; + validators: EV_0637; + paths: Set; + merged: DeepMerge_0637; +} -type SmallUnion637 = "a" | "b" | "c" | "d"; -type AllPerms637 = Permutation637; +type CK_0637 = `p06.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig637, - Flat637, - FR637, - BigUnion637, - ExtractAlpha637, - ExcludeZulu637, - OptionalAll637, - RequiredAll637, - ReadonlyAll637, - NullableAll637, - TypeNames637, - Action637, - AllPerms637, -}; +export type { Entity_06_37, Registry_06_37, CK_0637, EP_0637, EV_0637, DeepMerge_0637 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts index 43d71860..5724b20e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-38.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-38 (seed 638) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-38 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0638 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0638 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord638 { - a638: { x: number; y: string; z: boolean }; - b638: { p: string[]; q: Record }; - c638: { nested: { deep: { deeper: { deepest: string } } } }; - d638: number; - e638: string; - f638: boolean; - g638: null; - h638: undefined; - i638: bigint; - j638: symbol; +interface Entity_06_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_38 | null; children: Entity_06_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0638: number; y0638: string; z0638: boolean }; } -type PartialBig638 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten638 = T extends Array ? Flatten638 : T; -type Nested638 = number[][][][][][][][][][]; -type Flat638 = Flatten638; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly638 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly638 : T[K]; -}; -type DeepRequired638 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired638 : T[K]; +type Path_0638 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0638}` }[keyof T & string] : never; +type EP_0638 = Path_0638; + +type Val_0638 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0638 } + : T[K] extends object ? { t: 'o'; props: Val_0638 } + : { t: 'u' }; }; -type FR638 = DeepReadonly638>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion638 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha638 = Extract; -type ExcludeZulu638 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA638 { width: number; height: number; depth: number } -interface ShapeB638 { color: string; opacity: number; blend: string } -interface ShapeC638 { x: number; y: number; z: number; w: number } -interface ShapeD638 { label: string; title: string; summary: string } - -type Combined638 = ShapeA638 & ShapeB638 & ShapeC638 & ShapeD638; -type OptionalAll638 = { [K in keyof Combined638]?: Combined638[K] }; -type RequiredAll638 = { [K in keyof Combined638]-?: Combined638[K] }; -type ReadonlyAll638 = { readonly [K in keyof Combined638]: Combined638[K] }; -type NullableAll638 = { [K in keyof Combined638]: Combined638[K] | null }; +type EV_0638 = Val_0638; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString638 = T extends string ? true : false; -type IsNumber638 = T extends number ? true : false; -type TypeName638 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames638 = { - [K in keyof BigRecord638]: TypeName638; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb638 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource638 = "user" | "post" | "comment" | "tag" | "category"; -type Action638 = `${Verb638}_${Resource638}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise638 = T extends Promise ? UnwrapPromise638 : T; -type UnwrapArray638 = T extends (infer U)[] ? UnwrapArray638 : T; -type Head638 = T extends [infer H, ...infer _] ? H : never; -type Tail638 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation638 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation638>] - : never; +interface Registry_06_38 { + entities: Map; + validators: EV_0638; + paths: Set; + merged: DeepMerge_0638; +} -type SmallUnion638 = "a" | "b" | "c" | "d"; -type AllPerms638 = Permutation638; +type CK_0638 = `p06.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig638, - Flat638, - FR638, - BigUnion638, - ExtractAlpha638, - ExcludeZulu638, - OptionalAll638, - RequiredAll638, - ReadonlyAll638, - NullableAll638, - TypeNames638, - Action638, - AllPerms638, -}; +export type { Entity_06_38, Registry_06_38, CK_0638, EP_0638, EV_0638, DeepMerge_0638 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts index 3ee63540..8d512fc4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-39.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-39 (seed 639) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-39 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0639 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0639 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord639 { - a639: { x: number; y: string; z: boolean }; - b639: { p: string[]; q: Record }; - c639: { nested: { deep: { deeper: { deepest: string } } } }; - d639: number; - e639: string; - f639: boolean; - g639: null; - h639: undefined; - i639: bigint; - j639: symbol; +interface Entity_06_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_39 | null; children: Entity_06_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0639: number; y0639: string; z0639: boolean }; } -type PartialBig639 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten639 = T extends Array ? Flatten639 : T; -type Nested639 = number[][][][][][][][][][]; -type Flat639 = Flatten639; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly639 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly639 : T[K]; -}; -type DeepRequired639 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired639 : T[K]; +type Path_0639 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0639}` }[keyof T & string] : never; +type EP_0639 = Path_0639; + +type Val_0639 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0639 } + : T[K] extends object ? { t: 'o'; props: Val_0639 } + : { t: 'u' }; }; -type FR639 = DeepReadonly639>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion639 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha639 = Extract; -type ExcludeZulu639 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA639 { width: number; height: number; depth: number } -interface ShapeB639 { color: string; opacity: number; blend: string } -interface ShapeC639 { x: number; y: number; z: number; w: number } -interface ShapeD639 { label: string; title: string; summary: string } - -type Combined639 = ShapeA639 & ShapeB639 & ShapeC639 & ShapeD639; -type OptionalAll639 = { [K in keyof Combined639]?: Combined639[K] }; -type RequiredAll639 = { [K in keyof Combined639]-?: Combined639[K] }; -type ReadonlyAll639 = { readonly [K in keyof Combined639]: Combined639[K] }; -type NullableAll639 = { [K in keyof Combined639]: Combined639[K] | null }; +type EV_0639 = Val_0639; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString639 = T extends string ? true : false; -type IsNumber639 = T extends number ? true : false; -type TypeName639 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames639 = { - [K in keyof BigRecord639]: TypeName639; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb639 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource639 = "user" | "post" | "comment" | "tag" | "category"; -type Action639 = `${Verb639}_${Resource639}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise639 = T extends Promise ? UnwrapPromise639 : T; -type UnwrapArray639 = T extends (infer U)[] ? UnwrapArray639 : T; -type Head639 = T extends [infer H, ...infer _] ? H : never; -type Tail639 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation639 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation639>] - : never; +interface Registry_06_39 { + entities: Map; + validators: EV_0639; + paths: Set; + merged: DeepMerge_0639; +} -type SmallUnion639 = "a" | "b" | "c" | "d"; -type AllPerms639 = Permutation639; +type CK_0639 = `p06.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig639, - Flat639, - FR639, - BigUnion639, - ExtractAlpha639, - ExcludeZulu639, - OptionalAll639, - RequiredAll639, - ReadonlyAll639, - NullableAll639, - TypeNames639, - Action639, - AllPerms639, -}; +export type { Entity_06_39, Registry_06_39, CK_0639, EP_0639, EV_0639, DeepMerge_0639 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts index 46bf89d7..681566dc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-40.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-40 (seed 640) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-40 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0640 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0640 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord640 { - a640: { x: number; y: string; z: boolean }; - b640: { p: string[]; q: Record }; - c640: { nested: { deep: { deeper: { deepest: string } } } }; - d640: number; - e640: string; - f640: boolean; - g640: null; - h640: undefined; - i640: bigint; - j640: symbol; +interface Entity_06_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_40 | null; children: Entity_06_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0640: number; y0640: string; z0640: boolean }; } -type PartialBig640 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten640 = T extends Array ? Flatten640 : T; -type Nested640 = number[][][][][][][][][][]; -type Flat640 = Flatten640; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly640 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly640 : T[K]; -}; -type DeepRequired640 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired640 : T[K]; +type Path_0640 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0640}` }[keyof T & string] : never; +type EP_0640 = Path_0640; + +type Val_0640 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0640 } + : T[K] extends object ? { t: 'o'; props: Val_0640 } + : { t: 'u' }; }; -type FR640 = DeepReadonly640>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion640 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha640 = Extract; -type ExcludeZulu640 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA640 { width: number; height: number; depth: number } -interface ShapeB640 { color: string; opacity: number; blend: string } -interface ShapeC640 { x: number; y: number; z: number; w: number } -interface ShapeD640 { label: string; title: string; summary: string } - -type Combined640 = ShapeA640 & ShapeB640 & ShapeC640 & ShapeD640; -type OptionalAll640 = { [K in keyof Combined640]?: Combined640[K] }; -type RequiredAll640 = { [K in keyof Combined640]-?: Combined640[K] }; -type ReadonlyAll640 = { readonly [K in keyof Combined640]: Combined640[K] }; -type NullableAll640 = { [K in keyof Combined640]: Combined640[K] | null }; +type EV_0640 = Val_0640; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString640 = T extends string ? true : false; -type IsNumber640 = T extends number ? true : false; -type TypeName640 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames640 = { - [K in keyof BigRecord640]: TypeName640; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb640 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource640 = "user" | "post" | "comment" | "tag" | "category"; -type Action640 = `${Verb640}_${Resource640}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise640 = T extends Promise ? UnwrapPromise640 : T; -type UnwrapArray640 = T extends (infer U)[] ? UnwrapArray640 : T; -type Head640 = T extends [infer H, ...infer _] ? H : never; -type Tail640 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation640 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation640>] - : never; +interface Registry_06_40 { + entities: Map; + validators: EV_0640; + paths: Set; + merged: DeepMerge_0640; +} -type SmallUnion640 = "a" | "b" | "c" | "d"; -type AllPerms640 = Permutation640; +type CK_0640 = `p06.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig640, - Flat640, - FR640, - BigUnion640, - ExtractAlpha640, - ExcludeZulu640, - OptionalAll640, - RequiredAll640, - ReadonlyAll640, - NullableAll640, - TypeNames640, - Action640, - AllPerms640, -}; +export type { Entity_06_40, Registry_06_40, CK_0640, EP_0640, EV_0640, DeepMerge_0640 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts index acf8e5df..64ab6a4a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-41.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-41 (seed 641) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-41 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0641 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0641 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord641 { - a641: { x: number; y: string; z: boolean }; - b641: { p: string[]; q: Record }; - c641: { nested: { deep: { deeper: { deepest: string } } } }; - d641: number; - e641: string; - f641: boolean; - g641: null; - h641: undefined; - i641: bigint; - j641: symbol; +interface Entity_06_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_41 | null; children: Entity_06_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0641: number; y0641: string; z0641: boolean }; } -type PartialBig641 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten641 = T extends Array ? Flatten641 : T; -type Nested641 = number[][][][][][][][][][]; -type Flat641 = Flatten641; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly641 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly641 : T[K]; -}; -type DeepRequired641 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired641 : T[K]; +type Path_0641 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0641}` }[keyof T & string] : never; +type EP_0641 = Path_0641; + +type Val_0641 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0641 } + : T[K] extends object ? { t: 'o'; props: Val_0641 } + : { t: 'u' }; }; -type FR641 = DeepReadonly641>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion641 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha641 = Extract; -type ExcludeZulu641 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA641 { width: number; height: number; depth: number } -interface ShapeB641 { color: string; opacity: number; blend: string } -interface ShapeC641 { x: number; y: number; z: number; w: number } -interface ShapeD641 { label: string; title: string; summary: string } - -type Combined641 = ShapeA641 & ShapeB641 & ShapeC641 & ShapeD641; -type OptionalAll641 = { [K in keyof Combined641]?: Combined641[K] }; -type RequiredAll641 = { [K in keyof Combined641]-?: Combined641[K] }; -type ReadonlyAll641 = { readonly [K in keyof Combined641]: Combined641[K] }; -type NullableAll641 = { [K in keyof Combined641]: Combined641[K] | null }; +type EV_0641 = Val_0641; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString641 = T extends string ? true : false; -type IsNumber641 = T extends number ? true : false; -type TypeName641 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames641 = { - [K in keyof BigRecord641]: TypeName641; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb641 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource641 = "user" | "post" | "comment" | "tag" | "category"; -type Action641 = `${Verb641}_${Resource641}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise641 = T extends Promise ? UnwrapPromise641 : T; -type UnwrapArray641 = T extends (infer U)[] ? UnwrapArray641 : T; -type Head641 = T extends [infer H, ...infer _] ? H : never; -type Tail641 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation641 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation641>] - : never; +interface Registry_06_41 { + entities: Map; + validators: EV_0641; + paths: Set; + merged: DeepMerge_0641; +} -type SmallUnion641 = "a" | "b" | "c" | "d"; -type AllPerms641 = Permutation641; +type CK_0641 = `p06.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig641, - Flat641, - FR641, - BigUnion641, - ExtractAlpha641, - ExcludeZulu641, - OptionalAll641, - RequiredAll641, - ReadonlyAll641, - NullableAll641, - TypeNames641, - Action641, - AllPerms641, -}; +export type { Entity_06_41, Registry_06_41, CK_0641, EP_0641, EV_0641, DeepMerge_0641 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts index 2e3b66e0..5caddf43 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-42.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-42 (seed 642) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-42 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0642 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0642 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord642 { - a642: { x: number; y: string; z: boolean }; - b642: { p: string[]; q: Record }; - c642: { nested: { deep: { deeper: { deepest: string } } } }; - d642: number; - e642: string; - f642: boolean; - g642: null; - h642: undefined; - i642: bigint; - j642: symbol; +interface Entity_06_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_42 | null; children: Entity_06_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0642: number; y0642: string; z0642: boolean }; } -type PartialBig642 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten642 = T extends Array ? Flatten642 : T; -type Nested642 = number[][][][][][][][][][]; -type Flat642 = Flatten642; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly642 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly642 : T[K]; -}; -type DeepRequired642 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired642 : T[K]; +type Path_0642 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0642}` }[keyof T & string] : never; +type EP_0642 = Path_0642; + +type Val_0642 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0642 } + : T[K] extends object ? { t: 'o'; props: Val_0642 } + : { t: 'u' }; }; -type FR642 = DeepReadonly642>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion642 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha642 = Extract; -type ExcludeZulu642 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA642 { width: number; height: number; depth: number } -interface ShapeB642 { color: string; opacity: number; blend: string } -interface ShapeC642 { x: number; y: number; z: number; w: number } -interface ShapeD642 { label: string; title: string; summary: string } - -type Combined642 = ShapeA642 & ShapeB642 & ShapeC642 & ShapeD642; -type OptionalAll642 = { [K in keyof Combined642]?: Combined642[K] }; -type RequiredAll642 = { [K in keyof Combined642]-?: Combined642[K] }; -type ReadonlyAll642 = { readonly [K in keyof Combined642]: Combined642[K] }; -type NullableAll642 = { [K in keyof Combined642]: Combined642[K] | null }; +type EV_0642 = Val_0642; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString642 = T extends string ? true : false; -type IsNumber642 = T extends number ? true : false; -type TypeName642 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames642 = { - [K in keyof BigRecord642]: TypeName642; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb642 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource642 = "user" | "post" | "comment" | "tag" | "category"; -type Action642 = `${Verb642}_${Resource642}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise642 = T extends Promise ? UnwrapPromise642 : T; -type UnwrapArray642 = T extends (infer U)[] ? UnwrapArray642 : T; -type Head642 = T extends [infer H, ...infer _] ? H : never; -type Tail642 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation642 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation642>] - : never; +interface Registry_06_42 { + entities: Map; + validators: EV_0642; + paths: Set; + merged: DeepMerge_0642; +} -type SmallUnion642 = "a" | "b" | "c" | "d"; -type AllPerms642 = Permutation642; +type CK_0642 = `p06.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig642, - Flat642, - FR642, - BigUnion642, - ExtractAlpha642, - ExcludeZulu642, - OptionalAll642, - RequiredAll642, - ReadonlyAll642, - NullableAll642, - TypeNames642, - Action642, - AllPerms642, -}; +export type { Entity_06_42, Registry_06_42, CK_0642, EP_0642, EV_0642, DeepMerge_0642 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts index c4db10da..02f8bd12 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-43.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-43 (seed 643) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-43 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0643 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0643 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord643 { - a643: { x: number; y: string; z: boolean }; - b643: { p: string[]; q: Record }; - c643: { nested: { deep: { deeper: { deepest: string } } } }; - d643: number; - e643: string; - f643: boolean; - g643: null; - h643: undefined; - i643: bigint; - j643: symbol; +interface Entity_06_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_43 | null; children: Entity_06_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0643: number; y0643: string; z0643: boolean }; } -type PartialBig643 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten643 = T extends Array ? Flatten643 : T; -type Nested643 = number[][][][][][][][][][]; -type Flat643 = Flatten643; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly643 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly643 : T[K]; -}; -type DeepRequired643 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired643 : T[K]; +type Path_0643 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0643}` }[keyof T & string] : never; +type EP_0643 = Path_0643; + +type Val_0643 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0643 } + : T[K] extends object ? { t: 'o'; props: Val_0643 } + : { t: 'u' }; }; -type FR643 = DeepReadonly643>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion643 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha643 = Extract; -type ExcludeZulu643 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA643 { width: number; height: number; depth: number } -interface ShapeB643 { color: string; opacity: number; blend: string } -interface ShapeC643 { x: number; y: number; z: number; w: number } -interface ShapeD643 { label: string; title: string; summary: string } - -type Combined643 = ShapeA643 & ShapeB643 & ShapeC643 & ShapeD643; -type OptionalAll643 = { [K in keyof Combined643]?: Combined643[K] }; -type RequiredAll643 = { [K in keyof Combined643]-?: Combined643[K] }; -type ReadonlyAll643 = { readonly [K in keyof Combined643]: Combined643[K] }; -type NullableAll643 = { [K in keyof Combined643]: Combined643[K] | null }; +type EV_0643 = Val_0643; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString643 = T extends string ? true : false; -type IsNumber643 = T extends number ? true : false; -type TypeName643 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames643 = { - [K in keyof BigRecord643]: TypeName643; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb643 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource643 = "user" | "post" | "comment" | "tag" | "category"; -type Action643 = `${Verb643}_${Resource643}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise643 = T extends Promise ? UnwrapPromise643 : T; -type UnwrapArray643 = T extends (infer U)[] ? UnwrapArray643 : T; -type Head643 = T extends [infer H, ...infer _] ? H : never; -type Tail643 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation643 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation643>] - : never; +interface Registry_06_43 { + entities: Map; + validators: EV_0643; + paths: Set; + merged: DeepMerge_0643; +} -type SmallUnion643 = "a" | "b" | "c" | "d"; -type AllPerms643 = Permutation643; +type CK_0643 = `p06.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig643, - Flat643, - FR643, - BigUnion643, - ExtractAlpha643, - ExcludeZulu643, - OptionalAll643, - RequiredAll643, - ReadonlyAll643, - NullableAll643, - TypeNames643, - Action643, - AllPerms643, -}; +export type { Entity_06_43, Registry_06_43, CK_0643, EP_0643, EV_0643, DeepMerge_0643 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts index c761f9f7..06412ef6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-44.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-44 (seed 644) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-44 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0644 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0644 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord644 { - a644: { x: number; y: string; z: boolean }; - b644: { p: string[]; q: Record }; - c644: { nested: { deep: { deeper: { deepest: string } } } }; - d644: number; - e644: string; - f644: boolean; - g644: null; - h644: undefined; - i644: bigint; - j644: symbol; +interface Entity_06_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_44 | null; children: Entity_06_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0644: number; y0644: string; z0644: boolean }; } -type PartialBig644 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten644 = T extends Array ? Flatten644 : T; -type Nested644 = number[][][][][][][][][][]; -type Flat644 = Flatten644; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly644 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly644 : T[K]; -}; -type DeepRequired644 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired644 : T[K]; +type Path_0644 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0644}` }[keyof T & string] : never; +type EP_0644 = Path_0644; + +type Val_0644 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0644 } + : T[K] extends object ? { t: 'o'; props: Val_0644 } + : { t: 'u' }; }; -type FR644 = DeepReadonly644>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion644 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha644 = Extract; -type ExcludeZulu644 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA644 { width: number; height: number; depth: number } -interface ShapeB644 { color: string; opacity: number; blend: string } -interface ShapeC644 { x: number; y: number; z: number; w: number } -interface ShapeD644 { label: string; title: string; summary: string } - -type Combined644 = ShapeA644 & ShapeB644 & ShapeC644 & ShapeD644; -type OptionalAll644 = { [K in keyof Combined644]?: Combined644[K] }; -type RequiredAll644 = { [K in keyof Combined644]-?: Combined644[K] }; -type ReadonlyAll644 = { readonly [K in keyof Combined644]: Combined644[K] }; -type NullableAll644 = { [K in keyof Combined644]: Combined644[K] | null }; +type EV_0644 = Val_0644; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString644 = T extends string ? true : false; -type IsNumber644 = T extends number ? true : false; -type TypeName644 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames644 = { - [K in keyof BigRecord644]: TypeName644; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb644 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource644 = "user" | "post" | "comment" | "tag" | "category"; -type Action644 = `${Verb644}_${Resource644}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise644 = T extends Promise ? UnwrapPromise644 : T; -type UnwrapArray644 = T extends (infer U)[] ? UnwrapArray644 : T; -type Head644 = T extends [infer H, ...infer _] ? H : never; -type Tail644 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation644 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation644>] - : never; +interface Registry_06_44 { + entities: Map; + validators: EV_0644; + paths: Set; + merged: DeepMerge_0644; +} -type SmallUnion644 = "a" | "b" | "c" | "d"; -type AllPerms644 = Permutation644; +type CK_0644 = `p06.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig644, - Flat644, - FR644, - BigUnion644, - ExtractAlpha644, - ExcludeZulu644, - OptionalAll644, - RequiredAll644, - ReadonlyAll644, - NullableAll644, - TypeNames644, - Action644, - AllPerms644, -}; +export type { Entity_06_44, Registry_06_44, CK_0644, EP_0644, EV_0644, DeepMerge_0644 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts index caf37797..9157d435 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-45.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-45 (seed 645) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-45 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0645 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0645 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord645 { - a645: { x: number; y: string; z: boolean }; - b645: { p: string[]; q: Record }; - c645: { nested: { deep: { deeper: { deepest: string } } } }; - d645: number; - e645: string; - f645: boolean; - g645: null; - h645: undefined; - i645: bigint; - j645: symbol; +interface Entity_06_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_45 | null; children: Entity_06_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0645: number; y0645: string; z0645: boolean }; } -type PartialBig645 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten645 = T extends Array ? Flatten645 : T; -type Nested645 = number[][][][][][][][][][]; -type Flat645 = Flatten645; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly645 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly645 : T[K]; -}; -type DeepRequired645 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired645 : T[K]; +type Path_0645 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0645}` }[keyof T & string] : never; +type EP_0645 = Path_0645; + +type Val_0645 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0645 } + : T[K] extends object ? { t: 'o'; props: Val_0645 } + : { t: 'u' }; }; -type FR645 = DeepReadonly645>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion645 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha645 = Extract; -type ExcludeZulu645 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA645 { width: number; height: number; depth: number } -interface ShapeB645 { color: string; opacity: number; blend: string } -interface ShapeC645 { x: number; y: number; z: number; w: number } -interface ShapeD645 { label: string; title: string; summary: string } - -type Combined645 = ShapeA645 & ShapeB645 & ShapeC645 & ShapeD645; -type OptionalAll645 = { [K in keyof Combined645]?: Combined645[K] }; -type RequiredAll645 = { [K in keyof Combined645]-?: Combined645[K] }; -type ReadonlyAll645 = { readonly [K in keyof Combined645]: Combined645[K] }; -type NullableAll645 = { [K in keyof Combined645]: Combined645[K] | null }; +type EV_0645 = Val_0645; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString645 = T extends string ? true : false; -type IsNumber645 = T extends number ? true : false; -type TypeName645 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames645 = { - [K in keyof BigRecord645]: TypeName645; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb645 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource645 = "user" | "post" | "comment" | "tag" | "category"; -type Action645 = `${Verb645}_${Resource645}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise645 = T extends Promise ? UnwrapPromise645 : T; -type UnwrapArray645 = T extends (infer U)[] ? UnwrapArray645 : T; -type Head645 = T extends [infer H, ...infer _] ? H : never; -type Tail645 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation645 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation645>] - : never; +interface Registry_06_45 { + entities: Map; + validators: EV_0645; + paths: Set; + merged: DeepMerge_0645; +} -type SmallUnion645 = "a" | "b" | "c" | "d"; -type AllPerms645 = Permutation645; +type CK_0645 = `p06.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig645, - Flat645, - FR645, - BigUnion645, - ExtractAlpha645, - ExcludeZulu645, - OptionalAll645, - RequiredAll645, - ReadonlyAll645, - NullableAll645, - TypeNames645, - Action645, - AllPerms645, -}; +export type { Entity_06_45, Registry_06_45, CK_0645, EP_0645, EV_0645, DeepMerge_0645 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts index 9a4c8459..04303e81 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-46.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-46 (seed 646) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-46 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0646 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0646 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord646 { - a646: { x: number; y: string; z: boolean }; - b646: { p: string[]; q: Record }; - c646: { nested: { deep: { deeper: { deepest: string } } } }; - d646: number; - e646: string; - f646: boolean; - g646: null; - h646: undefined; - i646: bigint; - j646: symbol; +interface Entity_06_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_46 | null; children: Entity_06_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0646: number; y0646: string; z0646: boolean }; } -type PartialBig646 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten646 = T extends Array ? Flatten646 : T; -type Nested646 = number[][][][][][][][][][]; -type Flat646 = Flatten646; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly646 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly646 : T[K]; -}; -type DeepRequired646 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired646 : T[K]; +type Path_0646 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0646}` }[keyof T & string] : never; +type EP_0646 = Path_0646; + +type Val_0646 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0646 } + : T[K] extends object ? { t: 'o'; props: Val_0646 } + : { t: 'u' }; }; -type FR646 = DeepReadonly646>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion646 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha646 = Extract; -type ExcludeZulu646 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA646 { width: number; height: number; depth: number } -interface ShapeB646 { color: string; opacity: number; blend: string } -interface ShapeC646 { x: number; y: number; z: number; w: number } -interface ShapeD646 { label: string; title: string; summary: string } - -type Combined646 = ShapeA646 & ShapeB646 & ShapeC646 & ShapeD646; -type OptionalAll646 = { [K in keyof Combined646]?: Combined646[K] }; -type RequiredAll646 = { [K in keyof Combined646]-?: Combined646[K] }; -type ReadonlyAll646 = { readonly [K in keyof Combined646]: Combined646[K] }; -type NullableAll646 = { [K in keyof Combined646]: Combined646[K] | null }; +type EV_0646 = Val_0646; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString646 = T extends string ? true : false; -type IsNumber646 = T extends number ? true : false; -type TypeName646 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames646 = { - [K in keyof BigRecord646]: TypeName646; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb646 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource646 = "user" | "post" | "comment" | "tag" | "category"; -type Action646 = `${Verb646}_${Resource646}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise646 = T extends Promise ? UnwrapPromise646 : T; -type UnwrapArray646 = T extends (infer U)[] ? UnwrapArray646 : T; -type Head646 = T extends [infer H, ...infer _] ? H : never; -type Tail646 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation646 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation646>] - : never; +interface Registry_06_46 { + entities: Map; + validators: EV_0646; + paths: Set; + merged: DeepMerge_0646; +} -type SmallUnion646 = "a" | "b" | "c" | "d"; -type AllPerms646 = Permutation646; +type CK_0646 = `p06.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig646, - Flat646, - FR646, - BigUnion646, - ExtractAlpha646, - ExcludeZulu646, - OptionalAll646, - RequiredAll646, - ReadonlyAll646, - NullableAll646, - TypeNames646, - Action646, - AllPerms646, -}; +export type { Entity_06_46, Registry_06_46, CK_0646, EP_0646, EV_0646, DeepMerge_0646 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts index 4257fa98..f1ac0443 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-47.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-47 (seed 647) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-47 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0647 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0647 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord647 { - a647: { x: number; y: string; z: boolean }; - b647: { p: string[]; q: Record }; - c647: { nested: { deep: { deeper: { deepest: string } } } }; - d647: number; - e647: string; - f647: boolean; - g647: null; - h647: undefined; - i647: bigint; - j647: symbol; +interface Entity_06_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_47 | null; children: Entity_06_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0647: number; y0647: string; z0647: boolean }; } -type PartialBig647 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten647 = T extends Array ? Flatten647 : T; -type Nested647 = number[][][][][][][][][][]; -type Flat647 = Flatten647; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly647 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly647 : T[K]; -}; -type DeepRequired647 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired647 : T[K]; +type Path_0647 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0647}` }[keyof T & string] : never; +type EP_0647 = Path_0647; + +type Val_0647 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0647 } + : T[K] extends object ? { t: 'o'; props: Val_0647 } + : { t: 'u' }; }; -type FR647 = DeepReadonly647>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion647 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha647 = Extract; -type ExcludeZulu647 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA647 { width: number; height: number; depth: number } -interface ShapeB647 { color: string; opacity: number; blend: string } -interface ShapeC647 { x: number; y: number; z: number; w: number } -interface ShapeD647 { label: string; title: string; summary: string } - -type Combined647 = ShapeA647 & ShapeB647 & ShapeC647 & ShapeD647; -type OptionalAll647 = { [K in keyof Combined647]?: Combined647[K] }; -type RequiredAll647 = { [K in keyof Combined647]-?: Combined647[K] }; -type ReadonlyAll647 = { readonly [K in keyof Combined647]: Combined647[K] }; -type NullableAll647 = { [K in keyof Combined647]: Combined647[K] | null }; +type EV_0647 = Val_0647; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString647 = T extends string ? true : false; -type IsNumber647 = T extends number ? true : false; -type TypeName647 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames647 = { - [K in keyof BigRecord647]: TypeName647; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb647 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource647 = "user" | "post" | "comment" | "tag" | "category"; -type Action647 = `${Verb647}_${Resource647}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise647 = T extends Promise ? UnwrapPromise647 : T; -type UnwrapArray647 = T extends (infer U)[] ? UnwrapArray647 : T; -type Head647 = T extends [infer H, ...infer _] ? H : never; -type Tail647 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation647 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation647>] - : never; +interface Registry_06_47 { + entities: Map; + validators: EV_0647; + paths: Set; + merged: DeepMerge_0647; +} -type SmallUnion647 = "a" | "b" | "c" | "d"; -type AllPerms647 = Permutation647; +type CK_0647 = `p06.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig647, - Flat647, - FR647, - BigUnion647, - ExtractAlpha647, - ExcludeZulu647, - OptionalAll647, - RequiredAll647, - ReadonlyAll647, - NullableAll647, - TypeNames647, - Action647, - AllPerms647, -}; +export type { Entity_06_47, Registry_06_47, CK_0647, EP_0647, EV_0647, DeepMerge_0647 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts index dc250bc7..92d72d67 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-48.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-48 (seed 648) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-48 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0648 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0648 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord648 { - a648: { x: number; y: string; z: boolean }; - b648: { p: string[]; q: Record }; - c648: { nested: { deep: { deeper: { deepest: string } } } }; - d648: number; - e648: string; - f648: boolean; - g648: null; - h648: undefined; - i648: bigint; - j648: symbol; +interface Entity_06_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_48 | null; children: Entity_06_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0648: number; y0648: string; z0648: boolean }; } -type PartialBig648 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten648 = T extends Array ? Flatten648 : T; -type Nested648 = number[][][][][][][][][][]; -type Flat648 = Flatten648; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly648 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly648 : T[K]; -}; -type DeepRequired648 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired648 : T[K]; +type Path_0648 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0648}` }[keyof T & string] : never; +type EP_0648 = Path_0648; + +type Val_0648 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0648 } + : T[K] extends object ? { t: 'o'; props: Val_0648 } + : { t: 'u' }; }; -type FR648 = DeepReadonly648>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion648 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha648 = Extract; -type ExcludeZulu648 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA648 { width: number; height: number; depth: number } -interface ShapeB648 { color: string; opacity: number; blend: string } -interface ShapeC648 { x: number; y: number; z: number; w: number } -interface ShapeD648 { label: string; title: string; summary: string } - -type Combined648 = ShapeA648 & ShapeB648 & ShapeC648 & ShapeD648; -type OptionalAll648 = { [K in keyof Combined648]?: Combined648[K] }; -type RequiredAll648 = { [K in keyof Combined648]-?: Combined648[K] }; -type ReadonlyAll648 = { readonly [K in keyof Combined648]: Combined648[K] }; -type NullableAll648 = { [K in keyof Combined648]: Combined648[K] | null }; +type EV_0648 = Val_0648; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString648 = T extends string ? true : false; -type IsNumber648 = T extends number ? true : false; -type TypeName648 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames648 = { - [K in keyof BigRecord648]: TypeName648; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb648 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource648 = "user" | "post" | "comment" | "tag" | "category"; -type Action648 = `${Verb648}_${Resource648}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise648 = T extends Promise ? UnwrapPromise648 : T; -type UnwrapArray648 = T extends (infer U)[] ? UnwrapArray648 : T; -type Head648 = T extends [infer H, ...infer _] ? H : never; -type Tail648 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation648 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation648>] - : never; +interface Registry_06_48 { + entities: Map; + validators: EV_0648; + paths: Set; + merged: DeepMerge_0648; +} -type SmallUnion648 = "a" | "b" | "c" | "d"; -type AllPerms648 = Permutation648; +type CK_0648 = `p06.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig648, - Flat648, - FR648, - BigUnion648, - ExtractAlpha648, - ExcludeZulu648, - OptionalAll648, - RequiredAll648, - ReadonlyAll648, - NullableAll648, - TypeNames648, - Action648, - AllPerms648, -}; +export type { Entity_06_48, Registry_06_48, CK_0648, EP_0648, EV_0648, DeepMerge_0648 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts index 597db868..0da1bdbe 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-49.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-49 (seed 649) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-49 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0649 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0649 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord649 { - a649: { x: number; y: string; z: boolean }; - b649: { p: string[]; q: Record }; - c649: { nested: { deep: { deeper: { deepest: string } } } }; - d649: number; - e649: string; - f649: boolean; - g649: null; - h649: undefined; - i649: bigint; - j649: symbol; +interface Entity_06_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_49 | null; children: Entity_06_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0649: number; y0649: string; z0649: boolean }; } -type PartialBig649 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten649 = T extends Array ? Flatten649 : T; -type Nested649 = number[][][][][][][][][][]; -type Flat649 = Flatten649; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly649 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly649 : T[K]; -}; -type DeepRequired649 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired649 : T[K]; +type Path_0649 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0649}` }[keyof T & string] : never; +type EP_0649 = Path_0649; + +type Val_0649 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0649 } + : T[K] extends object ? { t: 'o'; props: Val_0649 } + : { t: 'u' }; }; -type FR649 = DeepReadonly649>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion649 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha649 = Extract; -type ExcludeZulu649 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA649 { width: number; height: number; depth: number } -interface ShapeB649 { color: string; opacity: number; blend: string } -interface ShapeC649 { x: number; y: number; z: number; w: number } -interface ShapeD649 { label: string; title: string; summary: string } - -type Combined649 = ShapeA649 & ShapeB649 & ShapeC649 & ShapeD649; -type OptionalAll649 = { [K in keyof Combined649]?: Combined649[K] }; -type RequiredAll649 = { [K in keyof Combined649]-?: Combined649[K] }; -type ReadonlyAll649 = { readonly [K in keyof Combined649]: Combined649[K] }; -type NullableAll649 = { [K in keyof Combined649]: Combined649[K] | null }; +type EV_0649 = Val_0649; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString649 = T extends string ? true : false; -type IsNumber649 = T extends number ? true : false; -type TypeName649 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames649 = { - [K in keyof BigRecord649]: TypeName649; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb649 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource649 = "user" | "post" | "comment" | "tag" | "category"; -type Action649 = `${Verb649}_${Resource649}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise649 = T extends Promise ? UnwrapPromise649 : T; -type UnwrapArray649 = T extends (infer U)[] ? UnwrapArray649 : T; -type Head649 = T extends [infer H, ...infer _] ? H : never; -type Tail649 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation649 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation649>] - : never; +interface Registry_06_49 { + entities: Map; + validators: EV_0649; + paths: Set; + merged: DeepMerge_0649; +} -type SmallUnion649 = "a" | "b" | "c" | "d"; -type AllPerms649 = Permutation649; +type CK_0649 = `p06.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig649, - Flat649, - FR649, - BigUnion649, - ExtractAlpha649, - ExcludeZulu649, - OptionalAll649, - RequiredAll649, - ReadonlyAll649, - NullableAll649, - TypeNames649, - Action649, - AllPerms649, -}; +export type { Entity_06_49, Registry_06_49, CK_0649, EP_0649, EV_0649, DeepMerge_0649 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts index f272cdf8..139ee318 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-06/types-50.ts @@ -1,125 +1,50 @@ -// pkg-06 / types-50 (seed 650) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-06/types-50 - heavy interconnected types + +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; +import type { Entity_3_01, Registry_3_01 } from '../pkg-03/types-01'; +import type { Entity_3_10, Registry_3_10 } from '../pkg-03/types-10'; +import type { Entity_3_20, Registry_3_20 } from '../pkg-03/types-20'; + +type DeepMerge_0650 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0650 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord650 { - a650: { x: number; y: string; z: boolean }; - b650: { p: string[]; q: Record }; - c650: { nested: { deep: { deeper: { deepest: string } } } }; - d650: number; - e650: string; - f650: boolean; - g650: null; - h650: undefined; - i650: bigint; - j650: symbol; +interface Entity_06_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_06_50 | null; children: Entity_06_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0650: number; y0650: string; z0650: boolean }; } -type PartialBig650 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten650 = T extends Array ? Flatten650 : T; -type Nested650 = number[][][][][][][][][][]; -type Flat650 = Flatten650; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly650 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly650 : T[K]; -}; -type DeepRequired650 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired650 : T[K]; +type Path_0650 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0650}` }[keyof T & string] : never; +type EP_0650 = Path_0650; + +type Val_0650 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0650 } + : T[K] extends object ? { t: 'o'; props: Val_0650 } + : { t: 'u' }; }; -type FR650 = DeepReadonly650>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion650 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha650 = Extract; -type ExcludeZulu650 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA650 { width: number; height: number; depth: number } -interface ShapeB650 { color: string; opacity: number; blend: string } -interface ShapeC650 { x: number; y: number; z: number; w: number } -interface ShapeD650 { label: string; title: string; summary: string } - -type Combined650 = ShapeA650 & ShapeB650 & ShapeC650 & ShapeD650; -type OptionalAll650 = { [K in keyof Combined650]?: Combined650[K] }; -type RequiredAll650 = { [K in keyof Combined650]-?: Combined650[K] }; -type ReadonlyAll650 = { readonly [K in keyof Combined650]: Combined650[K] }; -type NullableAll650 = { [K in keyof Combined650]: Combined650[K] | null }; +type EV_0650 = Val_0650; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString650 = T extends string ? true : false; -type IsNumber650 = T extends number ? true : false; -type TypeName650 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames650 = { - [K in keyof BigRecord650]: TypeName650; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb650 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource650 = "user" | "post" | "comment" | "tag" | "category"; -type Action650 = `${Verb650}_${Resource650}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise650 = T extends Promise ? UnwrapPromise650 : T; -type UnwrapArray650 = T extends (infer U)[] ? UnwrapArray650 : T; -type Head650 = T extends [infer H, ...infer _] ? H : never; -type Tail650 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation650 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation650>] - : never; +interface Registry_06_50 { + entities: Map; + validators: EV_0650; + paths: Set; + merged: DeepMerge_0650; +} -type SmallUnion650 = "a" | "b" | "c" | "d"; -type AllPerms650 = Permutation650; +type CK_0650 = `p06.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig650, - Flat650, - FR650, - BigUnion650, - ExtractAlpha650, - ExcludeZulu650, - OptionalAll650, - RequiredAll650, - ReadonlyAll650, - NullableAll650, - TypeNames650, - Action650, - AllPerms650, -}; +export type { Entity_06_50, Registry_06_50, CK_0650, EP_0650, EV_0650, DeepMerge_0650 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts index 5aebd640..f0b62ed0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-01.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-01 (seed 701) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-01 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0701 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0701 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord701 { - a701: { x: number; y: string; z: boolean }; - b701: { p: string[]; q: Record }; - c701: { nested: { deep: { deeper: { deepest: string } } } }; - d701: number; - e701: string; - f701: boolean; - g701: null; - h701: undefined; - i701: bigint; - j701: symbol; +interface Entity_07_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_01 | null; children: Entity_07_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0701: number; y0701: string; z0701: boolean }; } -type PartialBig701 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten701 = T extends Array ? Flatten701 : T; -type Nested701 = number[][][][][][][][][][]; -type Flat701 = Flatten701; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly701 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly701 : T[K]; -}; -type DeepRequired701 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired701 : T[K]; +type Path_0701 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0701}` }[keyof T & string] : never; +type EP_0701 = Path_0701; + +type Val_0701 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0701 } + : T[K] extends object ? { t: 'o'; props: Val_0701 } + : { t: 'u' }; }; -type FR701 = DeepReadonly701>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion701 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha701 = Extract; -type ExcludeZulu701 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA701 { width: number; height: number; depth: number } -interface ShapeB701 { color: string; opacity: number; blend: string } -interface ShapeC701 { x: number; y: number; z: number; w: number } -interface ShapeD701 { label: string; title: string; summary: string } - -type Combined701 = ShapeA701 & ShapeB701 & ShapeC701 & ShapeD701; -type OptionalAll701 = { [K in keyof Combined701]?: Combined701[K] }; -type RequiredAll701 = { [K in keyof Combined701]-?: Combined701[K] }; -type ReadonlyAll701 = { readonly [K in keyof Combined701]: Combined701[K] }; -type NullableAll701 = { [K in keyof Combined701]: Combined701[K] | null }; +type EV_0701 = Val_0701; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString701 = T extends string ? true : false; -type IsNumber701 = T extends number ? true : false; -type TypeName701 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames701 = { - [K in keyof BigRecord701]: TypeName701; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb701 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource701 = "user" | "post" | "comment" | "tag" | "category"; -type Action701 = `${Verb701}_${Resource701}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise701 = T extends Promise ? UnwrapPromise701 : T; -type UnwrapArray701 = T extends (infer U)[] ? UnwrapArray701 : T; -type Head701 = T extends [infer H, ...infer _] ? H : never; -type Tail701 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation701 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation701>] - : never; +interface Registry_07_01 { + entities: Map; + validators: EV_0701; + paths: Set; + merged: DeepMerge_0701; +} -type SmallUnion701 = "a" | "b" | "c" | "d"; -type AllPerms701 = Permutation701; +type CK_0701 = `p07.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig701, - Flat701, - FR701, - BigUnion701, - ExtractAlpha701, - ExcludeZulu701, - OptionalAll701, - RequiredAll701, - ReadonlyAll701, - NullableAll701, - TypeNames701, - Action701, - AllPerms701, -}; +export type { Entity_07_01, Registry_07_01, CK_0701, EP_0701, EV_0701, DeepMerge_0701 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts index 2f857606..838c260e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-02.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-02 (seed 702) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-02 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0702 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0702 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord702 { - a702: { x: number; y: string; z: boolean }; - b702: { p: string[]; q: Record }; - c702: { nested: { deep: { deeper: { deepest: string } } } }; - d702: number; - e702: string; - f702: boolean; - g702: null; - h702: undefined; - i702: bigint; - j702: symbol; +interface Entity_07_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_02 | null; children: Entity_07_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0702: number; y0702: string; z0702: boolean }; } -type PartialBig702 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten702 = T extends Array ? Flatten702 : T; -type Nested702 = number[][][][][][][][][][]; -type Flat702 = Flatten702; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly702 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly702 : T[K]; -}; -type DeepRequired702 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired702 : T[K]; +type Path_0702 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0702}` }[keyof T & string] : never; +type EP_0702 = Path_0702; + +type Val_0702 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0702 } + : T[K] extends object ? { t: 'o'; props: Val_0702 } + : { t: 'u' }; }; -type FR702 = DeepReadonly702>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion702 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha702 = Extract; -type ExcludeZulu702 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA702 { width: number; height: number; depth: number } -interface ShapeB702 { color: string; opacity: number; blend: string } -interface ShapeC702 { x: number; y: number; z: number; w: number } -interface ShapeD702 { label: string; title: string; summary: string } - -type Combined702 = ShapeA702 & ShapeB702 & ShapeC702 & ShapeD702; -type OptionalAll702 = { [K in keyof Combined702]?: Combined702[K] }; -type RequiredAll702 = { [K in keyof Combined702]-?: Combined702[K] }; -type ReadonlyAll702 = { readonly [K in keyof Combined702]: Combined702[K] }; -type NullableAll702 = { [K in keyof Combined702]: Combined702[K] | null }; +type EV_0702 = Val_0702; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString702 = T extends string ? true : false; -type IsNumber702 = T extends number ? true : false; -type TypeName702 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames702 = { - [K in keyof BigRecord702]: TypeName702; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb702 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource702 = "user" | "post" | "comment" | "tag" | "category"; -type Action702 = `${Verb702}_${Resource702}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise702 = T extends Promise ? UnwrapPromise702 : T; -type UnwrapArray702 = T extends (infer U)[] ? UnwrapArray702 : T; -type Head702 = T extends [infer H, ...infer _] ? H : never; -type Tail702 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation702 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation702>] - : never; +interface Registry_07_02 { + entities: Map; + validators: EV_0702; + paths: Set; + merged: DeepMerge_0702; +} -type SmallUnion702 = "a" | "b" | "c" | "d"; -type AllPerms702 = Permutation702; +type CK_0702 = `p07.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig702, - Flat702, - FR702, - BigUnion702, - ExtractAlpha702, - ExcludeZulu702, - OptionalAll702, - RequiredAll702, - ReadonlyAll702, - NullableAll702, - TypeNames702, - Action702, - AllPerms702, -}; +export type { Entity_07_02, Registry_07_02, CK_0702, EP_0702, EV_0702, DeepMerge_0702 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts index e4380868..ccd27086 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-03.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-03 (seed 703) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-03 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0703 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0703 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord703 { - a703: { x: number; y: string; z: boolean }; - b703: { p: string[]; q: Record }; - c703: { nested: { deep: { deeper: { deepest: string } } } }; - d703: number; - e703: string; - f703: boolean; - g703: null; - h703: undefined; - i703: bigint; - j703: symbol; +interface Entity_07_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_03 | null; children: Entity_07_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0703: number; y0703: string; z0703: boolean }; } -type PartialBig703 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten703 = T extends Array ? Flatten703 : T; -type Nested703 = number[][][][][][][][][][]; -type Flat703 = Flatten703; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly703 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly703 : T[K]; -}; -type DeepRequired703 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired703 : T[K]; +type Path_0703 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0703}` }[keyof T & string] : never; +type EP_0703 = Path_0703; + +type Val_0703 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0703 } + : T[K] extends object ? { t: 'o'; props: Val_0703 } + : { t: 'u' }; }; -type FR703 = DeepReadonly703>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion703 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha703 = Extract; -type ExcludeZulu703 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA703 { width: number; height: number; depth: number } -interface ShapeB703 { color: string; opacity: number; blend: string } -interface ShapeC703 { x: number; y: number; z: number; w: number } -interface ShapeD703 { label: string; title: string; summary: string } - -type Combined703 = ShapeA703 & ShapeB703 & ShapeC703 & ShapeD703; -type OptionalAll703 = { [K in keyof Combined703]?: Combined703[K] }; -type RequiredAll703 = { [K in keyof Combined703]-?: Combined703[K] }; -type ReadonlyAll703 = { readonly [K in keyof Combined703]: Combined703[K] }; -type NullableAll703 = { [K in keyof Combined703]: Combined703[K] | null }; +type EV_0703 = Val_0703; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString703 = T extends string ? true : false; -type IsNumber703 = T extends number ? true : false; -type TypeName703 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames703 = { - [K in keyof BigRecord703]: TypeName703; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb703 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource703 = "user" | "post" | "comment" | "tag" | "category"; -type Action703 = `${Verb703}_${Resource703}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise703 = T extends Promise ? UnwrapPromise703 : T; -type UnwrapArray703 = T extends (infer U)[] ? UnwrapArray703 : T; -type Head703 = T extends [infer H, ...infer _] ? H : never; -type Tail703 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation703 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation703>] - : never; +interface Registry_07_03 { + entities: Map; + validators: EV_0703; + paths: Set; + merged: DeepMerge_0703; +} -type SmallUnion703 = "a" | "b" | "c" | "d"; -type AllPerms703 = Permutation703; +type CK_0703 = `p07.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig703, - Flat703, - FR703, - BigUnion703, - ExtractAlpha703, - ExcludeZulu703, - OptionalAll703, - RequiredAll703, - ReadonlyAll703, - NullableAll703, - TypeNames703, - Action703, - AllPerms703, -}; +export type { Entity_07_03, Registry_07_03, CK_0703, EP_0703, EV_0703, DeepMerge_0703 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts index 27c93abe..15170baa 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-04.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-04 (seed 704) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-04 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0704 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0704 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord704 { - a704: { x: number; y: string; z: boolean }; - b704: { p: string[]; q: Record }; - c704: { nested: { deep: { deeper: { deepest: string } } } }; - d704: number; - e704: string; - f704: boolean; - g704: null; - h704: undefined; - i704: bigint; - j704: symbol; +interface Entity_07_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_04 | null; children: Entity_07_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0704: number; y0704: string; z0704: boolean }; } -type PartialBig704 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten704 = T extends Array ? Flatten704 : T; -type Nested704 = number[][][][][][][][][][]; -type Flat704 = Flatten704; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly704 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly704 : T[K]; -}; -type DeepRequired704 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired704 : T[K]; +type Path_0704 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0704}` }[keyof T & string] : never; +type EP_0704 = Path_0704; + +type Val_0704 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0704 } + : T[K] extends object ? { t: 'o'; props: Val_0704 } + : { t: 'u' }; }; -type FR704 = DeepReadonly704>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion704 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha704 = Extract; -type ExcludeZulu704 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA704 { width: number; height: number; depth: number } -interface ShapeB704 { color: string; opacity: number; blend: string } -interface ShapeC704 { x: number; y: number; z: number; w: number } -interface ShapeD704 { label: string; title: string; summary: string } - -type Combined704 = ShapeA704 & ShapeB704 & ShapeC704 & ShapeD704; -type OptionalAll704 = { [K in keyof Combined704]?: Combined704[K] }; -type RequiredAll704 = { [K in keyof Combined704]-?: Combined704[K] }; -type ReadonlyAll704 = { readonly [K in keyof Combined704]: Combined704[K] }; -type NullableAll704 = { [K in keyof Combined704]: Combined704[K] | null }; +type EV_0704 = Val_0704; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString704 = T extends string ? true : false; -type IsNumber704 = T extends number ? true : false; -type TypeName704 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames704 = { - [K in keyof BigRecord704]: TypeName704; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb704 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource704 = "user" | "post" | "comment" | "tag" | "category"; -type Action704 = `${Verb704}_${Resource704}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise704 = T extends Promise ? UnwrapPromise704 : T; -type UnwrapArray704 = T extends (infer U)[] ? UnwrapArray704 : T; -type Head704 = T extends [infer H, ...infer _] ? H : never; -type Tail704 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation704 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation704>] - : never; +interface Registry_07_04 { + entities: Map; + validators: EV_0704; + paths: Set; + merged: DeepMerge_0704; +} -type SmallUnion704 = "a" | "b" | "c" | "d"; -type AllPerms704 = Permutation704; +type CK_0704 = `p07.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig704, - Flat704, - FR704, - BigUnion704, - ExtractAlpha704, - ExcludeZulu704, - OptionalAll704, - RequiredAll704, - ReadonlyAll704, - NullableAll704, - TypeNames704, - Action704, - AllPerms704, -}; +export type { Entity_07_04, Registry_07_04, CK_0704, EP_0704, EV_0704, DeepMerge_0704 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts index 95ab10ea..f5b83fbe 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-05.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-05 (seed 705) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-05 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0705 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0705 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord705 { - a705: { x: number; y: string; z: boolean }; - b705: { p: string[]; q: Record }; - c705: { nested: { deep: { deeper: { deepest: string } } } }; - d705: number; - e705: string; - f705: boolean; - g705: null; - h705: undefined; - i705: bigint; - j705: symbol; +interface Entity_07_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_05 | null; children: Entity_07_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0705: number; y0705: string; z0705: boolean }; } -type PartialBig705 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten705 = T extends Array ? Flatten705 : T; -type Nested705 = number[][][][][][][][][][]; -type Flat705 = Flatten705; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly705 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly705 : T[K]; -}; -type DeepRequired705 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired705 : T[K]; +type Path_0705 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0705}` }[keyof T & string] : never; +type EP_0705 = Path_0705; + +type Val_0705 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0705 } + : T[K] extends object ? { t: 'o'; props: Val_0705 } + : { t: 'u' }; }; -type FR705 = DeepReadonly705>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion705 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha705 = Extract; -type ExcludeZulu705 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA705 { width: number; height: number; depth: number } -interface ShapeB705 { color: string; opacity: number; blend: string } -interface ShapeC705 { x: number; y: number; z: number; w: number } -interface ShapeD705 { label: string; title: string; summary: string } - -type Combined705 = ShapeA705 & ShapeB705 & ShapeC705 & ShapeD705; -type OptionalAll705 = { [K in keyof Combined705]?: Combined705[K] }; -type RequiredAll705 = { [K in keyof Combined705]-?: Combined705[K] }; -type ReadonlyAll705 = { readonly [K in keyof Combined705]: Combined705[K] }; -type NullableAll705 = { [K in keyof Combined705]: Combined705[K] | null }; +type EV_0705 = Val_0705; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString705 = T extends string ? true : false; -type IsNumber705 = T extends number ? true : false; -type TypeName705 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames705 = { - [K in keyof BigRecord705]: TypeName705; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb705 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource705 = "user" | "post" | "comment" | "tag" | "category"; -type Action705 = `${Verb705}_${Resource705}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise705 = T extends Promise ? UnwrapPromise705 : T; -type UnwrapArray705 = T extends (infer U)[] ? UnwrapArray705 : T; -type Head705 = T extends [infer H, ...infer _] ? H : never; -type Tail705 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation705 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation705>] - : never; +interface Registry_07_05 { + entities: Map; + validators: EV_0705; + paths: Set; + merged: DeepMerge_0705; +} -type SmallUnion705 = "a" | "b" | "c" | "d"; -type AllPerms705 = Permutation705; +type CK_0705 = `p07.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig705, - Flat705, - FR705, - BigUnion705, - ExtractAlpha705, - ExcludeZulu705, - OptionalAll705, - RequiredAll705, - ReadonlyAll705, - NullableAll705, - TypeNames705, - Action705, - AllPerms705, -}; +export type { Entity_07_05, Registry_07_05, CK_0705, EP_0705, EV_0705, DeepMerge_0705 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts index 86b02f49..2bdeaa4f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-06.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-06 (seed 706) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-06 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0706 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0706 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord706 { - a706: { x: number; y: string; z: boolean }; - b706: { p: string[]; q: Record }; - c706: { nested: { deep: { deeper: { deepest: string } } } }; - d706: number; - e706: string; - f706: boolean; - g706: null; - h706: undefined; - i706: bigint; - j706: symbol; +interface Entity_07_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_06 | null; children: Entity_07_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0706: number; y0706: string; z0706: boolean }; } -type PartialBig706 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten706 = T extends Array ? Flatten706 : T; -type Nested706 = number[][][][][][][][][][]; -type Flat706 = Flatten706; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly706 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly706 : T[K]; -}; -type DeepRequired706 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired706 : T[K]; +type Path_0706 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0706}` }[keyof T & string] : never; +type EP_0706 = Path_0706; + +type Val_0706 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0706 } + : T[K] extends object ? { t: 'o'; props: Val_0706 } + : { t: 'u' }; }; -type FR706 = DeepReadonly706>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion706 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha706 = Extract; -type ExcludeZulu706 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA706 { width: number; height: number; depth: number } -interface ShapeB706 { color: string; opacity: number; blend: string } -interface ShapeC706 { x: number; y: number; z: number; w: number } -interface ShapeD706 { label: string; title: string; summary: string } - -type Combined706 = ShapeA706 & ShapeB706 & ShapeC706 & ShapeD706; -type OptionalAll706 = { [K in keyof Combined706]?: Combined706[K] }; -type RequiredAll706 = { [K in keyof Combined706]-?: Combined706[K] }; -type ReadonlyAll706 = { readonly [K in keyof Combined706]: Combined706[K] }; -type NullableAll706 = { [K in keyof Combined706]: Combined706[K] | null }; +type EV_0706 = Val_0706; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString706 = T extends string ? true : false; -type IsNumber706 = T extends number ? true : false; -type TypeName706 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames706 = { - [K in keyof BigRecord706]: TypeName706; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb706 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource706 = "user" | "post" | "comment" | "tag" | "category"; -type Action706 = `${Verb706}_${Resource706}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise706 = T extends Promise ? UnwrapPromise706 : T; -type UnwrapArray706 = T extends (infer U)[] ? UnwrapArray706 : T; -type Head706 = T extends [infer H, ...infer _] ? H : never; -type Tail706 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation706 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation706>] - : never; +interface Registry_07_06 { + entities: Map; + validators: EV_0706; + paths: Set; + merged: DeepMerge_0706; +} -type SmallUnion706 = "a" | "b" | "c" | "d"; -type AllPerms706 = Permutation706; +type CK_0706 = `p07.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig706, - Flat706, - FR706, - BigUnion706, - ExtractAlpha706, - ExcludeZulu706, - OptionalAll706, - RequiredAll706, - ReadonlyAll706, - NullableAll706, - TypeNames706, - Action706, - AllPerms706, -}; +export type { Entity_07_06, Registry_07_06, CK_0706, EP_0706, EV_0706, DeepMerge_0706 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts index 19919a97..e4ecec92 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-07.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-07 (seed 707) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-07 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0707 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0707 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord707 { - a707: { x: number; y: string; z: boolean }; - b707: { p: string[]; q: Record }; - c707: { nested: { deep: { deeper: { deepest: string } } } }; - d707: number; - e707: string; - f707: boolean; - g707: null; - h707: undefined; - i707: bigint; - j707: symbol; +interface Entity_07_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_07 | null; children: Entity_07_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0707: number; y0707: string; z0707: boolean }; } -type PartialBig707 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten707 = T extends Array ? Flatten707 : T; -type Nested707 = number[][][][][][][][][][]; -type Flat707 = Flatten707; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly707 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly707 : T[K]; -}; -type DeepRequired707 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired707 : T[K]; +type Path_0707 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0707}` }[keyof T & string] : never; +type EP_0707 = Path_0707; + +type Val_0707 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0707 } + : T[K] extends object ? { t: 'o'; props: Val_0707 } + : { t: 'u' }; }; -type FR707 = DeepReadonly707>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion707 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha707 = Extract; -type ExcludeZulu707 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA707 { width: number; height: number; depth: number } -interface ShapeB707 { color: string; opacity: number; blend: string } -interface ShapeC707 { x: number; y: number; z: number; w: number } -interface ShapeD707 { label: string; title: string; summary: string } - -type Combined707 = ShapeA707 & ShapeB707 & ShapeC707 & ShapeD707; -type OptionalAll707 = { [K in keyof Combined707]?: Combined707[K] }; -type RequiredAll707 = { [K in keyof Combined707]-?: Combined707[K] }; -type ReadonlyAll707 = { readonly [K in keyof Combined707]: Combined707[K] }; -type NullableAll707 = { [K in keyof Combined707]: Combined707[K] | null }; +type EV_0707 = Val_0707; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString707 = T extends string ? true : false; -type IsNumber707 = T extends number ? true : false; -type TypeName707 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames707 = { - [K in keyof BigRecord707]: TypeName707; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb707 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource707 = "user" | "post" | "comment" | "tag" | "category"; -type Action707 = `${Verb707}_${Resource707}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise707 = T extends Promise ? UnwrapPromise707 : T; -type UnwrapArray707 = T extends (infer U)[] ? UnwrapArray707 : T; -type Head707 = T extends [infer H, ...infer _] ? H : never; -type Tail707 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation707 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation707>] - : never; +interface Registry_07_07 { + entities: Map; + validators: EV_0707; + paths: Set; + merged: DeepMerge_0707; +} -type SmallUnion707 = "a" | "b" | "c" | "d"; -type AllPerms707 = Permutation707; +type CK_0707 = `p07.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig707, - Flat707, - FR707, - BigUnion707, - ExtractAlpha707, - ExcludeZulu707, - OptionalAll707, - RequiredAll707, - ReadonlyAll707, - NullableAll707, - TypeNames707, - Action707, - AllPerms707, -}; +export type { Entity_07_07, Registry_07_07, CK_0707, EP_0707, EV_0707, DeepMerge_0707 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts index cab86509..eacc082a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-08.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-08 (seed 708) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-08 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0708 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0708 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord708 { - a708: { x: number; y: string; z: boolean }; - b708: { p: string[]; q: Record }; - c708: { nested: { deep: { deeper: { deepest: string } } } }; - d708: number; - e708: string; - f708: boolean; - g708: null; - h708: undefined; - i708: bigint; - j708: symbol; +interface Entity_07_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_08 | null; children: Entity_07_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0708: number; y0708: string; z0708: boolean }; } -type PartialBig708 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten708 = T extends Array ? Flatten708 : T; -type Nested708 = number[][][][][][][][][][]; -type Flat708 = Flatten708; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly708 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly708 : T[K]; -}; -type DeepRequired708 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired708 : T[K]; +type Path_0708 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0708}` }[keyof T & string] : never; +type EP_0708 = Path_0708; + +type Val_0708 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0708 } + : T[K] extends object ? { t: 'o'; props: Val_0708 } + : { t: 'u' }; }; -type FR708 = DeepReadonly708>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion708 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha708 = Extract; -type ExcludeZulu708 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA708 { width: number; height: number; depth: number } -interface ShapeB708 { color: string; opacity: number; blend: string } -interface ShapeC708 { x: number; y: number; z: number; w: number } -interface ShapeD708 { label: string; title: string; summary: string } - -type Combined708 = ShapeA708 & ShapeB708 & ShapeC708 & ShapeD708; -type OptionalAll708 = { [K in keyof Combined708]?: Combined708[K] }; -type RequiredAll708 = { [K in keyof Combined708]-?: Combined708[K] }; -type ReadonlyAll708 = { readonly [K in keyof Combined708]: Combined708[K] }; -type NullableAll708 = { [K in keyof Combined708]: Combined708[K] | null }; +type EV_0708 = Val_0708; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString708 = T extends string ? true : false; -type IsNumber708 = T extends number ? true : false; -type TypeName708 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames708 = { - [K in keyof BigRecord708]: TypeName708; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb708 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource708 = "user" | "post" | "comment" | "tag" | "category"; -type Action708 = `${Verb708}_${Resource708}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise708 = T extends Promise ? UnwrapPromise708 : T; -type UnwrapArray708 = T extends (infer U)[] ? UnwrapArray708 : T; -type Head708 = T extends [infer H, ...infer _] ? H : never; -type Tail708 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation708 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation708>] - : never; +interface Registry_07_08 { + entities: Map; + validators: EV_0708; + paths: Set; + merged: DeepMerge_0708; +} -type SmallUnion708 = "a" | "b" | "c" | "d"; -type AllPerms708 = Permutation708; +type CK_0708 = `p07.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig708, - Flat708, - FR708, - BigUnion708, - ExtractAlpha708, - ExcludeZulu708, - OptionalAll708, - RequiredAll708, - ReadonlyAll708, - NullableAll708, - TypeNames708, - Action708, - AllPerms708, -}; +export type { Entity_07_08, Registry_07_08, CK_0708, EP_0708, EV_0708, DeepMerge_0708 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts index dec24d10..b1a678e1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-09.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-09 (seed 709) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-09 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0709 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0709 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord709 { - a709: { x: number; y: string; z: boolean }; - b709: { p: string[]; q: Record }; - c709: { nested: { deep: { deeper: { deepest: string } } } }; - d709: number; - e709: string; - f709: boolean; - g709: null; - h709: undefined; - i709: bigint; - j709: symbol; +interface Entity_07_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_09 | null; children: Entity_07_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0709: number; y0709: string; z0709: boolean }; } -type PartialBig709 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten709 = T extends Array ? Flatten709 : T; -type Nested709 = number[][][][][][][][][][]; -type Flat709 = Flatten709; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly709 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly709 : T[K]; -}; -type DeepRequired709 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired709 : T[K]; +type Path_0709 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0709}` }[keyof T & string] : never; +type EP_0709 = Path_0709; + +type Val_0709 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0709 } + : T[K] extends object ? { t: 'o'; props: Val_0709 } + : { t: 'u' }; }; -type FR709 = DeepReadonly709>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion709 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha709 = Extract; -type ExcludeZulu709 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA709 { width: number; height: number; depth: number } -interface ShapeB709 { color: string; opacity: number; blend: string } -interface ShapeC709 { x: number; y: number; z: number; w: number } -interface ShapeD709 { label: string; title: string; summary: string } - -type Combined709 = ShapeA709 & ShapeB709 & ShapeC709 & ShapeD709; -type OptionalAll709 = { [K in keyof Combined709]?: Combined709[K] }; -type RequiredAll709 = { [K in keyof Combined709]-?: Combined709[K] }; -type ReadonlyAll709 = { readonly [K in keyof Combined709]: Combined709[K] }; -type NullableAll709 = { [K in keyof Combined709]: Combined709[K] | null }; +type EV_0709 = Val_0709; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString709 = T extends string ? true : false; -type IsNumber709 = T extends number ? true : false; -type TypeName709 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames709 = { - [K in keyof BigRecord709]: TypeName709; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb709 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource709 = "user" | "post" | "comment" | "tag" | "category"; -type Action709 = `${Verb709}_${Resource709}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise709 = T extends Promise ? UnwrapPromise709 : T; -type UnwrapArray709 = T extends (infer U)[] ? UnwrapArray709 : T; -type Head709 = T extends [infer H, ...infer _] ? H : never; -type Tail709 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation709 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation709>] - : never; +interface Registry_07_09 { + entities: Map; + validators: EV_0709; + paths: Set; + merged: DeepMerge_0709; +} -type SmallUnion709 = "a" | "b" | "c" | "d"; -type AllPerms709 = Permutation709; +type CK_0709 = `p07.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig709, - Flat709, - FR709, - BigUnion709, - ExtractAlpha709, - ExcludeZulu709, - OptionalAll709, - RequiredAll709, - ReadonlyAll709, - NullableAll709, - TypeNames709, - Action709, - AllPerms709, -}; +export type { Entity_07_09, Registry_07_09, CK_0709, EP_0709, EV_0709, DeepMerge_0709 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts index 5b2eb287..34f63d3e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-10.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-10 (seed 710) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-10 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0710 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0710 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord710 { - a710: { x: number; y: string; z: boolean }; - b710: { p: string[]; q: Record }; - c710: { nested: { deep: { deeper: { deepest: string } } } }; - d710: number; - e710: string; - f710: boolean; - g710: null; - h710: undefined; - i710: bigint; - j710: symbol; +interface Entity_07_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_10 | null; children: Entity_07_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0710: number; y0710: string; z0710: boolean }; } -type PartialBig710 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten710 = T extends Array ? Flatten710 : T; -type Nested710 = number[][][][][][][][][][]; -type Flat710 = Flatten710; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly710 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly710 : T[K]; -}; -type DeepRequired710 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired710 : T[K]; +type Path_0710 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0710}` }[keyof T & string] : never; +type EP_0710 = Path_0710; + +type Val_0710 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0710 } + : T[K] extends object ? { t: 'o'; props: Val_0710 } + : { t: 'u' }; }; -type FR710 = DeepReadonly710>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion710 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha710 = Extract; -type ExcludeZulu710 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA710 { width: number; height: number; depth: number } -interface ShapeB710 { color: string; opacity: number; blend: string } -interface ShapeC710 { x: number; y: number; z: number; w: number } -interface ShapeD710 { label: string; title: string; summary: string } - -type Combined710 = ShapeA710 & ShapeB710 & ShapeC710 & ShapeD710; -type OptionalAll710 = { [K in keyof Combined710]?: Combined710[K] }; -type RequiredAll710 = { [K in keyof Combined710]-?: Combined710[K] }; -type ReadonlyAll710 = { readonly [K in keyof Combined710]: Combined710[K] }; -type NullableAll710 = { [K in keyof Combined710]: Combined710[K] | null }; +type EV_0710 = Val_0710; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString710 = T extends string ? true : false; -type IsNumber710 = T extends number ? true : false; -type TypeName710 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames710 = { - [K in keyof BigRecord710]: TypeName710; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb710 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource710 = "user" | "post" | "comment" | "tag" | "category"; -type Action710 = `${Verb710}_${Resource710}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise710 = T extends Promise ? UnwrapPromise710 : T; -type UnwrapArray710 = T extends (infer U)[] ? UnwrapArray710 : T; -type Head710 = T extends [infer H, ...infer _] ? H : never; -type Tail710 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation710 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation710>] - : never; +interface Registry_07_10 { + entities: Map; + validators: EV_0710; + paths: Set; + merged: DeepMerge_0710; +} -type SmallUnion710 = "a" | "b" | "c" | "d"; -type AllPerms710 = Permutation710; +type CK_0710 = `p07.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig710, - Flat710, - FR710, - BigUnion710, - ExtractAlpha710, - ExcludeZulu710, - OptionalAll710, - RequiredAll710, - ReadonlyAll710, - NullableAll710, - TypeNames710, - Action710, - AllPerms710, -}; +export type { Entity_07_10, Registry_07_10, CK_0710, EP_0710, EV_0710, DeepMerge_0710 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts index 7ea13a7f..25016921 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-11.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-11 (seed 711) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-11 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0711 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0711 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord711 { - a711: { x: number; y: string; z: boolean }; - b711: { p: string[]; q: Record }; - c711: { nested: { deep: { deeper: { deepest: string } } } }; - d711: number; - e711: string; - f711: boolean; - g711: null; - h711: undefined; - i711: bigint; - j711: symbol; +interface Entity_07_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_11 | null; children: Entity_07_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0711: number; y0711: string; z0711: boolean }; } -type PartialBig711 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten711 = T extends Array ? Flatten711 : T; -type Nested711 = number[][][][][][][][][][]; -type Flat711 = Flatten711; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly711 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly711 : T[K]; -}; -type DeepRequired711 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired711 : T[K]; +type Path_0711 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0711}` }[keyof T & string] : never; +type EP_0711 = Path_0711; + +type Val_0711 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0711 } + : T[K] extends object ? { t: 'o'; props: Val_0711 } + : { t: 'u' }; }; -type FR711 = DeepReadonly711>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion711 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha711 = Extract; -type ExcludeZulu711 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA711 { width: number; height: number; depth: number } -interface ShapeB711 { color: string; opacity: number; blend: string } -interface ShapeC711 { x: number; y: number; z: number; w: number } -interface ShapeD711 { label: string; title: string; summary: string } - -type Combined711 = ShapeA711 & ShapeB711 & ShapeC711 & ShapeD711; -type OptionalAll711 = { [K in keyof Combined711]?: Combined711[K] }; -type RequiredAll711 = { [K in keyof Combined711]-?: Combined711[K] }; -type ReadonlyAll711 = { readonly [K in keyof Combined711]: Combined711[K] }; -type NullableAll711 = { [K in keyof Combined711]: Combined711[K] | null }; +type EV_0711 = Val_0711; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString711 = T extends string ? true : false; -type IsNumber711 = T extends number ? true : false; -type TypeName711 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames711 = { - [K in keyof BigRecord711]: TypeName711; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb711 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource711 = "user" | "post" | "comment" | "tag" | "category"; -type Action711 = `${Verb711}_${Resource711}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise711 = T extends Promise ? UnwrapPromise711 : T; -type UnwrapArray711 = T extends (infer U)[] ? UnwrapArray711 : T; -type Head711 = T extends [infer H, ...infer _] ? H : never; -type Tail711 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation711 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation711>] - : never; +interface Registry_07_11 { + entities: Map; + validators: EV_0711; + paths: Set; + merged: DeepMerge_0711; +} -type SmallUnion711 = "a" | "b" | "c" | "d"; -type AllPerms711 = Permutation711; +type CK_0711 = `p07.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig711, - Flat711, - FR711, - BigUnion711, - ExtractAlpha711, - ExcludeZulu711, - OptionalAll711, - RequiredAll711, - ReadonlyAll711, - NullableAll711, - TypeNames711, - Action711, - AllPerms711, -}; +export type { Entity_07_11, Registry_07_11, CK_0711, EP_0711, EV_0711, DeepMerge_0711 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts index 1c477aea..8ac8438e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-12.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-12 (seed 712) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-12 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0712 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0712 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord712 { - a712: { x: number; y: string; z: boolean }; - b712: { p: string[]; q: Record }; - c712: { nested: { deep: { deeper: { deepest: string } } } }; - d712: number; - e712: string; - f712: boolean; - g712: null; - h712: undefined; - i712: bigint; - j712: symbol; +interface Entity_07_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_12 | null; children: Entity_07_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0712: number; y0712: string; z0712: boolean }; } -type PartialBig712 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten712 = T extends Array ? Flatten712 : T; -type Nested712 = number[][][][][][][][][][]; -type Flat712 = Flatten712; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly712 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly712 : T[K]; -}; -type DeepRequired712 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired712 : T[K]; +type Path_0712 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0712}` }[keyof T & string] : never; +type EP_0712 = Path_0712; + +type Val_0712 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0712 } + : T[K] extends object ? { t: 'o'; props: Val_0712 } + : { t: 'u' }; }; -type FR712 = DeepReadonly712>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion712 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha712 = Extract; -type ExcludeZulu712 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA712 { width: number; height: number; depth: number } -interface ShapeB712 { color: string; opacity: number; blend: string } -interface ShapeC712 { x: number; y: number; z: number; w: number } -interface ShapeD712 { label: string; title: string; summary: string } - -type Combined712 = ShapeA712 & ShapeB712 & ShapeC712 & ShapeD712; -type OptionalAll712 = { [K in keyof Combined712]?: Combined712[K] }; -type RequiredAll712 = { [K in keyof Combined712]-?: Combined712[K] }; -type ReadonlyAll712 = { readonly [K in keyof Combined712]: Combined712[K] }; -type NullableAll712 = { [K in keyof Combined712]: Combined712[K] | null }; +type EV_0712 = Val_0712; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString712 = T extends string ? true : false; -type IsNumber712 = T extends number ? true : false; -type TypeName712 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames712 = { - [K in keyof BigRecord712]: TypeName712; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb712 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource712 = "user" | "post" | "comment" | "tag" | "category"; -type Action712 = `${Verb712}_${Resource712}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise712 = T extends Promise ? UnwrapPromise712 : T; -type UnwrapArray712 = T extends (infer U)[] ? UnwrapArray712 : T; -type Head712 = T extends [infer H, ...infer _] ? H : never; -type Tail712 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation712 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation712>] - : never; +interface Registry_07_12 { + entities: Map; + validators: EV_0712; + paths: Set; + merged: DeepMerge_0712; +} -type SmallUnion712 = "a" | "b" | "c" | "d"; -type AllPerms712 = Permutation712; +type CK_0712 = `p07.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig712, - Flat712, - FR712, - BigUnion712, - ExtractAlpha712, - ExcludeZulu712, - OptionalAll712, - RequiredAll712, - ReadonlyAll712, - NullableAll712, - TypeNames712, - Action712, - AllPerms712, -}; +export type { Entity_07_12, Registry_07_12, CK_0712, EP_0712, EV_0712, DeepMerge_0712 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts index c4f05437..0a914820 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-13.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-13 (seed 713) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-13 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0713 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0713 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord713 { - a713: { x: number; y: string; z: boolean }; - b713: { p: string[]; q: Record }; - c713: { nested: { deep: { deeper: { deepest: string } } } }; - d713: number; - e713: string; - f713: boolean; - g713: null; - h713: undefined; - i713: bigint; - j713: symbol; +interface Entity_07_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_13 | null; children: Entity_07_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0713: number; y0713: string; z0713: boolean }; } -type PartialBig713 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten713 = T extends Array ? Flatten713 : T; -type Nested713 = number[][][][][][][][][][]; -type Flat713 = Flatten713; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly713 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly713 : T[K]; -}; -type DeepRequired713 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired713 : T[K]; +type Path_0713 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0713}` }[keyof T & string] : never; +type EP_0713 = Path_0713; + +type Val_0713 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0713 } + : T[K] extends object ? { t: 'o'; props: Val_0713 } + : { t: 'u' }; }; -type FR713 = DeepReadonly713>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion713 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha713 = Extract; -type ExcludeZulu713 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA713 { width: number; height: number; depth: number } -interface ShapeB713 { color: string; opacity: number; blend: string } -interface ShapeC713 { x: number; y: number; z: number; w: number } -interface ShapeD713 { label: string; title: string; summary: string } - -type Combined713 = ShapeA713 & ShapeB713 & ShapeC713 & ShapeD713; -type OptionalAll713 = { [K in keyof Combined713]?: Combined713[K] }; -type RequiredAll713 = { [K in keyof Combined713]-?: Combined713[K] }; -type ReadonlyAll713 = { readonly [K in keyof Combined713]: Combined713[K] }; -type NullableAll713 = { [K in keyof Combined713]: Combined713[K] | null }; +type EV_0713 = Val_0713; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString713 = T extends string ? true : false; -type IsNumber713 = T extends number ? true : false; -type TypeName713 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames713 = { - [K in keyof BigRecord713]: TypeName713; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb713 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource713 = "user" | "post" | "comment" | "tag" | "category"; -type Action713 = `${Verb713}_${Resource713}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise713 = T extends Promise ? UnwrapPromise713 : T; -type UnwrapArray713 = T extends (infer U)[] ? UnwrapArray713 : T; -type Head713 = T extends [infer H, ...infer _] ? H : never; -type Tail713 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation713 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation713>] - : never; +interface Registry_07_13 { + entities: Map; + validators: EV_0713; + paths: Set; + merged: DeepMerge_0713; +} -type SmallUnion713 = "a" | "b" | "c" | "d"; -type AllPerms713 = Permutation713; +type CK_0713 = `p07.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig713, - Flat713, - FR713, - BigUnion713, - ExtractAlpha713, - ExcludeZulu713, - OptionalAll713, - RequiredAll713, - ReadonlyAll713, - NullableAll713, - TypeNames713, - Action713, - AllPerms713, -}; +export type { Entity_07_13, Registry_07_13, CK_0713, EP_0713, EV_0713, DeepMerge_0713 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts index 6bce5f46..8c6b5056 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-14.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-14 (seed 714) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-14 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0714 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0714 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord714 { - a714: { x: number; y: string; z: boolean }; - b714: { p: string[]; q: Record }; - c714: { nested: { deep: { deeper: { deepest: string } } } }; - d714: number; - e714: string; - f714: boolean; - g714: null; - h714: undefined; - i714: bigint; - j714: symbol; +interface Entity_07_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_14 | null; children: Entity_07_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0714: number; y0714: string; z0714: boolean }; } -type PartialBig714 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten714 = T extends Array ? Flatten714 : T; -type Nested714 = number[][][][][][][][][][]; -type Flat714 = Flatten714; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly714 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly714 : T[K]; -}; -type DeepRequired714 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired714 : T[K]; +type Path_0714 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0714}` }[keyof T & string] : never; +type EP_0714 = Path_0714; + +type Val_0714 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0714 } + : T[K] extends object ? { t: 'o'; props: Val_0714 } + : { t: 'u' }; }; -type FR714 = DeepReadonly714>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion714 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha714 = Extract; -type ExcludeZulu714 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA714 { width: number; height: number; depth: number } -interface ShapeB714 { color: string; opacity: number; blend: string } -interface ShapeC714 { x: number; y: number; z: number; w: number } -interface ShapeD714 { label: string; title: string; summary: string } - -type Combined714 = ShapeA714 & ShapeB714 & ShapeC714 & ShapeD714; -type OptionalAll714 = { [K in keyof Combined714]?: Combined714[K] }; -type RequiredAll714 = { [K in keyof Combined714]-?: Combined714[K] }; -type ReadonlyAll714 = { readonly [K in keyof Combined714]: Combined714[K] }; -type NullableAll714 = { [K in keyof Combined714]: Combined714[K] | null }; +type EV_0714 = Val_0714; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString714 = T extends string ? true : false; -type IsNumber714 = T extends number ? true : false; -type TypeName714 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames714 = { - [K in keyof BigRecord714]: TypeName714; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb714 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource714 = "user" | "post" | "comment" | "tag" | "category"; -type Action714 = `${Verb714}_${Resource714}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise714 = T extends Promise ? UnwrapPromise714 : T; -type UnwrapArray714 = T extends (infer U)[] ? UnwrapArray714 : T; -type Head714 = T extends [infer H, ...infer _] ? H : never; -type Tail714 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation714 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation714>] - : never; +interface Registry_07_14 { + entities: Map; + validators: EV_0714; + paths: Set; + merged: DeepMerge_0714; +} -type SmallUnion714 = "a" | "b" | "c" | "d"; -type AllPerms714 = Permutation714; +type CK_0714 = `p07.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig714, - Flat714, - FR714, - BigUnion714, - ExtractAlpha714, - ExcludeZulu714, - OptionalAll714, - RequiredAll714, - ReadonlyAll714, - NullableAll714, - TypeNames714, - Action714, - AllPerms714, -}; +export type { Entity_07_14, Registry_07_14, CK_0714, EP_0714, EV_0714, DeepMerge_0714 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts index 3df9be6b..44e1e498 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-15.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-15 (seed 715) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-15 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0715 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0715 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord715 { - a715: { x: number; y: string; z: boolean }; - b715: { p: string[]; q: Record }; - c715: { nested: { deep: { deeper: { deepest: string } } } }; - d715: number; - e715: string; - f715: boolean; - g715: null; - h715: undefined; - i715: bigint; - j715: symbol; +interface Entity_07_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_15 | null; children: Entity_07_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0715: number; y0715: string; z0715: boolean }; } -type PartialBig715 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten715 = T extends Array ? Flatten715 : T; -type Nested715 = number[][][][][][][][][][]; -type Flat715 = Flatten715; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly715 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly715 : T[K]; -}; -type DeepRequired715 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired715 : T[K]; +type Path_0715 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0715}` }[keyof T & string] : never; +type EP_0715 = Path_0715; + +type Val_0715 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0715 } + : T[K] extends object ? { t: 'o'; props: Val_0715 } + : { t: 'u' }; }; -type FR715 = DeepReadonly715>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion715 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha715 = Extract; -type ExcludeZulu715 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA715 { width: number; height: number; depth: number } -interface ShapeB715 { color: string; opacity: number; blend: string } -interface ShapeC715 { x: number; y: number; z: number; w: number } -interface ShapeD715 { label: string; title: string; summary: string } - -type Combined715 = ShapeA715 & ShapeB715 & ShapeC715 & ShapeD715; -type OptionalAll715 = { [K in keyof Combined715]?: Combined715[K] }; -type RequiredAll715 = { [K in keyof Combined715]-?: Combined715[K] }; -type ReadonlyAll715 = { readonly [K in keyof Combined715]: Combined715[K] }; -type NullableAll715 = { [K in keyof Combined715]: Combined715[K] | null }; +type EV_0715 = Val_0715; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString715 = T extends string ? true : false; -type IsNumber715 = T extends number ? true : false; -type TypeName715 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames715 = { - [K in keyof BigRecord715]: TypeName715; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb715 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource715 = "user" | "post" | "comment" | "tag" | "category"; -type Action715 = `${Verb715}_${Resource715}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise715 = T extends Promise ? UnwrapPromise715 : T; -type UnwrapArray715 = T extends (infer U)[] ? UnwrapArray715 : T; -type Head715 = T extends [infer H, ...infer _] ? H : never; -type Tail715 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation715 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation715>] - : never; +interface Registry_07_15 { + entities: Map; + validators: EV_0715; + paths: Set; + merged: DeepMerge_0715; +} -type SmallUnion715 = "a" | "b" | "c" | "d"; -type AllPerms715 = Permutation715; +type CK_0715 = `p07.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig715, - Flat715, - FR715, - BigUnion715, - ExtractAlpha715, - ExcludeZulu715, - OptionalAll715, - RequiredAll715, - ReadonlyAll715, - NullableAll715, - TypeNames715, - Action715, - AllPerms715, -}; +export type { Entity_07_15, Registry_07_15, CK_0715, EP_0715, EV_0715, DeepMerge_0715 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts index d02729bb..9bf4e70c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-16.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-16 (seed 716) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-16 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0716 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0716 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord716 { - a716: { x: number; y: string; z: boolean }; - b716: { p: string[]; q: Record }; - c716: { nested: { deep: { deeper: { deepest: string } } } }; - d716: number; - e716: string; - f716: boolean; - g716: null; - h716: undefined; - i716: bigint; - j716: symbol; +interface Entity_07_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_16 | null; children: Entity_07_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0716: number; y0716: string; z0716: boolean }; } -type PartialBig716 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten716 = T extends Array ? Flatten716 : T; -type Nested716 = number[][][][][][][][][][]; -type Flat716 = Flatten716; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly716 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly716 : T[K]; -}; -type DeepRequired716 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired716 : T[K]; +type Path_0716 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0716}` }[keyof T & string] : never; +type EP_0716 = Path_0716; + +type Val_0716 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0716 } + : T[K] extends object ? { t: 'o'; props: Val_0716 } + : { t: 'u' }; }; -type FR716 = DeepReadonly716>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion716 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha716 = Extract; -type ExcludeZulu716 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA716 { width: number; height: number; depth: number } -interface ShapeB716 { color: string; opacity: number; blend: string } -interface ShapeC716 { x: number; y: number; z: number; w: number } -interface ShapeD716 { label: string; title: string; summary: string } - -type Combined716 = ShapeA716 & ShapeB716 & ShapeC716 & ShapeD716; -type OptionalAll716 = { [K in keyof Combined716]?: Combined716[K] }; -type RequiredAll716 = { [K in keyof Combined716]-?: Combined716[K] }; -type ReadonlyAll716 = { readonly [K in keyof Combined716]: Combined716[K] }; -type NullableAll716 = { [K in keyof Combined716]: Combined716[K] | null }; +type EV_0716 = Val_0716; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString716 = T extends string ? true : false; -type IsNumber716 = T extends number ? true : false; -type TypeName716 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames716 = { - [K in keyof BigRecord716]: TypeName716; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb716 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource716 = "user" | "post" | "comment" | "tag" | "category"; -type Action716 = `${Verb716}_${Resource716}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise716 = T extends Promise ? UnwrapPromise716 : T; -type UnwrapArray716 = T extends (infer U)[] ? UnwrapArray716 : T; -type Head716 = T extends [infer H, ...infer _] ? H : never; -type Tail716 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation716 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation716>] - : never; +interface Registry_07_16 { + entities: Map; + validators: EV_0716; + paths: Set; + merged: DeepMerge_0716; +} -type SmallUnion716 = "a" | "b" | "c" | "d"; -type AllPerms716 = Permutation716; +type CK_0716 = `p07.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig716, - Flat716, - FR716, - BigUnion716, - ExtractAlpha716, - ExcludeZulu716, - OptionalAll716, - RequiredAll716, - ReadonlyAll716, - NullableAll716, - TypeNames716, - Action716, - AllPerms716, -}; +export type { Entity_07_16, Registry_07_16, CK_0716, EP_0716, EV_0716, DeepMerge_0716 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts index 788ba102..76442713 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-17.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-17 (seed 717) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-17 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0717 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0717 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord717 { - a717: { x: number; y: string; z: boolean }; - b717: { p: string[]; q: Record }; - c717: { nested: { deep: { deeper: { deepest: string } } } }; - d717: number; - e717: string; - f717: boolean; - g717: null; - h717: undefined; - i717: bigint; - j717: symbol; +interface Entity_07_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_17 | null; children: Entity_07_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0717: number; y0717: string; z0717: boolean }; } -type PartialBig717 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten717 = T extends Array ? Flatten717 : T; -type Nested717 = number[][][][][][][][][][]; -type Flat717 = Flatten717; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly717 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly717 : T[K]; -}; -type DeepRequired717 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired717 : T[K]; +type Path_0717 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0717}` }[keyof T & string] : never; +type EP_0717 = Path_0717; + +type Val_0717 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0717 } + : T[K] extends object ? { t: 'o'; props: Val_0717 } + : { t: 'u' }; }; -type FR717 = DeepReadonly717>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion717 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha717 = Extract; -type ExcludeZulu717 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA717 { width: number; height: number; depth: number } -interface ShapeB717 { color: string; opacity: number; blend: string } -interface ShapeC717 { x: number; y: number; z: number; w: number } -interface ShapeD717 { label: string; title: string; summary: string } - -type Combined717 = ShapeA717 & ShapeB717 & ShapeC717 & ShapeD717; -type OptionalAll717 = { [K in keyof Combined717]?: Combined717[K] }; -type RequiredAll717 = { [K in keyof Combined717]-?: Combined717[K] }; -type ReadonlyAll717 = { readonly [K in keyof Combined717]: Combined717[K] }; -type NullableAll717 = { [K in keyof Combined717]: Combined717[K] | null }; +type EV_0717 = Val_0717; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString717 = T extends string ? true : false; -type IsNumber717 = T extends number ? true : false; -type TypeName717 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames717 = { - [K in keyof BigRecord717]: TypeName717; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb717 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource717 = "user" | "post" | "comment" | "tag" | "category"; -type Action717 = `${Verb717}_${Resource717}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise717 = T extends Promise ? UnwrapPromise717 : T; -type UnwrapArray717 = T extends (infer U)[] ? UnwrapArray717 : T; -type Head717 = T extends [infer H, ...infer _] ? H : never; -type Tail717 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation717 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation717>] - : never; +interface Registry_07_17 { + entities: Map; + validators: EV_0717; + paths: Set; + merged: DeepMerge_0717; +} -type SmallUnion717 = "a" | "b" | "c" | "d"; -type AllPerms717 = Permutation717; +type CK_0717 = `p07.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig717, - Flat717, - FR717, - BigUnion717, - ExtractAlpha717, - ExcludeZulu717, - OptionalAll717, - RequiredAll717, - ReadonlyAll717, - NullableAll717, - TypeNames717, - Action717, - AllPerms717, -}; +export type { Entity_07_17, Registry_07_17, CK_0717, EP_0717, EV_0717, DeepMerge_0717 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts index 994605cc..ca946117 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-18.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-18 (seed 718) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-18 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0718 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0718 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord718 { - a718: { x: number; y: string; z: boolean }; - b718: { p: string[]; q: Record }; - c718: { nested: { deep: { deeper: { deepest: string } } } }; - d718: number; - e718: string; - f718: boolean; - g718: null; - h718: undefined; - i718: bigint; - j718: symbol; +interface Entity_07_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_18 | null; children: Entity_07_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0718: number; y0718: string; z0718: boolean }; } -type PartialBig718 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten718 = T extends Array ? Flatten718 : T; -type Nested718 = number[][][][][][][][][][]; -type Flat718 = Flatten718; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly718 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly718 : T[K]; -}; -type DeepRequired718 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired718 : T[K]; +type Path_0718 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0718}` }[keyof T & string] : never; +type EP_0718 = Path_0718; + +type Val_0718 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0718 } + : T[K] extends object ? { t: 'o'; props: Val_0718 } + : { t: 'u' }; }; -type FR718 = DeepReadonly718>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion718 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha718 = Extract; -type ExcludeZulu718 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA718 { width: number; height: number; depth: number } -interface ShapeB718 { color: string; opacity: number; blend: string } -interface ShapeC718 { x: number; y: number; z: number; w: number } -interface ShapeD718 { label: string; title: string; summary: string } - -type Combined718 = ShapeA718 & ShapeB718 & ShapeC718 & ShapeD718; -type OptionalAll718 = { [K in keyof Combined718]?: Combined718[K] }; -type RequiredAll718 = { [K in keyof Combined718]-?: Combined718[K] }; -type ReadonlyAll718 = { readonly [K in keyof Combined718]: Combined718[K] }; -type NullableAll718 = { [K in keyof Combined718]: Combined718[K] | null }; +type EV_0718 = Val_0718; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString718 = T extends string ? true : false; -type IsNumber718 = T extends number ? true : false; -type TypeName718 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames718 = { - [K in keyof BigRecord718]: TypeName718; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb718 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource718 = "user" | "post" | "comment" | "tag" | "category"; -type Action718 = `${Verb718}_${Resource718}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise718 = T extends Promise ? UnwrapPromise718 : T; -type UnwrapArray718 = T extends (infer U)[] ? UnwrapArray718 : T; -type Head718 = T extends [infer H, ...infer _] ? H : never; -type Tail718 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation718 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation718>] - : never; +interface Registry_07_18 { + entities: Map; + validators: EV_0718; + paths: Set; + merged: DeepMerge_0718; +} -type SmallUnion718 = "a" | "b" | "c" | "d"; -type AllPerms718 = Permutation718; +type CK_0718 = `p07.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig718, - Flat718, - FR718, - BigUnion718, - ExtractAlpha718, - ExcludeZulu718, - OptionalAll718, - RequiredAll718, - ReadonlyAll718, - NullableAll718, - TypeNames718, - Action718, - AllPerms718, -}; +export type { Entity_07_18, Registry_07_18, CK_0718, EP_0718, EV_0718, DeepMerge_0718 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts index 32b4ea6f..6bce9368 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-19.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-19 (seed 719) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-19 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0719 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0719 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord719 { - a719: { x: number; y: string; z: boolean }; - b719: { p: string[]; q: Record }; - c719: { nested: { deep: { deeper: { deepest: string } } } }; - d719: number; - e719: string; - f719: boolean; - g719: null; - h719: undefined; - i719: bigint; - j719: symbol; +interface Entity_07_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_19 | null; children: Entity_07_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0719: number; y0719: string; z0719: boolean }; } -type PartialBig719 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten719 = T extends Array ? Flatten719 : T; -type Nested719 = number[][][][][][][][][][]; -type Flat719 = Flatten719; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly719 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly719 : T[K]; -}; -type DeepRequired719 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired719 : T[K]; +type Path_0719 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0719}` }[keyof T & string] : never; +type EP_0719 = Path_0719; + +type Val_0719 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0719 } + : T[K] extends object ? { t: 'o'; props: Val_0719 } + : { t: 'u' }; }; -type FR719 = DeepReadonly719>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion719 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha719 = Extract; -type ExcludeZulu719 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA719 { width: number; height: number; depth: number } -interface ShapeB719 { color: string; opacity: number; blend: string } -interface ShapeC719 { x: number; y: number; z: number; w: number } -interface ShapeD719 { label: string; title: string; summary: string } - -type Combined719 = ShapeA719 & ShapeB719 & ShapeC719 & ShapeD719; -type OptionalAll719 = { [K in keyof Combined719]?: Combined719[K] }; -type RequiredAll719 = { [K in keyof Combined719]-?: Combined719[K] }; -type ReadonlyAll719 = { readonly [K in keyof Combined719]: Combined719[K] }; -type NullableAll719 = { [K in keyof Combined719]: Combined719[K] | null }; +type EV_0719 = Val_0719; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString719 = T extends string ? true : false; -type IsNumber719 = T extends number ? true : false; -type TypeName719 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames719 = { - [K in keyof BigRecord719]: TypeName719; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb719 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource719 = "user" | "post" | "comment" | "tag" | "category"; -type Action719 = `${Verb719}_${Resource719}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise719 = T extends Promise ? UnwrapPromise719 : T; -type UnwrapArray719 = T extends (infer U)[] ? UnwrapArray719 : T; -type Head719 = T extends [infer H, ...infer _] ? H : never; -type Tail719 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation719 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation719>] - : never; +interface Registry_07_19 { + entities: Map; + validators: EV_0719; + paths: Set; + merged: DeepMerge_0719; +} -type SmallUnion719 = "a" | "b" | "c" | "d"; -type AllPerms719 = Permutation719; +type CK_0719 = `p07.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig719, - Flat719, - FR719, - BigUnion719, - ExtractAlpha719, - ExcludeZulu719, - OptionalAll719, - RequiredAll719, - ReadonlyAll719, - NullableAll719, - TypeNames719, - Action719, - AllPerms719, -}; +export type { Entity_07_19, Registry_07_19, CK_0719, EP_0719, EV_0719, DeepMerge_0719 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts index 7be64b85..92754812 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-20.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-20 (seed 720) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-20 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0720 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0720 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord720 { - a720: { x: number; y: string; z: boolean }; - b720: { p: string[]; q: Record }; - c720: { nested: { deep: { deeper: { deepest: string } } } }; - d720: number; - e720: string; - f720: boolean; - g720: null; - h720: undefined; - i720: bigint; - j720: symbol; +interface Entity_07_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_20 | null; children: Entity_07_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0720: number; y0720: string; z0720: boolean }; } -type PartialBig720 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten720 = T extends Array ? Flatten720 : T; -type Nested720 = number[][][][][][][][][][]; -type Flat720 = Flatten720; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly720 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly720 : T[K]; -}; -type DeepRequired720 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired720 : T[K]; +type Path_0720 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0720}` }[keyof T & string] : never; +type EP_0720 = Path_0720; + +type Val_0720 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0720 } + : T[K] extends object ? { t: 'o'; props: Val_0720 } + : { t: 'u' }; }; -type FR720 = DeepReadonly720>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion720 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha720 = Extract; -type ExcludeZulu720 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA720 { width: number; height: number; depth: number } -interface ShapeB720 { color: string; opacity: number; blend: string } -interface ShapeC720 { x: number; y: number; z: number; w: number } -interface ShapeD720 { label: string; title: string; summary: string } - -type Combined720 = ShapeA720 & ShapeB720 & ShapeC720 & ShapeD720; -type OptionalAll720 = { [K in keyof Combined720]?: Combined720[K] }; -type RequiredAll720 = { [K in keyof Combined720]-?: Combined720[K] }; -type ReadonlyAll720 = { readonly [K in keyof Combined720]: Combined720[K] }; -type NullableAll720 = { [K in keyof Combined720]: Combined720[K] | null }; +type EV_0720 = Val_0720; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString720 = T extends string ? true : false; -type IsNumber720 = T extends number ? true : false; -type TypeName720 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames720 = { - [K in keyof BigRecord720]: TypeName720; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb720 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource720 = "user" | "post" | "comment" | "tag" | "category"; -type Action720 = `${Verb720}_${Resource720}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise720 = T extends Promise ? UnwrapPromise720 : T; -type UnwrapArray720 = T extends (infer U)[] ? UnwrapArray720 : T; -type Head720 = T extends [infer H, ...infer _] ? H : never; -type Tail720 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation720 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation720>] - : never; +interface Registry_07_20 { + entities: Map; + validators: EV_0720; + paths: Set; + merged: DeepMerge_0720; +} -type SmallUnion720 = "a" | "b" | "c" | "d"; -type AllPerms720 = Permutation720; +type CK_0720 = `p07.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig720, - Flat720, - FR720, - BigUnion720, - ExtractAlpha720, - ExcludeZulu720, - OptionalAll720, - RequiredAll720, - ReadonlyAll720, - NullableAll720, - TypeNames720, - Action720, - AllPerms720, -}; +export type { Entity_07_20, Registry_07_20, CK_0720, EP_0720, EV_0720, DeepMerge_0720 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts index 18b4dde7..974ef4ab 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-21.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-21 (seed 721) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-21 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0721 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0721 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord721 { - a721: { x: number; y: string; z: boolean }; - b721: { p: string[]; q: Record }; - c721: { nested: { deep: { deeper: { deepest: string } } } }; - d721: number; - e721: string; - f721: boolean; - g721: null; - h721: undefined; - i721: bigint; - j721: symbol; +interface Entity_07_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_21 | null; children: Entity_07_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0721: number; y0721: string; z0721: boolean }; } -type PartialBig721 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten721 = T extends Array ? Flatten721 : T; -type Nested721 = number[][][][][][][][][][]; -type Flat721 = Flatten721; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly721 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly721 : T[K]; -}; -type DeepRequired721 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired721 : T[K]; +type Path_0721 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0721}` }[keyof T & string] : never; +type EP_0721 = Path_0721; + +type Val_0721 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0721 } + : T[K] extends object ? { t: 'o'; props: Val_0721 } + : { t: 'u' }; }; -type FR721 = DeepReadonly721>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion721 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha721 = Extract; -type ExcludeZulu721 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA721 { width: number; height: number; depth: number } -interface ShapeB721 { color: string; opacity: number; blend: string } -interface ShapeC721 { x: number; y: number; z: number; w: number } -interface ShapeD721 { label: string; title: string; summary: string } - -type Combined721 = ShapeA721 & ShapeB721 & ShapeC721 & ShapeD721; -type OptionalAll721 = { [K in keyof Combined721]?: Combined721[K] }; -type RequiredAll721 = { [K in keyof Combined721]-?: Combined721[K] }; -type ReadonlyAll721 = { readonly [K in keyof Combined721]: Combined721[K] }; -type NullableAll721 = { [K in keyof Combined721]: Combined721[K] | null }; +type EV_0721 = Val_0721; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString721 = T extends string ? true : false; -type IsNumber721 = T extends number ? true : false; -type TypeName721 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames721 = { - [K in keyof BigRecord721]: TypeName721; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb721 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource721 = "user" | "post" | "comment" | "tag" | "category"; -type Action721 = `${Verb721}_${Resource721}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise721 = T extends Promise ? UnwrapPromise721 : T; -type UnwrapArray721 = T extends (infer U)[] ? UnwrapArray721 : T; -type Head721 = T extends [infer H, ...infer _] ? H : never; -type Tail721 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation721 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation721>] - : never; +interface Registry_07_21 { + entities: Map; + validators: EV_0721; + paths: Set; + merged: DeepMerge_0721; +} -type SmallUnion721 = "a" | "b" | "c" | "d"; -type AllPerms721 = Permutation721; +type CK_0721 = `p07.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig721, - Flat721, - FR721, - BigUnion721, - ExtractAlpha721, - ExcludeZulu721, - OptionalAll721, - RequiredAll721, - ReadonlyAll721, - NullableAll721, - TypeNames721, - Action721, - AllPerms721, -}; +export type { Entity_07_21, Registry_07_21, CK_0721, EP_0721, EV_0721, DeepMerge_0721 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts index 6958c5d7..32d5985d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-22.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-22 (seed 722) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-22 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0722 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0722 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord722 { - a722: { x: number; y: string; z: boolean }; - b722: { p: string[]; q: Record }; - c722: { nested: { deep: { deeper: { deepest: string } } } }; - d722: number; - e722: string; - f722: boolean; - g722: null; - h722: undefined; - i722: bigint; - j722: symbol; +interface Entity_07_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_22 | null; children: Entity_07_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0722: number; y0722: string; z0722: boolean }; } -type PartialBig722 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten722 = T extends Array ? Flatten722 : T; -type Nested722 = number[][][][][][][][][][]; -type Flat722 = Flatten722; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly722 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly722 : T[K]; -}; -type DeepRequired722 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired722 : T[K]; +type Path_0722 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0722}` }[keyof T & string] : never; +type EP_0722 = Path_0722; + +type Val_0722 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0722 } + : T[K] extends object ? { t: 'o'; props: Val_0722 } + : { t: 'u' }; }; -type FR722 = DeepReadonly722>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion722 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha722 = Extract; -type ExcludeZulu722 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA722 { width: number; height: number; depth: number } -interface ShapeB722 { color: string; opacity: number; blend: string } -interface ShapeC722 { x: number; y: number; z: number; w: number } -interface ShapeD722 { label: string; title: string; summary: string } - -type Combined722 = ShapeA722 & ShapeB722 & ShapeC722 & ShapeD722; -type OptionalAll722 = { [K in keyof Combined722]?: Combined722[K] }; -type RequiredAll722 = { [K in keyof Combined722]-?: Combined722[K] }; -type ReadonlyAll722 = { readonly [K in keyof Combined722]: Combined722[K] }; -type NullableAll722 = { [K in keyof Combined722]: Combined722[K] | null }; +type EV_0722 = Val_0722; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString722 = T extends string ? true : false; -type IsNumber722 = T extends number ? true : false; -type TypeName722 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames722 = { - [K in keyof BigRecord722]: TypeName722; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb722 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource722 = "user" | "post" | "comment" | "tag" | "category"; -type Action722 = `${Verb722}_${Resource722}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise722 = T extends Promise ? UnwrapPromise722 : T; -type UnwrapArray722 = T extends (infer U)[] ? UnwrapArray722 : T; -type Head722 = T extends [infer H, ...infer _] ? H : never; -type Tail722 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation722 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation722>] - : never; +interface Registry_07_22 { + entities: Map; + validators: EV_0722; + paths: Set; + merged: DeepMerge_0722; +} -type SmallUnion722 = "a" | "b" | "c" | "d"; -type AllPerms722 = Permutation722; +type CK_0722 = `p07.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig722, - Flat722, - FR722, - BigUnion722, - ExtractAlpha722, - ExcludeZulu722, - OptionalAll722, - RequiredAll722, - ReadonlyAll722, - NullableAll722, - TypeNames722, - Action722, - AllPerms722, -}; +export type { Entity_07_22, Registry_07_22, CK_0722, EP_0722, EV_0722, DeepMerge_0722 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts index f42bda19..076d4a04 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-23.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-23 (seed 723) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-23 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0723 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0723 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord723 { - a723: { x: number; y: string; z: boolean }; - b723: { p: string[]; q: Record }; - c723: { nested: { deep: { deeper: { deepest: string } } } }; - d723: number; - e723: string; - f723: boolean; - g723: null; - h723: undefined; - i723: bigint; - j723: symbol; +interface Entity_07_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_23 | null; children: Entity_07_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0723: number; y0723: string; z0723: boolean }; } -type PartialBig723 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten723 = T extends Array ? Flatten723 : T; -type Nested723 = number[][][][][][][][][][]; -type Flat723 = Flatten723; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly723 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly723 : T[K]; -}; -type DeepRequired723 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired723 : T[K]; +type Path_0723 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0723}` }[keyof T & string] : never; +type EP_0723 = Path_0723; + +type Val_0723 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0723 } + : T[K] extends object ? { t: 'o'; props: Val_0723 } + : { t: 'u' }; }; -type FR723 = DeepReadonly723>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion723 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha723 = Extract; -type ExcludeZulu723 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA723 { width: number; height: number; depth: number } -interface ShapeB723 { color: string; opacity: number; blend: string } -interface ShapeC723 { x: number; y: number; z: number; w: number } -interface ShapeD723 { label: string; title: string; summary: string } - -type Combined723 = ShapeA723 & ShapeB723 & ShapeC723 & ShapeD723; -type OptionalAll723 = { [K in keyof Combined723]?: Combined723[K] }; -type RequiredAll723 = { [K in keyof Combined723]-?: Combined723[K] }; -type ReadonlyAll723 = { readonly [K in keyof Combined723]: Combined723[K] }; -type NullableAll723 = { [K in keyof Combined723]: Combined723[K] | null }; +type EV_0723 = Val_0723; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString723 = T extends string ? true : false; -type IsNumber723 = T extends number ? true : false; -type TypeName723 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames723 = { - [K in keyof BigRecord723]: TypeName723; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb723 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource723 = "user" | "post" | "comment" | "tag" | "category"; -type Action723 = `${Verb723}_${Resource723}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise723 = T extends Promise ? UnwrapPromise723 : T; -type UnwrapArray723 = T extends (infer U)[] ? UnwrapArray723 : T; -type Head723 = T extends [infer H, ...infer _] ? H : never; -type Tail723 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation723 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation723>] - : never; +interface Registry_07_23 { + entities: Map; + validators: EV_0723; + paths: Set; + merged: DeepMerge_0723; +} -type SmallUnion723 = "a" | "b" | "c" | "d"; -type AllPerms723 = Permutation723; +type CK_0723 = `p07.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig723, - Flat723, - FR723, - BigUnion723, - ExtractAlpha723, - ExcludeZulu723, - OptionalAll723, - RequiredAll723, - ReadonlyAll723, - NullableAll723, - TypeNames723, - Action723, - AllPerms723, -}; +export type { Entity_07_23, Registry_07_23, CK_0723, EP_0723, EV_0723, DeepMerge_0723 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts index 91a9c85e..6ffac8a1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-24.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-24 (seed 724) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-24 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0724 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0724 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord724 { - a724: { x: number; y: string; z: boolean }; - b724: { p: string[]; q: Record }; - c724: { nested: { deep: { deeper: { deepest: string } } } }; - d724: number; - e724: string; - f724: boolean; - g724: null; - h724: undefined; - i724: bigint; - j724: symbol; +interface Entity_07_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_24 | null; children: Entity_07_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0724: number; y0724: string; z0724: boolean }; } -type PartialBig724 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten724 = T extends Array ? Flatten724 : T; -type Nested724 = number[][][][][][][][][][]; -type Flat724 = Flatten724; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly724 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly724 : T[K]; -}; -type DeepRequired724 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired724 : T[K]; +type Path_0724 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0724}` }[keyof T & string] : never; +type EP_0724 = Path_0724; + +type Val_0724 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0724 } + : T[K] extends object ? { t: 'o'; props: Val_0724 } + : { t: 'u' }; }; -type FR724 = DeepReadonly724>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion724 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha724 = Extract; -type ExcludeZulu724 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA724 { width: number; height: number; depth: number } -interface ShapeB724 { color: string; opacity: number; blend: string } -interface ShapeC724 { x: number; y: number; z: number; w: number } -interface ShapeD724 { label: string; title: string; summary: string } - -type Combined724 = ShapeA724 & ShapeB724 & ShapeC724 & ShapeD724; -type OptionalAll724 = { [K in keyof Combined724]?: Combined724[K] }; -type RequiredAll724 = { [K in keyof Combined724]-?: Combined724[K] }; -type ReadonlyAll724 = { readonly [K in keyof Combined724]: Combined724[K] }; -type NullableAll724 = { [K in keyof Combined724]: Combined724[K] | null }; +type EV_0724 = Val_0724; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString724 = T extends string ? true : false; -type IsNumber724 = T extends number ? true : false; -type TypeName724 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames724 = { - [K in keyof BigRecord724]: TypeName724; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb724 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource724 = "user" | "post" | "comment" | "tag" | "category"; -type Action724 = `${Verb724}_${Resource724}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise724 = T extends Promise ? UnwrapPromise724 : T; -type UnwrapArray724 = T extends (infer U)[] ? UnwrapArray724 : T; -type Head724 = T extends [infer H, ...infer _] ? H : never; -type Tail724 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation724 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation724>] - : never; +interface Registry_07_24 { + entities: Map; + validators: EV_0724; + paths: Set; + merged: DeepMerge_0724; +} -type SmallUnion724 = "a" | "b" | "c" | "d"; -type AllPerms724 = Permutation724; +type CK_0724 = `p07.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig724, - Flat724, - FR724, - BigUnion724, - ExtractAlpha724, - ExcludeZulu724, - OptionalAll724, - RequiredAll724, - ReadonlyAll724, - NullableAll724, - TypeNames724, - Action724, - AllPerms724, -}; +export type { Entity_07_24, Registry_07_24, CK_0724, EP_0724, EV_0724, DeepMerge_0724 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts index 8f520f71..54d400d8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-25.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-25 (seed 725) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-25 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0725 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0725 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord725 { - a725: { x: number; y: string; z: boolean }; - b725: { p: string[]; q: Record }; - c725: { nested: { deep: { deeper: { deepest: string } } } }; - d725: number; - e725: string; - f725: boolean; - g725: null; - h725: undefined; - i725: bigint; - j725: symbol; +interface Entity_07_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_25 | null; children: Entity_07_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0725: number; y0725: string; z0725: boolean }; } -type PartialBig725 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten725 = T extends Array ? Flatten725 : T; -type Nested725 = number[][][][][][][][][][]; -type Flat725 = Flatten725; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly725 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly725 : T[K]; -}; -type DeepRequired725 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired725 : T[K]; +type Path_0725 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0725}` }[keyof T & string] : never; +type EP_0725 = Path_0725; + +type Val_0725 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0725 } + : T[K] extends object ? { t: 'o'; props: Val_0725 } + : { t: 'u' }; }; -type FR725 = DeepReadonly725>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion725 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha725 = Extract; -type ExcludeZulu725 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA725 { width: number; height: number; depth: number } -interface ShapeB725 { color: string; opacity: number; blend: string } -interface ShapeC725 { x: number; y: number; z: number; w: number } -interface ShapeD725 { label: string; title: string; summary: string } - -type Combined725 = ShapeA725 & ShapeB725 & ShapeC725 & ShapeD725; -type OptionalAll725 = { [K in keyof Combined725]?: Combined725[K] }; -type RequiredAll725 = { [K in keyof Combined725]-?: Combined725[K] }; -type ReadonlyAll725 = { readonly [K in keyof Combined725]: Combined725[K] }; -type NullableAll725 = { [K in keyof Combined725]: Combined725[K] | null }; +type EV_0725 = Val_0725; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString725 = T extends string ? true : false; -type IsNumber725 = T extends number ? true : false; -type TypeName725 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames725 = { - [K in keyof BigRecord725]: TypeName725; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb725 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource725 = "user" | "post" | "comment" | "tag" | "category"; -type Action725 = `${Verb725}_${Resource725}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise725 = T extends Promise ? UnwrapPromise725 : T; -type UnwrapArray725 = T extends (infer U)[] ? UnwrapArray725 : T; -type Head725 = T extends [infer H, ...infer _] ? H : never; -type Tail725 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation725 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation725>] - : never; +interface Registry_07_25 { + entities: Map; + validators: EV_0725; + paths: Set; + merged: DeepMerge_0725; +} -type SmallUnion725 = "a" | "b" | "c" | "d"; -type AllPerms725 = Permutation725; +type CK_0725 = `p07.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig725, - Flat725, - FR725, - BigUnion725, - ExtractAlpha725, - ExcludeZulu725, - OptionalAll725, - RequiredAll725, - ReadonlyAll725, - NullableAll725, - TypeNames725, - Action725, - AllPerms725, -}; +export type { Entity_07_25, Registry_07_25, CK_0725, EP_0725, EV_0725, DeepMerge_0725 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts index efe0c73c..2e665b08 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-26.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-26 (seed 726) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-26 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0726 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0726 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord726 { - a726: { x: number; y: string; z: boolean }; - b726: { p: string[]; q: Record }; - c726: { nested: { deep: { deeper: { deepest: string } } } }; - d726: number; - e726: string; - f726: boolean; - g726: null; - h726: undefined; - i726: bigint; - j726: symbol; +interface Entity_07_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_26 | null; children: Entity_07_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0726: number; y0726: string; z0726: boolean }; } -type PartialBig726 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten726 = T extends Array ? Flatten726 : T; -type Nested726 = number[][][][][][][][][][]; -type Flat726 = Flatten726; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly726 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly726 : T[K]; -}; -type DeepRequired726 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired726 : T[K]; +type Path_0726 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0726}` }[keyof T & string] : never; +type EP_0726 = Path_0726; + +type Val_0726 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0726 } + : T[K] extends object ? { t: 'o'; props: Val_0726 } + : { t: 'u' }; }; -type FR726 = DeepReadonly726>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion726 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha726 = Extract; -type ExcludeZulu726 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA726 { width: number; height: number; depth: number } -interface ShapeB726 { color: string; opacity: number; blend: string } -interface ShapeC726 { x: number; y: number; z: number; w: number } -interface ShapeD726 { label: string; title: string; summary: string } - -type Combined726 = ShapeA726 & ShapeB726 & ShapeC726 & ShapeD726; -type OptionalAll726 = { [K in keyof Combined726]?: Combined726[K] }; -type RequiredAll726 = { [K in keyof Combined726]-?: Combined726[K] }; -type ReadonlyAll726 = { readonly [K in keyof Combined726]: Combined726[K] }; -type NullableAll726 = { [K in keyof Combined726]: Combined726[K] | null }; +type EV_0726 = Val_0726; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString726 = T extends string ? true : false; -type IsNumber726 = T extends number ? true : false; -type TypeName726 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames726 = { - [K in keyof BigRecord726]: TypeName726; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb726 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource726 = "user" | "post" | "comment" | "tag" | "category"; -type Action726 = `${Verb726}_${Resource726}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise726 = T extends Promise ? UnwrapPromise726 : T; -type UnwrapArray726 = T extends (infer U)[] ? UnwrapArray726 : T; -type Head726 = T extends [infer H, ...infer _] ? H : never; -type Tail726 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation726 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation726>] - : never; +interface Registry_07_26 { + entities: Map; + validators: EV_0726; + paths: Set; + merged: DeepMerge_0726; +} -type SmallUnion726 = "a" | "b" | "c" | "d"; -type AllPerms726 = Permutation726; +type CK_0726 = `p07.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig726, - Flat726, - FR726, - BigUnion726, - ExtractAlpha726, - ExcludeZulu726, - OptionalAll726, - RequiredAll726, - ReadonlyAll726, - NullableAll726, - TypeNames726, - Action726, - AllPerms726, -}; +export type { Entity_07_26, Registry_07_26, CK_0726, EP_0726, EV_0726, DeepMerge_0726 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts index 3c4de259..9d7179e1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-27.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-27 (seed 727) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-27 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0727 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0727 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord727 { - a727: { x: number; y: string; z: boolean }; - b727: { p: string[]; q: Record }; - c727: { nested: { deep: { deeper: { deepest: string } } } }; - d727: number; - e727: string; - f727: boolean; - g727: null; - h727: undefined; - i727: bigint; - j727: symbol; +interface Entity_07_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_27 | null; children: Entity_07_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0727: number; y0727: string; z0727: boolean }; } -type PartialBig727 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten727 = T extends Array ? Flatten727 : T; -type Nested727 = number[][][][][][][][][][]; -type Flat727 = Flatten727; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly727 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly727 : T[K]; -}; -type DeepRequired727 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired727 : T[K]; +type Path_0727 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0727}` }[keyof T & string] : never; +type EP_0727 = Path_0727; + +type Val_0727 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0727 } + : T[K] extends object ? { t: 'o'; props: Val_0727 } + : { t: 'u' }; }; -type FR727 = DeepReadonly727>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion727 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha727 = Extract; -type ExcludeZulu727 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA727 { width: number; height: number; depth: number } -interface ShapeB727 { color: string; opacity: number; blend: string } -interface ShapeC727 { x: number; y: number; z: number; w: number } -interface ShapeD727 { label: string; title: string; summary: string } - -type Combined727 = ShapeA727 & ShapeB727 & ShapeC727 & ShapeD727; -type OptionalAll727 = { [K in keyof Combined727]?: Combined727[K] }; -type RequiredAll727 = { [K in keyof Combined727]-?: Combined727[K] }; -type ReadonlyAll727 = { readonly [K in keyof Combined727]: Combined727[K] }; -type NullableAll727 = { [K in keyof Combined727]: Combined727[K] | null }; +type EV_0727 = Val_0727; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString727 = T extends string ? true : false; -type IsNumber727 = T extends number ? true : false; -type TypeName727 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames727 = { - [K in keyof BigRecord727]: TypeName727; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb727 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource727 = "user" | "post" | "comment" | "tag" | "category"; -type Action727 = `${Verb727}_${Resource727}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise727 = T extends Promise ? UnwrapPromise727 : T; -type UnwrapArray727 = T extends (infer U)[] ? UnwrapArray727 : T; -type Head727 = T extends [infer H, ...infer _] ? H : never; -type Tail727 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation727 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation727>] - : never; +interface Registry_07_27 { + entities: Map; + validators: EV_0727; + paths: Set; + merged: DeepMerge_0727; +} -type SmallUnion727 = "a" | "b" | "c" | "d"; -type AllPerms727 = Permutation727; +type CK_0727 = `p07.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig727, - Flat727, - FR727, - BigUnion727, - ExtractAlpha727, - ExcludeZulu727, - OptionalAll727, - RequiredAll727, - ReadonlyAll727, - NullableAll727, - TypeNames727, - Action727, - AllPerms727, -}; +export type { Entity_07_27, Registry_07_27, CK_0727, EP_0727, EV_0727, DeepMerge_0727 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts index 3fb76f8f..a60d6837 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-28.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-28 (seed 728) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-28 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0728 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0728 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord728 { - a728: { x: number; y: string; z: boolean }; - b728: { p: string[]; q: Record }; - c728: { nested: { deep: { deeper: { deepest: string } } } }; - d728: number; - e728: string; - f728: boolean; - g728: null; - h728: undefined; - i728: bigint; - j728: symbol; +interface Entity_07_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_28 | null; children: Entity_07_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0728: number; y0728: string; z0728: boolean }; } -type PartialBig728 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten728 = T extends Array ? Flatten728 : T; -type Nested728 = number[][][][][][][][][][]; -type Flat728 = Flatten728; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly728 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly728 : T[K]; -}; -type DeepRequired728 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired728 : T[K]; +type Path_0728 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0728}` }[keyof T & string] : never; +type EP_0728 = Path_0728; + +type Val_0728 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0728 } + : T[K] extends object ? { t: 'o'; props: Val_0728 } + : { t: 'u' }; }; -type FR728 = DeepReadonly728>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion728 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha728 = Extract; -type ExcludeZulu728 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA728 { width: number; height: number; depth: number } -interface ShapeB728 { color: string; opacity: number; blend: string } -interface ShapeC728 { x: number; y: number; z: number; w: number } -interface ShapeD728 { label: string; title: string; summary: string } - -type Combined728 = ShapeA728 & ShapeB728 & ShapeC728 & ShapeD728; -type OptionalAll728 = { [K in keyof Combined728]?: Combined728[K] }; -type RequiredAll728 = { [K in keyof Combined728]-?: Combined728[K] }; -type ReadonlyAll728 = { readonly [K in keyof Combined728]: Combined728[K] }; -type NullableAll728 = { [K in keyof Combined728]: Combined728[K] | null }; +type EV_0728 = Val_0728; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString728 = T extends string ? true : false; -type IsNumber728 = T extends number ? true : false; -type TypeName728 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames728 = { - [K in keyof BigRecord728]: TypeName728; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb728 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource728 = "user" | "post" | "comment" | "tag" | "category"; -type Action728 = `${Verb728}_${Resource728}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise728 = T extends Promise ? UnwrapPromise728 : T; -type UnwrapArray728 = T extends (infer U)[] ? UnwrapArray728 : T; -type Head728 = T extends [infer H, ...infer _] ? H : never; -type Tail728 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation728 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation728>] - : never; +interface Registry_07_28 { + entities: Map; + validators: EV_0728; + paths: Set; + merged: DeepMerge_0728; +} -type SmallUnion728 = "a" | "b" | "c" | "d"; -type AllPerms728 = Permutation728; +type CK_0728 = `p07.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig728, - Flat728, - FR728, - BigUnion728, - ExtractAlpha728, - ExcludeZulu728, - OptionalAll728, - RequiredAll728, - ReadonlyAll728, - NullableAll728, - TypeNames728, - Action728, - AllPerms728, -}; +export type { Entity_07_28, Registry_07_28, CK_0728, EP_0728, EV_0728, DeepMerge_0728 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts index d8f2715c..4aba4f5b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-29.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-29 (seed 729) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-29 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0729 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0729 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord729 { - a729: { x: number; y: string; z: boolean }; - b729: { p: string[]; q: Record }; - c729: { nested: { deep: { deeper: { deepest: string } } } }; - d729: number; - e729: string; - f729: boolean; - g729: null; - h729: undefined; - i729: bigint; - j729: symbol; +interface Entity_07_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_29 | null; children: Entity_07_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0729: number; y0729: string; z0729: boolean }; } -type PartialBig729 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten729 = T extends Array ? Flatten729 : T; -type Nested729 = number[][][][][][][][][][]; -type Flat729 = Flatten729; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly729 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly729 : T[K]; -}; -type DeepRequired729 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired729 : T[K]; +type Path_0729 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0729}` }[keyof T & string] : never; +type EP_0729 = Path_0729; + +type Val_0729 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0729 } + : T[K] extends object ? { t: 'o'; props: Val_0729 } + : { t: 'u' }; }; -type FR729 = DeepReadonly729>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion729 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha729 = Extract; -type ExcludeZulu729 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA729 { width: number; height: number; depth: number } -interface ShapeB729 { color: string; opacity: number; blend: string } -interface ShapeC729 { x: number; y: number; z: number; w: number } -interface ShapeD729 { label: string; title: string; summary: string } - -type Combined729 = ShapeA729 & ShapeB729 & ShapeC729 & ShapeD729; -type OptionalAll729 = { [K in keyof Combined729]?: Combined729[K] }; -type RequiredAll729 = { [K in keyof Combined729]-?: Combined729[K] }; -type ReadonlyAll729 = { readonly [K in keyof Combined729]: Combined729[K] }; -type NullableAll729 = { [K in keyof Combined729]: Combined729[K] | null }; +type EV_0729 = Val_0729; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString729 = T extends string ? true : false; -type IsNumber729 = T extends number ? true : false; -type TypeName729 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames729 = { - [K in keyof BigRecord729]: TypeName729; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb729 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource729 = "user" | "post" | "comment" | "tag" | "category"; -type Action729 = `${Verb729}_${Resource729}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise729 = T extends Promise ? UnwrapPromise729 : T; -type UnwrapArray729 = T extends (infer U)[] ? UnwrapArray729 : T; -type Head729 = T extends [infer H, ...infer _] ? H : never; -type Tail729 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation729 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation729>] - : never; +interface Registry_07_29 { + entities: Map; + validators: EV_0729; + paths: Set; + merged: DeepMerge_0729; +} -type SmallUnion729 = "a" | "b" | "c" | "d"; -type AllPerms729 = Permutation729; +type CK_0729 = `p07.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig729, - Flat729, - FR729, - BigUnion729, - ExtractAlpha729, - ExcludeZulu729, - OptionalAll729, - RequiredAll729, - ReadonlyAll729, - NullableAll729, - TypeNames729, - Action729, - AllPerms729, -}; +export type { Entity_07_29, Registry_07_29, CK_0729, EP_0729, EV_0729, DeepMerge_0729 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts index 5f688aa6..56c94135 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-30.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-30 (seed 730) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-30 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0730 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0730 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord730 { - a730: { x: number; y: string; z: boolean }; - b730: { p: string[]; q: Record }; - c730: { nested: { deep: { deeper: { deepest: string } } } }; - d730: number; - e730: string; - f730: boolean; - g730: null; - h730: undefined; - i730: bigint; - j730: symbol; +interface Entity_07_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_30 | null; children: Entity_07_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0730: number; y0730: string; z0730: boolean }; } -type PartialBig730 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten730 = T extends Array ? Flatten730 : T; -type Nested730 = number[][][][][][][][][][]; -type Flat730 = Flatten730; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly730 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly730 : T[K]; -}; -type DeepRequired730 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired730 : T[K]; +type Path_0730 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0730}` }[keyof T & string] : never; +type EP_0730 = Path_0730; + +type Val_0730 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0730 } + : T[K] extends object ? { t: 'o'; props: Val_0730 } + : { t: 'u' }; }; -type FR730 = DeepReadonly730>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion730 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha730 = Extract; -type ExcludeZulu730 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA730 { width: number; height: number; depth: number } -interface ShapeB730 { color: string; opacity: number; blend: string } -interface ShapeC730 { x: number; y: number; z: number; w: number } -interface ShapeD730 { label: string; title: string; summary: string } - -type Combined730 = ShapeA730 & ShapeB730 & ShapeC730 & ShapeD730; -type OptionalAll730 = { [K in keyof Combined730]?: Combined730[K] }; -type RequiredAll730 = { [K in keyof Combined730]-?: Combined730[K] }; -type ReadonlyAll730 = { readonly [K in keyof Combined730]: Combined730[K] }; -type NullableAll730 = { [K in keyof Combined730]: Combined730[K] | null }; +type EV_0730 = Val_0730; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString730 = T extends string ? true : false; -type IsNumber730 = T extends number ? true : false; -type TypeName730 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames730 = { - [K in keyof BigRecord730]: TypeName730; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb730 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource730 = "user" | "post" | "comment" | "tag" | "category"; -type Action730 = `${Verb730}_${Resource730}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise730 = T extends Promise ? UnwrapPromise730 : T; -type UnwrapArray730 = T extends (infer U)[] ? UnwrapArray730 : T; -type Head730 = T extends [infer H, ...infer _] ? H : never; -type Tail730 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation730 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation730>] - : never; +interface Registry_07_30 { + entities: Map; + validators: EV_0730; + paths: Set; + merged: DeepMerge_0730; +} -type SmallUnion730 = "a" | "b" | "c" | "d"; -type AllPerms730 = Permutation730; +type CK_0730 = `p07.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig730, - Flat730, - FR730, - BigUnion730, - ExtractAlpha730, - ExcludeZulu730, - OptionalAll730, - RequiredAll730, - ReadonlyAll730, - NullableAll730, - TypeNames730, - Action730, - AllPerms730, -}; +export type { Entity_07_30, Registry_07_30, CK_0730, EP_0730, EV_0730, DeepMerge_0730 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts index ad6ab74c..9be35d5c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-31.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-31 (seed 731) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-31 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0731 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0731 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord731 { - a731: { x: number; y: string; z: boolean }; - b731: { p: string[]; q: Record }; - c731: { nested: { deep: { deeper: { deepest: string } } } }; - d731: number; - e731: string; - f731: boolean; - g731: null; - h731: undefined; - i731: bigint; - j731: symbol; +interface Entity_07_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_31 | null; children: Entity_07_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0731: number; y0731: string; z0731: boolean }; } -type PartialBig731 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten731 = T extends Array ? Flatten731 : T; -type Nested731 = number[][][][][][][][][][]; -type Flat731 = Flatten731; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly731 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly731 : T[K]; -}; -type DeepRequired731 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired731 : T[K]; +type Path_0731 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0731}` }[keyof T & string] : never; +type EP_0731 = Path_0731; + +type Val_0731 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0731 } + : T[K] extends object ? { t: 'o'; props: Val_0731 } + : { t: 'u' }; }; -type FR731 = DeepReadonly731>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion731 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha731 = Extract; -type ExcludeZulu731 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA731 { width: number; height: number; depth: number } -interface ShapeB731 { color: string; opacity: number; blend: string } -interface ShapeC731 { x: number; y: number; z: number; w: number } -interface ShapeD731 { label: string; title: string; summary: string } - -type Combined731 = ShapeA731 & ShapeB731 & ShapeC731 & ShapeD731; -type OptionalAll731 = { [K in keyof Combined731]?: Combined731[K] }; -type RequiredAll731 = { [K in keyof Combined731]-?: Combined731[K] }; -type ReadonlyAll731 = { readonly [K in keyof Combined731]: Combined731[K] }; -type NullableAll731 = { [K in keyof Combined731]: Combined731[K] | null }; +type EV_0731 = Val_0731; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString731 = T extends string ? true : false; -type IsNumber731 = T extends number ? true : false; -type TypeName731 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames731 = { - [K in keyof BigRecord731]: TypeName731; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb731 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource731 = "user" | "post" | "comment" | "tag" | "category"; -type Action731 = `${Verb731}_${Resource731}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise731 = T extends Promise ? UnwrapPromise731 : T; -type UnwrapArray731 = T extends (infer U)[] ? UnwrapArray731 : T; -type Head731 = T extends [infer H, ...infer _] ? H : never; -type Tail731 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation731 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation731>] - : never; +interface Registry_07_31 { + entities: Map; + validators: EV_0731; + paths: Set; + merged: DeepMerge_0731; +} -type SmallUnion731 = "a" | "b" | "c" | "d"; -type AllPerms731 = Permutation731; +type CK_0731 = `p07.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig731, - Flat731, - FR731, - BigUnion731, - ExtractAlpha731, - ExcludeZulu731, - OptionalAll731, - RequiredAll731, - ReadonlyAll731, - NullableAll731, - TypeNames731, - Action731, - AllPerms731, -}; +export type { Entity_07_31, Registry_07_31, CK_0731, EP_0731, EV_0731, DeepMerge_0731 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts index 8785661d..c13825d2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-32.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-32 (seed 732) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-32 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0732 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0732 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord732 { - a732: { x: number; y: string; z: boolean }; - b732: { p: string[]; q: Record }; - c732: { nested: { deep: { deeper: { deepest: string } } } }; - d732: number; - e732: string; - f732: boolean; - g732: null; - h732: undefined; - i732: bigint; - j732: symbol; +interface Entity_07_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_32 | null; children: Entity_07_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0732: number; y0732: string; z0732: boolean }; } -type PartialBig732 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten732 = T extends Array ? Flatten732 : T; -type Nested732 = number[][][][][][][][][][]; -type Flat732 = Flatten732; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly732 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly732 : T[K]; -}; -type DeepRequired732 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired732 : T[K]; +type Path_0732 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0732}` }[keyof T & string] : never; +type EP_0732 = Path_0732; + +type Val_0732 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0732 } + : T[K] extends object ? { t: 'o'; props: Val_0732 } + : { t: 'u' }; }; -type FR732 = DeepReadonly732>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion732 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha732 = Extract; -type ExcludeZulu732 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA732 { width: number; height: number; depth: number } -interface ShapeB732 { color: string; opacity: number; blend: string } -interface ShapeC732 { x: number; y: number; z: number; w: number } -interface ShapeD732 { label: string; title: string; summary: string } - -type Combined732 = ShapeA732 & ShapeB732 & ShapeC732 & ShapeD732; -type OptionalAll732 = { [K in keyof Combined732]?: Combined732[K] }; -type RequiredAll732 = { [K in keyof Combined732]-?: Combined732[K] }; -type ReadonlyAll732 = { readonly [K in keyof Combined732]: Combined732[K] }; -type NullableAll732 = { [K in keyof Combined732]: Combined732[K] | null }; +type EV_0732 = Val_0732; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString732 = T extends string ? true : false; -type IsNumber732 = T extends number ? true : false; -type TypeName732 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames732 = { - [K in keyof BigRecord732]: TypeName732; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb732 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource732 = "user" | "post" | "comment" | "tag" | "category"; -type Action732 = `${Verb732}_${Resource732}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise732 = T extends Promise ? UnwrapPromise732 : T; -type UnwrapArray732 = T extends (infer U)[] ? UnwrapArray732 : T; -type Head732 = T extends [infer H, ...infer _] ? H : never; -type Tail732 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation732 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation732>] - : never; +interface Registry_07_32 { + entities: Map; + validators: EV_0732; + paths: Set; + merged: DeepMerge_0732; +} -type SmallUnion732 = "a" | "b" | "c" | "d"; -type AllPerms732 = Permutation732; +type CK_0732 = `p07.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig732, - Flat732, - FR732, - BigUnion732, - ExtractAlpha732, - ExcludeZulu732, - OptionalAll732, - RequiredAll732, - ReadonlyAll732, - NullableAll732, - TypeNames732, - Action732, - AllPerms732, -}; +export type { Entity_07_32, Registry_07_32, CK_0732, EP_0732, EV_0732, DeepMerge_0732 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts index 74b94864..754c3267 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-33.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-33 (seed 733) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-33 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0733 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0733 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord733 { - a733: { x: number; y: string; z: boolean }; - b733: { p: string[]; q: Record }; - c733: { nested: { deep: { deeper: { deepest: string } } } }; - d733: number; - e733: string; - f733: boolean; - g733: null; - h733: undefined; - i733: bigint; - j733: symbol; +interface Entity_07_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_33 | null; children: Entity_07_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0733: number; y0733: string; z0733: boolean }; } -type PartialBig733 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten733 = T extends Array ? Flatten733 : T; -type Nested733 = number[][][][][][][][][][]; -type Flat733 = Flatten733; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly733 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly733 : T[K]; -}; -type DeepRequired733 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired733 : T[K]; +type Path_0733 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0733}` }[keyof T & string] : never; +type EP_0733 = Path_0733; + +type Val_0733 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0733 } + : T[K] extends object ? { t: 'o'; props: Val_0733 } + : { t: 'u' }; }; -type FR733 = DeepReadonly733>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion733 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha733 = Extract; -type ExcludeZulu733 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA733 { width: number; height: number; depth: number } -interface ShapeB733 { color: string; opacity: number; blend: string } -interface ShapeC733 { x: number; y: number; z: number; w: number } -interface ShapeD733 { label: string; title: string; summary: string } - -type Combined733 = ShapeA733 & ShapeB733 & ShapeC733 & ShapeD733; -type OptionalAll733 = { [K in keyof Combined733]?: Combined733[K] }; -type RequiredAll733 = { [K in keyof Combined733]-?: Combined733[K] }; -type ReadonlyAll733 = { readonly [K in keyof Combined733]: Combined733[K] }; -type NullableAll733 = { [K in keyof Combined733]: Combined733[K] | null }; +type EV_0733 = Val_0733; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString733 = T extends string ? true : false; -type IsNumber733 = T extends number ? true : false; -type TypeName733 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames733 = { - [K in keyof BigRecord733]: TypeName733; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb733 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource733 = "user" | "post" | "comment" | "tag" | "category"; -type Action733 = `${Verb733}_${Resource733}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise733 = T extends Promise ? UnwrapPromise733 : T; -type UnwrapArray733 = T extends (infer U)[] ? UnwrapArray733 : T; -type Head733 = T extends [infer H, ...infer _] ? H : never; -type Tail733 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation733 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation733>] - : never; +interface Registry_07_33 { + entities: Map; + validators: EV_0733; + paths: Set; + merged: DeepMerge_0733; +} -type SmallUnion733 = "a" | "b" | "c" | "d"; -type AllPerms733 = Permutation733; +type CK_0733 = `p07.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig733, - Flat733, - FR733, - BigUnion733, - ExtractAlpha733, - ExcludeZulu733, - OptionalAll733, - RequiredAll733, - ReadonlyAll733, - NullableAll733, - TypeNames733, - Action733, - AllPerms733, -}; +export type { Entity_07_33, Registry_07_33, CK_0733, EP_0733, EV_0733, DeepMerge_0733 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts index 5b0281b3..21cf65ea 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-34.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-34 (seed 734) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-34 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0734 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0734 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord734 { - a734: { x: number; y: string; z: boolean }; - b734: { p: string[]; q: Record }; - c734: { nested: { deep: { deeper: { deepest: string } } } }; - d734: number; - e734: string; - f734: boolean; - g734: null; - h734: undefined; - i734: bigint; - j734: symbol; +interface Entity_07_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_34 | null; children: Entity_07_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0734: number; y0734: string; z0734: boolean }; } -type PartialBig734 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten734 = T extends Array ? Flatten734 : T; -type Nested734 = number[][][][][][][][][][]; -type Flat734 = Flatten734; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly734 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly734 : T[K]; -}; -type DeepRequired734 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired734 : T[K]; +type Path_0734 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0734}` }[keyof T & string] : never; +type EP_0734 = Path_0734; + +type Val_0734 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0734 } + : T[K] extends object ? { t: 'o'; props: Val_0734 } + : { t: 'u' }; }; -type FR734 = DeepReadonly734>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion734 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha734 = Extract; -type ExcludeZulu734 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA734 { width: number; height: number; depth: number } -interface ShapeB734 { color: string; opacity: number; blend: string } -interface ShapeC734 { x: number; y: number; z: number; w: number } -interface ShapeD734 { label: string; title: string; summary: string } - -type Combined734 = ShapeA734 & ShapeB734 & ShapeC734 & ShapeD734; -type OptionalAll734 = { [K in keyof Combined734]?: Combined734[K] }; -type RequiredAll734 = { [K in keyof Combined734]-?: Combined734[K] }; -type ReadonlyAll734 = { readonly [K in keyof Combined734]: Combined734[K] }; -type NullableAll734 = { [K in keyof Combined734]: Combined734[K] | null }; +type EV_0734 = Val_0734; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString734 = T extends string ? true : false; -type IsNumber734 = T extends number ? true : false; -type TypeName734 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames734 = { - [K in keyof BigRecord734]: TypeName734; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb734 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource734 = "user" | "post" | "comment" | "tag" | "category"; -type Action734 = `${Verb734}_${Resource734}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise734 = T extends Promise ? UnwrapPromise734 : T; -type UnwrapArray734 = T extends (infer U)[] ? UnwrapArray734 : T; -type Head734 = T extends [infer H, ...infer _] ? H : never; -type Tail734 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation734 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation734>] - : never; +interface Registry_07_34 { + entities: Map; + validators: EV_0734; + paths: Set; + merged: DeepMerge_0734; +} -type SmallUnion734 = "a" | "b" | "c" | "d"; -type AllPerms734 = Permutation734; +type CK_0734 = `p07.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig734, - Flat734, - FR734, - BigUnion734, - ExtractAlpha734, - ExcludeZulu734, - OptionalAll734, - RequiredAll734, - ReadonlyAll734, - NullableAll734, - TypeNames734, - Action734, - AllPerms734, -}; +export type { Entity_07_34, Registry_07_34, CK_0734, EP_0734, EV_0734, DeepMerge_0734 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts index b2144a3c..9ba7dc16 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-35.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-35 (seed 735) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-35 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0735 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0735 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord735 { - a735: { x: number; y: string; z: boolean }; - b735: { p: string[]; q: Record }; - c735: { nested: { deep: { deeper: { deepest: string } } } }; - d735: number; - e735: string; - f735: boolean; - g735: null; - h735: undefined; - i735: bigint; - j735: symbol; +interface Entity_07_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_35 | null; children: Entity_07_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0735: number; y0735: string; z0735: boolean }; } -type PartialBig735 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten735 = T extends Array ? Flatten735 : T; -type Nested735 = number[][][][][][][][][][]; -type Flat735 = Flatten735; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly735 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly735 : T[K]; -}; -type DeepRequired735 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired735 : T[K]; +type Path_0735 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0735}` }[keyof T & string] : never; +type EP_0735 = Path_0735; + +type Val_0735 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0735 } + : T[K] extends object ? { t: 'o'; props: Val_0735 } + : { t: 'u' }; }; -type FR735 = DeepReadonly735>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion735 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha735 = Extract; -type ExcludeZulu735 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA735 { width: number; height: number; depth: number } -interface ShapeB735 { color: string; opacity: number; blend: string } -interface ShapeC735 { x: number; y: number; z: number; w: number } -interface ShapeD735 { label: string; title: string; summary: string } - -type Combined735 = ShapeA735 & ShapeB735 & ShapeC735 & ShapeD735; -type OptionalAll735 = { [K in keyof Combined735]?: Combined735[K] }; -type RequiredAll735 = { [K in keyof Combined735]-?: Combined735[K] }; -type ReadonlyAll735 = { readonly [K in keyof Combined735]: Combined735[K] }; -type NullableAll735 = { [K in keyof Combined735]: Combined735[K] | null }; +type EV_0735 = Val_0735; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString735 = T extends string ? true : false; -type IsNumber735 = T extends number ? true : false; -type TypeName735 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames735 = { - [K in keyof BigRecord735]: TypeName735; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb735 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource735 = "user" | "post" | "comment" | "tag" | "category"; -type Action735 = `${Verb735}_${Resource735}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise735 = T extends Promise ? UnwrapPromise735 : T; -type UnwrapArray735 = T extends (infer U)[] ? UnwrapArray735 : T; -type Head735 = T extends [infer H, ...infer _] ? H : never; -type Tail735 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation735 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation735>] - : never; +interface Registry_07_35 { + entities: Map; + validators: EV_0735; + paths: Set; + merged: DeepMerge_0735; +} -type SmallUnion735 = "a" | "b" | "c" | "d"; -type AllPerms735 = Permutation735; +type CK_0735 = `p07.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig735, - Flat735, - FR735, - BigUnion735, - ExtractAlpha735, - ExcludeZulu735, - OptionalAll735, - RequiredAll735, - ReadonlyAll735, - NullableAll735, - TypeNames735, - Action735, - AllPerms735, -}; +export type { Entity_07_35, Registry_07_35, CK_0735, EP_0735, EV_0735, DeepMerge_0735 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts index 75b484ca..81989dd2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-36.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-36 (seed 736) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-36 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0736 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0736 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord736 { - a736: { x: number; y: string; z: boolean }; - b736: { p: string[]; q: Record }; - c736: { nested: { deep: { deeper: { deepest: string } } } }; - d736: number; - e736: string; - f736: boolean; - g736: null; - h736: undefined; - i736: bigint; - j736: symbol; +interface Entity_07_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_36 | null; children: Entity_07_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0736: number; y0736: string; z0736: boolean }; } -type PartialBig736 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten736 = T extends Array ? Flatten736 : T; -type Nested736 = number[][][][][][][][][][]; -type Flat736 = Flatten736; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly736 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly736 : T[K]; -}; -type DeepRequired736 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired736 : T[K]; +type Path_0736 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0736}` }[keyof T & string] : never; +type EP_0736 = Path_0736; + +type Val_0736 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0736 } + : T[K] extends object ? { t: 'o'; props: Val_0736 } + : { t: 'u' }; }; -type FR736 = DeepReadonly736>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion736 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha736 = Extract; -type ExcludeZulu736 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA736 { width: number; height: number; depth: number } -interface ShapeB736 { color: string; opacity: number; blend: string } -interface ShapeC736 { x: number; y: number; z: number; w: number } -interface ShapeD736 { label: string; title: string; summary: string } - -type Combined736 = ShapeA736 & ShapeB736 & ShapeC736 & ShapeD736; -type OptionalAll736 = { [K in keyof Combined736]?: Combined736[K] }; -type RequiredAll736 = { [K in keyof Combined736]-?: Combined736[K] }; -type ReadonlyAll736 = { readonly [K in keyof Combined736]: Combined736[K] }; -type NullableAll736 = { [K in keyof Combined736]: Combined736[K] | null }; +type EV_0736 = Val_0736; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString736 = T extends string ? true : false; -type IsNumber736 = T extends number ? true : false; -type TypeName736 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames736 = { - [K in keyof BigRecord736]: TypeName736; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb736 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource736 = "user" | "post" | "comment" | "tag" | "category"; -type Action736 = `${Verb736}_${Resource736}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise736 = T extends Promise ? UnwrapPromise736 : T; -type UnwrapArray736 = T extends (infer U)[] ? UnwrapArray736 : T; -type Head736 = T extends [infer H, ...infer _] ? H : never; -type Tail736 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation736 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation736>] - : never; +interface Registry_07_36 { + entities: Map; + validators: EV_0736; + paths: Set; + merged: DeepMerge_0736; +} -type SmallUnion736 = "a" | "b" | "c" | "d"; -type AllPerms736 = Permutation736; +type CK_0736 = `p07.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig736, - Flat736, - FR736, - BigUnion736, - ExtractAlpha736, - ExcludeZulu736, - OptionalAll736, - RequiredAll736, - ReadonlyAll736, - NullableAll736, - TypeNames736, - Action736, - AllPerms736, -}; +export type { Entity_07_36, Registry_07_36, CK_0736, EP_0736, EV_0736, DeepMerge_0736 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts index bd1cb14b..5354af7c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-37.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-37 (seed 737) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-37 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0737 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0737 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord737 { - a737: { x: number; y: string; z: boolean }; - b737: { p: string[]; q: Record }; - c737: { nested: { deep: { deeper: { deepest: string } } } }; - d737: number; - e737: string; - f737: boolean; - g737: null; - h737: undefined; - i737: bigint; - j737: symbol; +interface Entity_07_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_37 | null; children: Entity_07_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0737: number; y0737: string; z0737: boolean }; } -type PartialBig737 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten737 = T extends Array ? Flatten737 : T; -type Nested737 = number[][][][][][][][][][]; -type Flat737 = Flatten737; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly737 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly737 : T[K]; -}; -type DeepRequired737 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired737 : T[K]; +type Path_0737 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0737}` }[keyof T & string] : never; +type EP_0737 = Path_0737; + +type Val_0737 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0737 } + : T[K] extends object ? { t: 'o'; props: Val_0737 } + : { t: 'u' }; }; -type FR737 = DeepReadonly737>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion737 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha737 = Extract; -type ExcludeZulu737 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA737 { width: number; height: number; depth: number } -interface ShapeB737 { color: string; opacity: number; blend: string } -interface ShapeC737 { x: number; y: number; z: number; w: number } -interface ShapeD737 { label: string; title: string; summary: string } - -type Combined737 = ShapeA737 & ShapeB737 & ShapeC737 & ShapeD737; -type OptionalAll737 = { [K in keyof Combined737]?: Combined737[K] }; -type RequiredAll737 = { [K in keyof Combined737]-?: Combined737[K] }; -type ReadonlyAll737 = { readonly [K in keyof Combined737]: Combined737[K] }; -type NullableAll737 = { [K in keyof Combined737]: Combined737[K] | null }; +type EV_0737 = Val_0737; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString737 = T extends string ? true : false; -type IsNumber737 = T extends number ? true : false; -type TypeName737 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames737 = { - [K in keyof BigRecord737]: TypeName737; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb737 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource737 = "user" | "post" | "comment" | "tag" | "category"; -type Action737 = `${Verb737}_${Resource737}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise737 = T extends Promise ? UnwrapPromise737 : T; -type UnwrapArray737 = T extends (infer U)[] ? UnwrapArray737 : T; -type Head737 = T extends [infer H, ...infer _] ? H : never; -type Tail737 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation737 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation737>] - : never; +interface Registry_07_37 { + entities: Map; + validators: EV_0737; + paths: Set; + merged: DeepMerge_0737; +} -type SmallUnion737 = "a" | "b" | "c" | "d"; -type AllPerms737 = Permutation737; +type CK_0737 = `p07.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig737, - Flat737, - FR737, - BigUnion737, - ExtractAlpha737, - ExcludeZulu737, - OptionalAll737, - RequiredAll737, - ReadonlyAll737, - NullableAll737, - TypeNames737, - Action737, - AllPerms737, -}; +export type { Entity_07_37, Registry_07_37, CK_0737, EP_0737, EV_0737, DeepMerge_0737 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts index a270155c..99d39c2b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-38.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-38 (seed 738) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-38 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0738 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0738 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord738 { - a738: { x: number; y: string; z: boolean }; - b738: { p: string[]; q: Record }; - c738: { nested: { deep: { deeper: { deepest: string } } } }; - d738: number; - e738: string; - f738: boolean; - g738: null; - h738: undefined; - i738: bigint; - j738: symbol; +interface Entity_07_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_38 | null; children: Entity_07_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0738: number; y0738: string; z0738: boolean }; } -type PartialBig738 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten738 = T extends Array ? Flatten738 : T; -type Nested738 = number[][][][][][][][][][]; -type Flat738 = Flatten738; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly738 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly738 : T[K]; -}; -type DeepRequired738 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired738 : T[K]; +type Path_0738 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0738}` }[keyof T & string] : never; +type EP_0738 = Path_0738; + +type Val_0738 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0738 } + : T[K] extends object ? { t: 'o'; props: Val_0738 } + : { t: 'u' }; }; -type FR738 = DeepReadonly738>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion738 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha738 = Extract; -type ExcludeZulu738 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA738 { width: number; height: number; depth: number } -interface ShapeB738 { color: string; opacity: number; blend: string } -interface ShapeC738 { x: number; y: number; z: number; w: number } -interface ShapeD738 { label: string; title: string; summary: string } - -type Combined738 = ShapeA738 & ShapeB738 & ShapeC738 & ShapeD738; -type OptionalAll738 = { [K in keyof Combined738]?: Combined738[K] }; -type RequiredAll738 = { [K in keyof Combined738]-?: Combined738[K] }; -type ReadonlyAll738 = { readonly [K in keyof Combined738]: Combined738[K] }; -type NullableAll738 = { [K in keyof Combined738]: Combined738[K] | null }; +type EV_0738 = Val_0738; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString738 = T extends string ? true : false; -type IsNumber738 = T extends number ? true : false; -type TypeName738 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames738 = { - [K in keyof BigRecord738]: TypeName738; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb738 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource738 = "user" | "post" | "comment" | "tag" | "category"; -type Action738 = `${Verb738}_${Resource738}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise738 = T extends Promise ? UnwrapPromise738 : T; -type UnwrapArray738 = T extends (infer U)[] ? UnwrapArray738 : T; -type Head738 = T extends [infer H, ...infer _] ? H : never; -type Tail738 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation738 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation738>] - : never; +interface Registry_07_38 { + entities: Map; + validators: EV_0738; + paths: Set; + merged: DeepMerge_0738; +} -type SmallUnion738 = "a" | "b" | "c" | "d"; -type AllPerms738 = Permutation738; +type CK_0738 = `p07.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig738, - Flat738, - FR738, - BigUnion738, - ExtractAlpha738, - ExcludeZulu738, - OptionalAll738, - RequiredAll738, - ReadonlyAll738, - NullableAll738, - TypeNames738, - Action738, - AllPerms738, -}; +export type { Entity_07_38, Registry_07_38, CK_0738, EP_0738, EV_0738, DeepMerge_0738 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts index 1b63ab4f..d479f101 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-39.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-39 (seed 739) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-39 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0739 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0739 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord739 { - a739: { x: number; y: string; z: boolean }; - b739: { p: string[]; q: Record }; - c739: { nested: { deep: { deeper: { deepest: string } } } }; - d739: number; - e739: string; - f739: boolean; - g739: null; - h739: undefined; - i739: bigint; - j739: symbol; +interface Entity_07_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_39 | null; children: Entity_07_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0739: number; y0739: string; z0739: boolean }; } -type PartialBig739 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten739 = T extends Array ? Flatten739 : T; -type Nested739 = number[][][][][][][][][][]; -type Flat739 = Flatten739; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly739 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly739 : T[K]; -}; -type DeepRequired739 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired739 : T[K]; +type Path_0739 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0739}` }[keyof T & string] : never; +type EP_0739 = Path_0739; + +type Val_0739 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0739 } + : T[K] extends object ? { t: 'o'; props: Val_0739 } + : { t: 'u' }; }; -type FR739 = DeepReadonly739>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion739 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha739 = Extract; -type ExcludeZulu739 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA739 { width: number; height: number; depth: number } -interface ShapeB739 { color: string; opacity: number; blend: string } -interface ShapeC739 { x: number; y: number; z: number; w: number } -interface ShapeD739 { label: string; title: string; summary: string } - -type Combined739 = ShapeA739 & ShapeB739 & ShapeC739 & ShapeD739; -type OptionalAll739 = { [K in keyof Combined739]?: Combined739[K] }; -type RequiredAll739 = { [K in keyof Combined739]-?: Combined739[K] }; -type ReadonlyAll739 = { readonly [K in keyof Combined739]: Combined739[K] }; -type NullableAll739 = { [K in keyof Combined739]: Combined739[K] | null }; +type EV_0739 = Val_0739; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString739 = T extends string ? true : false; -type IsNumber739 = T extends number ? true : false; -type TypeName739 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames739 = { - [K in keyof BigRecord739]: TypeName739; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb739 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource739 = "user" | "post" | "comment" | "tag" | "category"; -type Action739 = `${Verb739}_${Resource739}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise739 = T extends Promise ? UnwrapPromise739 : T; -type UnwrapArray739 = T extends (infer U)[] ? UnwrapArray739 : T; -type Head739 = T extends [infer H, ...infer _] ? H : never; -type Tail739 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation739 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation739>] - : never; +interface Registry_07_39 { + entities: Map; + validators: EV_0739; + paths: Set; + merged: DeepMerge_0739; +} -type SmallUnion739 = "a" | "b" | "c" | "d"; -type AllPerms739 = Permutation739; +type CK_0739 = `p07.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig739, - Flat739, - FR739, - BigUnion739, - ExtractAlpha739, - ExcludeZulu739, - OptionalAll739, - RequiredAll739, - ReadonlyAll739, - NullableAll739, - TypeNames739, - Action739, - AllPerms739, -}; +export type { Entity_07_39, Registry_07_39, CK_0739, EP_0739, EV_0739, DeepMerge_0739 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts index 8bb646c7..03f9aadb 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-40.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-40 (seed 740) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-40 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0740 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0740 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord740 { - a740: { x: number; y: string; z: boolean }; - b740: { p: string[]; q: Record }; - c740: { nested: { deep: { deeper: { deepest: string } } } }; - d740: number; - e740: string; - f740: boolean; - g740: null; - h740: undefined; - i740: bigint; - j740: symbol; +interface Entity_07_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_40 | null; children: Entity_07_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0740: number; y0740: string; z0740: boolean }; } -type PartialBig740 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten740 = T extends Array ? Flatten740 : T; -type Nested740 = number[][][][][][][][][][]; -type Flat740 = Flatten740; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly740 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly740 : T[K]; -}; -type DeepRequired740 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired740 : T[K]; +type Path_0740 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0740}` }[keyof T & string] : never; +type EP_0740 = Path_0740; + +type Val_0740 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0740 } + : T[K] extends object ? { t: 'o'; props: Val_0740 } + : { t: 'u' }; }; -type FR740 = DeepReadonly740>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion740 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha740 = Extract; -type ExcludeZulu740 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA740 { width: number; height: number; depth: number } -interface ShapeB740 { color: string; opacity: number; blend: string } -interface ShapeC740 { x: number; y: number; z: number; w: number } -interface ShapeD740 { label: string; title: string; summary: string } - -type Combined740 = ShapeA740 & ShapeB740 & ShapeC740 & ShapeD740; -type OptionalAll740 = { [K in keyof Combined740]?: Combined740[K] }; -type RequiredAll740 = { [K in keyof Combined740]-?: Combined740[K] }; -type ReadonlyAll740 = { readonly [K in keyof Combined740]: Combined740[K] }; -type NullableAll740 = { [K in keyof Combined740]: Combined740[K] | null }; +type EV_0740 = Val_0740; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString740 = T extends string ? true : false; -type IsNumber740 = T extends number ? true : false; -type TypeName740 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames740 = { - [K in keyof BigRecord740]: TypeName740; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb740 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource740 = "user" | "post" | "comment" | "tag" | "category"; -type Action740 = `${Verb740}_${Resource740}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise740 = T extends Promise ? UnwrapPromise740 : T; -type UnwrapArray740 = T extends (infer U)[] ? UnwrapArray740 : T; -type Head740 = T extends [infer H, ...infer _] ? H : never; -type Tail740 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation740 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation740>] - : never; +interface Registry_07_40 { + entities: Map; + validators: EV_0740; + paths: Set; + merged: DeepMerge_0740; +} -type SmallUnion740 = "a" | "b" | "c" | "d"; -type AllPerms740 = Permutation740; +type CK_0740 = `p07.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig740, - Flat740, - FR740, - BigUnion740, - ExtractAlpha740, - ExcludeZulu740, - OptionalAll740, - RequiredAll740, - ReadonlyAll740, - NullableAll740, - TypeNames740, - Action740, - AllPerms740, -}; +export type { Entity_07_40, Registry_07_40, CK_0740, EP_0740, EV_0740, DeepMerge_0740 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts index 03cb9bc1..41c9c2f9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-41.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-41 (seed 741) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-41 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0741 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0741 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord741 { - a741: { x: number; y: string; z: boolean }; - b741: { p: string[]; q: Record }; - c741: { nested: { deep: { deeper: { deepest: string } } } }; - d741: number; - e741: string; - f741: boolean; - g741: null; - h741: undefined; - i741: bigint; - j741: symbol; +interface Entity_07_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_41 | null; children: Entity_07_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0741: number; y0741: string; z0741: boolean }; } -type PartialBig741 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten741 = T extends Array ? Flatten741 : T; -type Nested741 = number[][][][][][][][][][]; -type Flat741 = Flatten741; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly741 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly741 : T[K]; -}; -type DeepRequired741 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired741 : T[K]; +type Path_0741 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0741}` }[keyof T & string] : never; +type EP_0741 = Path_0741; + +type Val_0741 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0741 } + : T[K] extends object ? { t: 'o'; props: Val_0741 } + : { t: 'u' }; }; -type FR741 = DeepReadonly741>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion741 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha741 = Extract; -type ExcludeZulu741 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA741 { width: number; height: number; depth: number } -interface ShapeB741 { color: string; opacity: number; blend: string } -interface ShapeC741 { x: number; y: number; z: number; w: number } -interface ShapeD741 { label: string; title: string; summary: string } - -type Combined741 = ShapeA741 & ShapeB741 & ShapeC741 & ShapeD741; -type OptionalAll741 = { [K in keyof Combined741]?: Combined741[K] }; -type RequiredAll741 = { [K in keyof Combined741]-?: Combined741[K] }; -type ReadonlyAll741 = { readonly [K in keyof Combined741]: Combined741[K] }; -type NullableAll741 = { [K in keyof Combined741]: Combined741[K] | null }; +type EV_0741 = Val_0741; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString741 = T extends string ? true : false; -type IsNumber741 = T extends number ? true : false; -type TypeName741 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames741 = { - [K in keyof BigRecord741]: TypeName741; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb741 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource741 = "user" | "post" | "comment" | "tag" | "category"; -type Action741 = `${Verb741}_${Resource741}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise741 = T extends Promise ? UnwrapPromise741 : T; -type UnwrapArray741 = T extends (infer U)[] ? UnwrapArray741 : T; -type Head741 = T extends [infer H, ...infer _] ? H : never; -type Tail741 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation741 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation741>] - : never; +interface Registry_07_41 { + entities: Map; + validators: EV_0741; + paths: Set; + merged: DeepMerge_0741; +} -type SmallUnion741 = "a" | "b" | "c" | "d"; -type AllPerms741 = Permutation741; +type CK_0741 = `p07.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig741, - Flat741, - FR741, - BigUnion741, - ExtractAlpha741, - ExcludeZulu741, - OptionalAll741, - RequiredAll741, - ReadonlyAll741, - NullableAll741, - TypeNames741, - Action741, - AllPerms741, -}; +export type { Entity_07_41, Registry_07_41, CK_0741, EP_0741, EV_0741, DeepMerge_0741 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts index 161d3f85..ede15a4d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-42.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-42 (seed 742) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-42 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0742 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0742 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord742 { - a742: { x: number; y: string; z: boolean }; - b742: { p: string[]; q: Record }; - c742: { nested: { deep: { deeper: { deepest: string } } } }; - d742: number; - e742: string; - f742: boolean; - g742: null; - h742: undefined; - i742: bigint; - j742: symbol; +interface Entity_07_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_42 | null; children: Entity_07_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0742: number; y0742: string; z0742: boolean }; } -type PartialBig742 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten742 = T extends Array ? Flatten742 : T; -type Nested742 = number[][][][][][][][][][]; -type Flat742 = Flatten742; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly742 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly742 : T[K]; -}; -type DeepRequired742 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired742 : T[K]; +type Path_0742 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0742}` }[keyof T & string] : never; +type EP_0742 = Path_0742; + +type Val_0742 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0742 } + : T[K] extends object ? { t: 'o'; props: Val_0742 } + : { t: 'u' }; }; -type FR742 = DeepReadonly742>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion742 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha742 = Extract; -type ExcludeZulu742 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA742 { width: number; height: number; depth: number } -interface ShapeB742 { color: string; opacity: number; blend: string } -interface ShapeC742 { x: number; y: number; z: number; w: number } -interface ShapeD742 { label: string; title: string; summary: string } - -type Combined742 = ShapeA742 & ShapeB742 & ShapeC742 & ShapeD742; -type OptionalAll742 = { [K in keyof Combined742]?: Combined742[K] }; -type RequiredAll742 = { [K in keyof Combined742]-?: Combined742[K] }; -type ReadonlyAll742 = { readonly [K in keyof Combined742]: Combined742[K] }; -type NullableAll742 = { [K in keyof Combined742]: Combined742[K] | null }; +type EV_0742 = Val_0742; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString742 = T extends string ? true : false; -type IsNumber742 = T extends number ? true : false; -type TypeName742 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames742 = { - [K in keyof BigRecord742]: TypeName742; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb742 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource742 = "user" | "post" | "comment" | "tag" | "category"; -type Action742 = `${Verb742}_${Resource742}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise742 = T extends Promise ? UnwrapPromise742 : T; -type UnwrapArray742 = T extends (infer U)[] ? UnwrapArray742 : T; -type Head742 = T extends [infer H, ...infer _] ? H : never; -type Tail742 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation742 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation742>] - : never; +interface Registry_07_42 { + entities: Map; + validators: EV_0742; + paths: Set; + merged: DeepMerge_0742; +} -type SmallUnion742 = "a" | "b" | "c" | "d"; -type AllPerms742 = Permutation742; +type CK_0742 = `p07.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig742, - Flat742, - FR742, - BigUnion742, - ExtractAlpha742, - ExcludeZulu742, - OptionalAll742, - RequiredAll742, - ReadonlyAll742, - NullableAll742, - TypeNames742, - Action742, - AllPerms742, -}; +export type { Entity_07_42, Registry_07_42, CK_0742, EP_0742, EV_0742, DeepMerge_0742 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts index 62cf09d8..1629bf72 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-43.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-43 (seed 743) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-43 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0743 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0743 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord743 { - a743: { x: number; y: string; z: boolean }; - b743: { p: string[]; q: Record }; - c743: { nested: { deep: { deeper: { deepest: string } } } }; - d743: number; - e743: string; - f743: boolean; - g743: null; - h743: undefined; - i743: bigint; - j743: symbol; +interface Entity_07_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_43 | null; children: Entity_07_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0743: number; y0743: string; z0743: boolean }; } -type PartialBig743 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten743 = T extends Array ? Flatten743 : T; -type Nested743 = number[][][][][][][][][][]; -type Flat743 = Flatten743; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly743 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly743 : T[K]; -}; -type DeepRequired743 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired743 : T[K]; +type Path_0743 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0743}` }[keyof T & string] : never; +type EP_0743 = Path_0743; + +type Val_0743 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0743 } + : T[K] extends object ? { t: 'o'; props: Val_0743 } + : { t: 'u' }; }; -type FR743 = DeepReadonly743>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion743 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha743 = Extract; -type ExcludeZulu743 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA743 { width: number; height: number; depth: number } -interface ShapeB743 { color: string; opacity: number; blend: string } -interface ShapeC743 { x: number; y: number; z: number; w: number } -interface ShapeD743 { label: string; title: string; summary: string } - -type Combined743 = ShapeA743 & ShapeB743 & ShapeC743 & ShapeD743; -type OptionalAll743 = { [K in keyof Combined743]?: Combined743[K] }; -type RequiredAll743 = { [K in keyof Combined743]-?: Combined743[K] }; -type ReadonlyAll743 = { readonly [K in keyof Combined743]: Combined743[K] }; -type NullableAll743 = { [K in keyof Combined743]: Combined743[K] | null }; +type EV_0743 = Val_0743; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString743 = T extends string ? true : false; -type IsNumber743 = T extends number ? true : false; -type TypeName743 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames743 = { - [K in keyof BigRecord743]: TypeName743; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb743 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource743 = "user" | "post" | "comment" | "tag" | "category"; -type Action743 = `${Verb743}_${Resource743}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise743 = T extends Promise ? UnwrapPromise743 : T; -type UnwrapArray743 = T extends (infer U)[] ? UnwrapArray743 : T; -type Head743 = T extends [infer H, ...infer _] ? H : never; -type Tail743 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation743 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation743>] - : never; +interface Registry_07_43 { + entities: Map; + validators: EV_0743; + paths: Set; + merged: DeepMerge_0743; +} -type SmallUnion743 = "a" | "b" | "c" | "d"; -type AllPerms743 = Permutation743; +type CK_0743 = `p07.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig743, - Flat743, - FR743, - BigUnion743, - ExtractAlpha743, - ExcludeZulu743, - OptionalAll743, - RequiredAll743, - ReadonlyAll743, - NullableAll743, - TypeNames743, - Action743, - AllPerms743, -}; +export type { Entity_07_43, Registry_07_43, CK_0743, EP_0743, EV_0743, DeepMerge_0743 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts index 33d3d12c..4379ac5e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-44.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-44 (seed 744) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-44 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0744 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0744 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord744 { - a744: { x: number; y: string; z: boolean }; - b744: { p: string[]; q: Record }; - c744: { nested: { deep: { deeper: { deepest: string } } } }; - d744: number; - e744: string; - f744: boolean; - g744: null; - h744: undefined; - i744: bigint; - j744: symbol; +interface Entity_07_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_44 | null; children: Entity_07_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0744: number; y0744: string; z0744: boolean }; } -type PartialBig744 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten744 = T extends Array ? Flatten744 : T; -type Nested744 = number[][][][][][][][][][]; -type Flat744 = Flatten744; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly744 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly744 : T[K]; -}; -type DeepRequired744 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired744 : T[K]; +type Path_0744 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0744}` }[keyof T & string] : never; +type EP_0744 = Path_0744; + +type Val_0744 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0744 } + : T[K] extends object ? { t: 'o'; props: Val_0744 } + : { t: 'u' }; }; -type FR744 = DeepReadonly744>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion744 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha744 = Extract; -type ExcludeZulu744 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA744 { width: number; height: number; depth: number } -interface ShapeB744 { color: string; opacity: number; blend: string } -interface ShapeC744 { x: number; y: number; z: number; w: number } -interface ShapeD744 { label: string; title: string; summary: string } - -type Combined744 = ShapeA744 & ShapeB744 & ShapeC744 & ShapeD744; -type OptionalAll744 = { [K in keyof Combined744]?: Combined744[K] }; -type RequiredAll744 = { [K in keyof Combined744]-?: Combined744[K] }; -type ReadonlyAll744 = { readonly [K in keyof Combined744]: Combined744[K] }; -type NullableAll744 = { [K in keyof Combined744]: Combined744[K] | null }; +type EV_0744 = Val_0744; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString744 = T extends string ? true : false; -type IsNumber744 = T extends number ? true : false; -type TypeName744 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames744 = { - [K in keyof BigRecord744]: TypeName744; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb744 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource744 = "user" | "post" | "comment" | "tag" | "category"; -type Action744 = `${Verb744}_${Resource744}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise744 = T extends Promise ? UnwrapPromise744 : T; -type UnwrapArray744 = T extends (infer U)[] ? UnwrapArray744 : T; -type Head744 = T extends [infer H, ...infer _] ? H : never; -type Tail744 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation744 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation744>] - : never; +interface Registry_07_44 { + entities: Map; + validators: EV_0744; + paths: Set; + merged: DeepMerge_0744; +} -type SmallUnion744 = "a" | "b" | "c" | "d"; -type AllPerms744 = Permutation744; +type CK_0744 = `p07.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig744, - Flat744, - FR744, - BigUnion744, - ExtractAlpha744, - ExcludeZulu744, - OptionalAll744, - RequiredAll744, - ReadonlyAll744, - NullableAll744, - TypeNames744, - Action744, - AllPerms744, -}; +export type { Entity_07_44, Registry_07_44, CK_0744, EP_0744, EV_0744, DeepMerge_0744 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts index a5249e82..fe6be78d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-45.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-45 (seed 745) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-45 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0745 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0745 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord745 { - a745: { x: number; y: string; z: boolean }; - b745: { p: string[]; q: Record }; - c745: { nested: { deep: { deeper: { deepest: string } } } }; - d745: number; - e745: string; - f745: boolean; - g745: null; - h745: undefined; - i745: bigint; - j745: symbol; +interface Entity_07_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_45 | null; children: Entity_07_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0745: number; y0745: string; z0745: boolean }; } -type PartialBig745 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten745 = T extends Array ? Flatten745 : T; -type Nested745 = number[][][][][][][][][][]; -type Flat745 = Flatten745; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly745 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly745 : T[K]; -}; -type DeepRequired745 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired745 : T[K]; +type Path_0745 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0745}` }[keyof T & string] : never; +type EP_0745 = Path_0745; + +type Val_0745 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0745 } + : T[K] extends object ? { t: 'o'; props: Val_0745 } + : { t: 'u' }; }; -type FR745 = DeepReadonly745>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion745 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha745 = Extract; -type ExcludeZulu745 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA745 { width: number; height: number; depth: number } -interface ShapeB745 { color: string; opacity: number; blend: string } -interface ShapeC745 { x: number; y: number; z: number; w: number } -interface ShapeD745 { label: string; title: string; summary: string } - -type Combined745 = ShapeA745 & ShapeB745 & ShapeC745 & ShapeD745; -type OptionalAll745 = { [K in keyof Combined745]?: Combined745[K] }; -type RequiredAll745 = { [K in keyof Combined745]-?: Combined745[K] }; -type ReadonlyAll745 = { readonly [K in keyof Combined745]: Combined745[K] }; -type NullableAll745 = { [K in keyof Combined745]: Combined745[K] | null }; +type EV_0745 = Val_0745; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString745 = T extends string ? true : false; -type IsNumber745 = T extends number ? true : false; -type TypeName745 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames745 = { - [K in keyof BigRecord745]: TypeName745; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb745 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource745 = "user" | "post" | "comment" | "tag" | "category"; -type Action745 = `${Verb745}_${Resource745}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise745 = T extends Promise ? UnwrapPromise745 : T; -type UnwrapArray745 = T extends (infer U)[] ? UnwrapArray745 : T; -type Head745 = T extends [infer H, ...infer _] ? H : never; -type Tail745 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation745 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation745>] - : never; +interface Registry_07_45 { + entities: Map; + validators: EV_0745; + paths: Set; + merged: DeepMerge_0745; +} -type SmallUnion745 = "a" | "b" | "c" | "d"; -type AllPerms745 = Permutation745; +type CK_0745 = `p07.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig745, - Flat745, - FR745, - BigUnion745, - ExtractAlpha745, - ExcludeZulu745, - OptionalAll745, - RequiredAll745, - ReadonlyAll745, - NullableAll745, - TypeNames745, - Action745, - AllPerms745, -}; +export type { Entity_07_45, Registry_07_45, CK_0745, EP_0745, EV_0745, DeepMerge_0745 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts index 4e7cf89c..1abcca42 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-46.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-46 (seed 746) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-46 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0746 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0746 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord746 { - a746: { x: number; y: string; z: boolean }; - b746: { p: string[]; q: Record }; - c746: { nested: { deep: { deeper: { deepest: string } } } }; - d746: number; - e746: string; - f746: boolean; - g746: null; - h746: undefined; - i746: bigint; - j746: symbol; +interface Entity_07_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_46 | null; children: Entity_07_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0746: number; y0746: string; z0746: boolean }; } -type PartialBig746 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten746 = T extends Array ? Flatten746 : T; -type Nested746 = number[][][][][][][][][][]; -type Flat746 = Flatten746; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly746 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly746 : T[K]; -}; -type DeepRequired746 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired746 : T[K]; +type Path_0746 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0746}` }[keyof T & string] : never; +type EP_0746 = Path_0746; + +type Val_0746 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0746 } + : T[K] extends object ? { t: 'o'; props: Val_0746 } + : { t: 'u' }; }; -type FR746 = DeepReadonly746>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion746 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha746 = Extract; -type ExcludeZulu746 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA746 { width: number; height: number; depth: number } -interface ShapeB746 { color: string; opacity: number; blend: string } -interface ShapeC746 { x: number; y: number; z: number; w: number } -interface ShapeD746 { label: string; title: string; summary: string } - -type Combined746 = ShapeA746 & ShapeB746 & ShapeC746 & ShapeD746; -type OptionalAll746 = { [K in keyof Combined746]?: Combined746[K] }; -type RequiredAll746 = { [K in keyof Combined746]-?: Combined746[K] }; -type ReadonlyAll746 = { readonly [K in keyof Combined746]: Combined746[K] }; -type NullableAll746 = { [K in keyof Combined746]: Combined746[K] | null }; +type EV_0746 = Val_0746; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString746 = T extends string ? true : false; -type IsNumber746 = T extends number ? true : false; -type TypeName746 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames746 = { - [K in keyof BigRecord746]: TypeName746; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb746 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource746 = "user" | "post" | "comment" | "tag" | "category"; -type Action746 = `${Verb746}_${Resource746}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise746 = T extends Promise ? UnwrapPromise746 : T; -type UnwrapArray746 = T extends (infer U)[] ? UnwrapArray746 : T; -type Head746 = T extends [infer H, ...infer _] ? H : never; -type Tail746 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation746 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation746>] - : never; +interface Registry_07_46 { + entities: Map; + validators: EV_0746; + paths: Set; + merged: DeepMerge_0746; +} -type SmallUnion746 = "a" | "b" | "c" | "d"; -type AllPerms746 = Permutation746; +type CK_0746 = `p07.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig746, - Flat746, - FR746, - BigUnion746, - ExtractAlpha746, - ExcludeZulu746, - OptionalAll746, - RequiredAll746, - ReadonlyAll746, - NullableAll746, - TypeNames746, - Action746, - AllPerms746, -}; +export type { Entity_07_46, Registry_07_46, CK_0746, EP_0746, EV_0746, DeepMerge_0746 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts index 1e33743b..0025b3eb 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-47.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-47 (seed 747) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-47 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0747 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0747 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord747 { - a747: { x: number; y: string; z: boolean }; - b747: { p: string[]; q: Record }; - c747: { nested: { deep: { deeper: { deepest: string } } } }; - d747: number; - e747: string; - f747: boolean; - g747: null; - h747: undefined; - i747: bigint; - j747: symbol; +interface Entity_07_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_47 | null; children: Entity_07_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0747: number; y0747: string; z0747: boolean }; } -type PartialBig747 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten747 = T extends Array ? Flatten747 : T; -type Nested747 = number[][][][][][][][][][]; -type Flat747 = Flatten747; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly747 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly747 : T[K]; -}; -type DeepRequired747 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired747 : T[K]; +type Path_0747 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0747}` }[keyof T & string] : never; +type EP_0747 = Path_0747; + +type Val_0747 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0747 } + : T[K] extends object ? { t: 'o'; props: Val_0747 } + : { t: 'u' }; }; -type FR747 = DeepReadonly747>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion747 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha747 = Extract; -type ExcludeZulu747 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA747 { width: number; height: number; depth: number } -interface ShapeB747 { color: string; opacity: number; blend: string } -interface ShapeC747 { x: number; y: number; z: number; w: number } -interface ShapeD747 { label: string; title: string; summary: string } - -type Combined747 = ShapeA747 & ShapeB747 & ShapeC747 & ShapeD747; -type OptionalAll747 = { [K in keyof Combined747]?: Combined747[K] }; -type RequiredAll747 = { [K in keyof Combined747]-?: Combined747[K] }; -type ReadonlyAll747 = { readonly [K in keyof Combined747]: Combined747[K] }; -type NullableAll747 = { [K in keyof Combined747]: Combined747[K] | null }; +type EV_0747 = Val_0747; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString747 = T extends string ? true : false; -type IsNumber747 = T extends number ? true : false; -type TypeName747 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames747 = { - [K in keyof BigRecord747]: TypeName747; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb747 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource747 = "user" | "post" | "comment" | "tag" | "category"; -type Action747 = `${Verb747}_${Resource747}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise747 = T extends Promise ? UnwrapPromise747 : T; -type UnwrapArray747 = T extends (infer U)[] ? UnwrapArray747 : T; -type Head747 = T extends [infer H, ...infer _] ? H : never; -type Tail747 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation747 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation747>] - : never; +interface Registry_07_47 { + entities: Map; + validators: EV_0747; + paths: Set; + merged: DeepMerge_0747; +} -type SmallUnion747 = "a" | "b" | "c" | "d"; -type AllPerms747 = Permutation747; +type CK_0747 = `p07.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig747, - Flat747, - FR747, - BigUnion747, - ExtractAlpha747, - ExcludeZulu747, - OptionalAll747, - RequiredAll747, - ReadonlyAll747, - NullableAll747, - TypeNames747, - Action747, - AllPerms747, -}; +export type { Entity_07_47, Registry_07_47, CK_0747, EP_0747, EV_0747, DeepMerge_0747 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts index c63faf7b..18ad0140 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-48.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-48 (seed 748) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-48 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0748 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0748 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord748 { - a748: { x: number; y: string; z: boolean }; - b748: { p: string[]; q: Record }; - c748: { nested: { deep: { deeper: { deepest: string } } } }; - d748: number; - e748: string; - f748: boolean; - g748: null; - h748: undefined; - i748: bigint; - j748: symbol; +interface Entity_07_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_48 | null; children: Entity_07_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0748: number; y0748: string; z0748: boolean }; } -type PartialBig748 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten748 = T extends Array ? Flatten748 : T; -type Nested748 = number[][][][][][][][][][]; -type Flat748 = Flatten748; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly748 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly748 : T[K]; -}; -type DeepRequired748 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired748 : T[K]; +type Path_0748 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0748}` }[keyof T & string] : never; +type EP_0748 = Path_0748; + +type Val_0748 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0748 } + : T[K] extends object ? { t: 'o'; props: Val_0748 } + : { t: 'u' }; }; -type FR748 = DeepReadonly748>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion748 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha748 = Extract; -type ExcludeZulu748 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA748 { width: number; height: number; depth: number } -interface ShapeB748 { color: string; opacity: number; blend: string } -interface ShapeC748 { x: number; y: number; z: number; w: number } -interface ShapeD748 { label: string; title: string; summary: string } - -type Combined748 = ShapeA748 & ShapeB748 & ShapeC748 & ShapeD748; -type OptionalAll748 = { [K in keyof Combined748]?: Combined748[K] }; -type RequiredAll748 = { [K in keyof Combined748]-?: Combined748[K] }; -type ReadonlyAll748 = { readonly [K in keyof Combined748]: Combined748[K] }; -type NullableAll748 = { [K in keyof Combined748]: Combined748[K] | null }; +type EV_0748 = Val_0748; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString748 = T extends string ? true : false; -type IsNumber748 = T extends number ? true : false; -type TypeName748 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames748 = { - [K in keyof BigRecord748]: TypeName748; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb748 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource748 = "user" | "post" | "comment" | "tag" | "category"; -type Action748 = `${Verb748}_${Resource748}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise748 = T extends Promise ? UnwrapPromise748 : T; -type UnwrapArray748 = T extends (infer U)[] ? UnwrapArray748 : T; -type Head748 = T extends [infer H, ...infer _] ? H : never; -type Tail748 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation748 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation748>] - : never; +interface Registry_07_48 { + entities: Map; + validators: EV_0748; + paths: Set; + merged: DeepMerge_0748; +} -type SmallUnion748 = "a" | "b" | "c" | "d"; -type AllPerms748 = Permutation748; +type CK_0748 = `p07.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig748, - Flat748, - FR748, - BigUnion748, - ExtractAlpha748, - ExcludeZulu748, - OptionalAll748, - RequiredAll748, - ReadonlyAll748, - NullableAll748, - TypeNames748, - Action748, - AllPerms748, -}; +export type { Entity_07_48, Registry_07_48, CK_0748, EP_0748, EV_0748, DeepMerge_0748 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts index c8f5ff63..f3e341cc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-49.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-49 (seed 749) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-49 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0749 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0749 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord749 { - a749: { x: number; y: string; z: boolean }; - b749: { p: string[]; q: Record }; - c749: { nested: { deep: { deeper: { deepest: string } } } }; - d749: number; - e749: string; - f749: boolean; - g749: null; - h749: undefined; - i749: bigint; - j749: symbol; +interface Entity_07_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_49 | null; children: Entity_07_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0749: number; y0749: string; z0749: boolean }; } -type PartialBig749 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten749 = T extends Array ? Flatten749 : T; -type Nested749 = number[][][][][][][][][][]; -type Flat749 = Flatten749; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly749 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly749 : T[K]; -}; -type DeepRequired749 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired749 : T[K]; +type Path_0749 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0749}` }[keyof T & string] : never; +type EP_0749 = Path_0749; + +type Val_0749 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0749 } + : T[K] extends object ? { t: 'o'; props: Val_0749 } + : { t: 'u' }; }; -type FR749 = DeepReadonly749>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion749 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha749 = Extract; -type ExcludeZulu749 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA749 { width: number; height: number; depth: number } -interface ShapeB749 { color: string; opacity: number; blend: string } -interface ShapeC749 { x: number; y: number; z: number; w: number } -interface ShapeD749 { label: string; title: string; summary: string } - -type Combined749 = ShapeA749 & ShapeB749 & ShapeC749 & ShapeD749; -type OptionalAll749 = { [K in keyof Combined749]?: Combined749[K] }; -type RequiredAll749 = { [K in keyof Combined749]-?: Combined749[K] }; -type ReadonlyAll749 = { readonly [K in keyof Combined749]: Combined749[K] }; -type NullableAll749 = { [K in keyof Combined749]: Combined749[K] | null }; +type EV_0749 = Val_0749; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString749 = T extends string ? true : false; -type IsNumber749 = T extends number ? true : false; -type TypeName749 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames749 = { - [K in keyof BigRecord749]: TypeName749; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb749 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource749 = "user" | "post" | "comment" | "tag" | "category"; -type Action749 = `${Verb749}_${Resource749}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise749 = T extends Promise ? UnwrapPromise749 : T; -type UnwrapArray749 = T extends (infer U)[] ? UnwrapArray749 : T; -type Head749 = T extends [infer H, ...infer _] ? H : never; -type Tail749 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation749 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation749>] - : never; +interface Registry_07_49 { + entities: Map; + validators: EV_0749; + paths: Set; + merged: DeepMerge_0749; +} -type SmallUnion749 = "a" | "b" | "c" | "d"; -type AllPerms749 = Permutation749; +type CK_0749 = `p07.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig749, - Flat749, - FR749, - BigUnion749, - ExtractAlpha749, - ExcludeZulu749, - OptionalAll749, - RequiredAll749, - ReadonlyAll749, - NullableAll749, - TypeNames749, - Action749, - AllPerms749, -}; +export type { Entity_07_49, Registry_07_49, CK_0749, EP_0749, EV_0749, DeepMerge_0749 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts index 333271fa..6a6225c1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-07/types-50.ts @@ -1,125 +1,50 @@ -// pkg-07 / types-50 (seed 750) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-07/types-50 - heavy interconnected types + +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; +import type { Entity_4_01, Registry_4_01 } from '../pkg-04/types-01'; +import type { Entity_4_10, Registry_4_10 } from '../pkg-04/types-10'; +import type { Entity_4_20, Registry_4_20 } from '../pkg-04/types-20'; + +type DeepMerge_0750 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0750 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord750 { - a750: { x: number; y: string; z: boolean }; - b750: { p: string[]; q: Record }; - c750: { nested: { deep: { deeper: { deepest: string } } } }; - d750: number; - e750: string; - f750: boolean; - g750: null; - h750: undefined; - i750: bigint; - j750: symbol; +interface Entity_07_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_07_50 | null; children: Entity_07_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0750: number; y0750: string; z0750: boolean }; } -type PartialBig750 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten750 = T extends Array ? Flatten750 : T; -type Nested750 = number[][][][][][][][][][]; -type Flat750 = Flatten750; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly750 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly750 : T[K]; -}; -type DeepRequired750 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired750 : T[K]; +type Path_0750 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0750}` }[keyof T & string] : never; +type EP_0750 = Path_0750; + +type Val_0750 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0750 } + : T[K] extends object ? { t: 'o'; props: Val_0750 } + : { t: 'u' }; }; -type FR750 = DeepReadonly750>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion750 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha750 = Extract; -type ExcludeZulu750 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA750 { width: number; height: number; depth: number } -interface ShapeB750 { color: string; opacity: number; blend: string } -interface ShapeC750 { x: number; y: number; z: number; w: number } -interface ShapeD750 { label: string; title: string; summary: string } - -type Combined750 = ShapeA750 & ShapeB750 & ShapeC750 & ShapeD750; -type OptionalAll750 = { [K in keyof Combined750]?: Combined750[K] }; -type RequiredAll750 = { [K in keyof Combined750]-?: Combined750[K] }; -type ReadonlyAll750 = { readonly [K in keyof Combined750]: Combined750[K] }; -type NullableAll750 = { [K in keyof Combined750]: Combined750[K] | null }; +type EV_0750 = Val_0750; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString750 = T extends string ? true : false; -type IsNumber750 = T extends number ? true : false; -type TypeName750 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames750 = { - [K in keyof BigRecord750]: TypeName750; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb750 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource750 = "user" | "post" | "comment" | "tag" | "category"; -type Action750 = `${Verb750}_${Resource750}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise750 = T extends Promise ? UnwrapPromise750 : T; -type UnwrapArray750 = T extends (infer U)[] ? UnwrapArray750 : T; -type Head750 = T extends [infer H, ...infer _] ? H : never; -type Tail750 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation750 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation750>] - : never; +interface Registry_07_50 { + entities: Map; + validators: EV_0750; + paths: Set; + merged: DeepMerge_0750; +} -type SmallUnion750 = "a" | "b" | "c" | "d"; -type AllPerms750 = Permutation750; +type CK_0750 = `p07.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig750, - Flat750, - FR750, - BigUnion750, - ExtractAlpha750, - ExcludeZulu750, - OptionalAll750, - RequiredAll750, - ReadonlyAll750, - NullableAll750, - TypeNames750, - Action750, - AllPerms750, -}; +export type { Entity_07_50, Registry_07_50, CK_0750, EP_0750, EV_0750, DeepMerge_0750 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts index 35b154be..e4864049 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-01.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-01 (seed 801) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-01 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0801 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0801 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord801 { - a801: { x: number; y: string; z: boolean }; - b801: { p: string[]; q: Record }; - c801: { nested: { deep: { deeper: { deepest: string } } } }; - d801: number; - e801: string; - f801: boolean; - g801: null; - h801: undefined; - i801: bigint; - j801: symbol; +interface Entity_08_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_01 | null; children: Entity_08_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0801: number; y0801: string; z0801: boolean }; } -type PartialBig801 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten801 = T extends Array ? Flatten801 : T; -type Nested801 = number[][][][][][][][][][]; -type Flat801 = Flatten801; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly801 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly801 : T[K]; -}; -type DeepRequired801 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired801 : T[K]; +type Path_0801 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0801}` }[keyof T & string] : never; +type EP_0801 = Path_0801; + +type Val_0801 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0801 } + : T[K] extends object ? { t: 'o'; props: Val_0801 } + : { t: 'u' }; }; -type FR801 = DeepReadonly801>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion801 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha801 = Extract; -type ExcludeZulu801 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA801 { width: number; height: number; depth: number } -interface ShapeB801 { color: string; opacity: number; blend: string } -interface ShapeC801 { x: number; y: number; z: number; w: number } -interface ShapeD801 { label: string; title: string; summary: string } - -type Combined801 = ShapeA801 & ShapeB801 & ShapeC801 & ShapeD801; -type OptionalAll801 = { [K in keyof Combined801]?: Combined801[K] }; -type RequiredAll801 = { [K in keyof Combined801]-?: Combined801[K] }; -type ReadonlyAll801 = { readonly [K in keyof Combined801]: Combined801[K] }; -type NullableAll801 = { [K in keyof Combined801]: Combined801[K] | null }; +type EV_0801 = Val_0801; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString801 = T extends string ? true : false; -type IsNumber801 = T extends number ? true : false; -type TypeName801 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames801 = { - [K in keyof BigRecord801]: TypeName801; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb801 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource801 = "user" | "post" | "comment" | "tag" | "category"; -type Action801 = `${Verb801}_${Resource801}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise801 = T extends Promise ? UnwrapPromise801 : T; -type UnwrapArray801 = T extends (infer U)[] ? UnwrapArray801 : T; -type Head801 = T extends [infer H, ...infer _] ? H : never; -type Tail801 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation801 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation801>] - : never; +interface Registry_08_01 { + entities: Map; + validators: EV_0801; + paths: Set; + merged: DeepMerge_0801; +} -type SmallUnion801 = "a" | "b" | "c" | "d"; -type AllPerms801 = Permutation801; +type CK_0801 = `p08.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig801, - Flat801, - FR801, - BigUnion801, - ExtractAlpha801, - ExcludeZulu801, - OptionalAll801, - RequiredAll801, - ReadonlyAll801, - NullableAll801, - TypeNames801, - Action801, - AllPerms801, -}; +export type { Entity_08_01, Registry_08_01, CK_0801, EP_0801, EV_0801, DeepMerge_0801 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts index 7176dd16..d11cd00f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-02.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-02 (seed 802) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-02 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0802 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0802 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord802 { - a802: { x: number; y: string; z: boolean }; - b802: { p: string[]; q: Record }; - c802: { nested: { deep: { deeper: { deepest: string } } } }; - d802: number; - e802: string; - f802: boolean; - g802: null; - h802: undefined; - i802: bigint; - j802: symbol; +interface Entity_08_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_02 | null; children: Entity_08_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0802: number; y0802: string; z0802: boolean }; } -type PartialBig802 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten802 = T extends Array ? Flatten802 : T; -type Nested802 = number[][][][][][][][][][]; -type Flat802 = Flatten802; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly802 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly802 : T[K]; -}; -type DeepRequired802 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired802 : T[K]; +type Path_0802 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0802}` }[keyof T & string] : never; +type EP_0802 = Path_0802; + +type Val_0802 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0802 } + : T[K] extends object ? { t: 'o'; props: Val_0802 } + : { t: 'u' }; }; -type FR802 = DeepReadonly802>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion802 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha802 = Extract; -type ExcludeZulu802 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA802 { width: number; height: number; depth: number } -interface ShapeB802 { color: string; opacity: number; blend: string } -interface ShapeC802 { x: number; y: number; z: number; w: number } -interface ShapeD802 { label: string; title: string; summary: string } - -type Combined802 = ShapeA802 & ShapeB802 & ShapeC802 & ShapeD802; -type OptionalAll802 = { [K in keyof Combined802]?: Combined802[K] }; -type RequiredAll802 = { [K in keyof Combined802]-?: Combined802[K] }; -type ReadonlyAll802 = { readonly [K in keyof Combined802]: Combined802[K] }; -type NullableAll802 = { [K in keyof Combined802]: Combined802[K] | null }; +type EV_0802 = Val_0802; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString802 = T extends string ? true : false; -type IsNumber802 = T extends number ? true : false; -type TypeName802 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames802 = { - [K in keyof BigRecord802]: TypeName802; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb802 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource802 = "user" | "post" | "comment" | "tag" | "category"; -type Action802 = `${Verb802}_${Resource802}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise802 = T extends Promise ? UnwrapPromise802 : T; -type UnwrapArray802 = T extends (infer U)[] ? UnwrapArray802 : T; -type Head802 = T extends [infer H, ...infer _] ? H : never; -type Tail802 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation802 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation802>] - : never; +interface Registry_08_02 { + entities: Map; + validators: EV_0802; + paths: Set; + merged: DeepMerge_0802; +} -type SmallUnion802 = "a" | "b" | "c" | "d"; -type AllPerms802 = Permutation802; +type CK_0802 = `p08.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig802, - Flat802, - FR802, - BigUnion802, - ExtractAlpha802, - ExcludeZulu802, - OptionalAll802, - RequiredAll802, - ReadonlyAll802, - NullableAll802, - TypeNames802, - Action802, - AllPerms802, -}; +export type { Entity_08_02, Registry_08_02, CK_0802, EP_0802, EV_0802, DeepMerge_0802 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts index 0b268c55..709a0f3d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-03.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-03 (seed 803) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-03 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0803 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0803 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord803 { - a803: { x: number; y: string; z: boolean }; - b803: { p: string[]; q: Record }; - c803: { nested: { deep: { deeper: { deepest: string } } } }; - d803: number; - e803: string; - f803: boolean; - g803: null; - h803: undefined; - i803: bigint; - j803: symbol; +interface Entity_08_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_03 | null; children: Entity_08_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0803: number; y0803: string; z0803: boolean }; } -type PartialBig803 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten803 = T extends Array ? Flatten803 : T; -type Nested803 = number[][][][][][][][][][]; -type Flat803 = Flatten803; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly803 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly803 : T[K]; -}; -type DeepRequired803 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired803 : T[K]; +type Path_0803 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0803}` }[keyof T & string] : never; +type EP_0803 = Path_0803; + +type Val_0803 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0803 } + : T[K] extends object ? { t: 'o'; props: Val_0803 } + : { t: 'u' }; }; -type FR803 = DeepReadonly803>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion803 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha803 = Extract; -type ExcludeZulu803 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA803 { width: number; height: number; depth: number } -interface ShapeB803 { color: string; opacity: number; blend: string } -interface ShapeC803 { x: number; y: number; z: number; w: number } -interface ShapeD803 { label: string; title: string; summary: string } - -type Combined803 = ShapeA803 & ShapeB803 & ShapeC803 & ShapeD803; -type OptionalAll803 = { [K in keyof Combined803]?: Combined803[K] }; -type RequiredAll803 = { [K in keyof Combined803]-?: Combined803[K] }; -type ReadonlyAll803 = { readonly [K in keyof Combined803]: Combined803[K] }; -type NullableAll803 = { [K in keyof Combined803]: Combined803[K] | null }; +type EV_0803 = Val_0803; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString803 = T extends string ? true : false; -type IsNumber803 = T extends number ? true : false; -type TypeName803 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames803 = { - [K in keyof BigRecord803]: TypeName803; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb803 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource803 = "user" | "post" | "comment" | "tag" | "category"; -type Action803 = `${Verb803}_${Resource803}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise803 = T extends Promise ? UnwrapPromise803 : T; -type UnwrapArray803 = T extends (infer U)[] ? UnwrapArray803 : T; -type Head803 = T extends [infer H, ...infer _] ? H : never; -type Tail803 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation803 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation803>] - : never; +interface Registry_08_03 { + entities: Map; + validators: EV_0803; + paths: Set; + merged: DeepMerge_0803; +} -type SmallUnion803 = "a" | "b" | "c" | "d"; -type AllPerms803 = Permutation803; +type CK_0803 = `p08.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig803, - Flat803, - FR803, - BigUnion803, - ExtractAlpha803, - ExcludeZulu803, - OptionalAll803, - RequiredAll803, - ReadonlyAll803, - NullableAll803, - TypeNames803, - Action803, - AllPerms803, -}; +export type { Entity_08_03, Registry_08_03, CK_0803, EP_0803, EV_0803, DeepMerge_0803 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts index ecec3cfc..43f52752 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-04.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-04 (seed 804) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-04 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0804 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0804 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord804 { - a804: { x: number; y: string; z: boolean }; - b804: { p: string[]; q: Record }; - c804: { nested: { deep: { deeper: { deepest: string } } } }; - d804: number; - e804: string; - f804: boolean; - g804: null; - h804: undefined; - i804: bigint; - j804: symbol; +interface Entity_08_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_04 | null; children: Entity_08_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0804: number; y0804: string; z0804: boolean }; } -type PartialBig804 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten804 = T extends Array ? Flatten804 : T; -type Nested804 = number[][][][][][][][][][]; -type Flat804 = Flatten804; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly804 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly804 : T[K]; -}; -type DeepRequired804 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired804 : T[K]; +type Path_0804 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0804}` }[keyof T & string] : never; +type EP_0804 = Path_0804; + +type Val_0804 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0804 } + : T[K] extends object ? { t: 'o'; props: Val_0804 } + : { t: 'u' }; }; -type FR804 = DeepReadonly804>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion804 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha804 = Extract; -type ExcludeZulu804 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA804 { width: number; height: number; depth: number } -interface ShapeB804 { color: string; opacity: number; blend: string } -interface ShapeC804 { x: number; y: number; z: number; w: number } -interface ShapeD804 { label: string; title: string; summary: string } - -type Combined804 = ShapeA804 & ShapeB804 & ShapeC804 & ShapeD804; -type OptionalAll804 = { [K in keyof Combined804]?: Combined804[K] }; -type RequiredAll804 = { [K in keyof Combined804]-?: Combined804[K] }; -type ReadonlyAll804 = { readonly [K in keyof Combined804]: Combined804[K] }; -type NullableAll804 = { [K in keyof Combined804]: Combined804[K] | null }; +type EV_0804 = Val_0804; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString804 = T extends string ? true : false; -type IsNumber804 = T extends number ? true : false; -type TypeName804 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames804 = { - [K in keyof BigRecord804]: TypeName804; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb804 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource804 = "user" | "post" | "comment" | "tag" | "category"; -type Action804 = `${Verb804}_${Resource804}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise804 = T extends Promise ? UnwrapPromise804 : T; -type UnwrapArray804 = T extends (infer U)[] ? UnwrapArray804 : T; -type Head804 = T extends [infer H, ...infer _] ? H : never; -type Tail804 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation804 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation804>] - : never; +interface Registry_08_04 { + entities: Map; + validators: EV_0804; + paths: Set; + merged: DeepMerge_0804; +} -type SmallUnion804 = "a" | "b" | "c" | "d"; -type AllPerms804 = Permutation804; +type CK_0804 = `p08.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig804, - Flat804, - FR804, - BigUnion804, - ExtractAlpha804, - ExcludeZulu804, - OptionalAll804, - RequiredAll804, - ReadonlyAll804, - NullableAll804, - TypeNames804, - Action804, - AllPerms804, -}; +export type { Entity_08_04, Registry_08_04, CK_0804, EP_0804, EV_0804, DeepMerge_0804 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts index 7b2fbfa3..aabd01c2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-05.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-05 (seed 805) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-05 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0805 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0805 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord805 { - a805: { x: number; y: string; z: boolean }; - b805: { p: string[]; q: Record }; - c805: { nested: { deep: { deeper: { deepest: string } } } }; - d805: number; - e805: string; - f805: boolean; - g805: null; - h805: undefined; - i805: bigint; - j805: symbol; +interface Entity_08_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_05 | null; children: Entity_08_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0805: number; y0805: string; z0805: boolean }; } -type PartialBig805 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten805 = T extends Array ? Flatten805 : T; -type Nested805 = number[][][][][][][][][][]; -type Flat805 = Flatten805; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly805 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly805 : T[K]; -}; -type DeepRequired805 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired805 : T[K]; +type Path_0805 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0805}` }[keyof T & string] : never; +type EP_0805 = Path_0805; + +type Val_0805 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0805 } + : T[K] extends object ? { t: 'o'; props: Val_0805 } + : { t: 'u' }; }; -type FR805 = DeepReadonly805>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion805 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha805 = Extract; -type ExcludeZulu805 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA805 { width: number; height: number; depth: number } -interface ShapeB805 { color: string; opacity: number; blend: string } -interface ShapeC805 { x: number; y: number; z: number; w: number } -interface ShapeD805 { label: string; title: string; summary: string } - -type Combined805 = ShapeA805 & ShapeB805 & ShapeC805 & ShapeD805; -type OptionalAll805 = { [K in keyof Combined805]?: Combined805[K] }; -type RequiredAll805 = { [K in keyof Combined805]-?: Combined805[K] }; -type ReadonlyAll805 = { readonly [K in keyof Combined805]: Combined805[K] }; -type NullableAll805 = { [K in keyof Combined805]: Combined805[K] | null }; +type EV_0805 = Val_0805; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString805 = T extends string ? true : false; -type IsNumber805 = T extends number ? true : false; -type TypeName805 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames805 = { - [K in keyof BigRecord805]: TypeName805; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb805 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource805 = "user" | "post" | "comment" | "tag" | "category"; -type Action805 = `${Verb805}_${Resource805}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise805 = T extends Promise ? UnwrapPromise805 : T; -type UnwrapArray805 = T extends (infer U)[] ? UnwrapArray805 : T; -type Head805 = T extends [infer H, ...infer _] ? H : never; -type Tail805 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation805 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation805>] - : never; +interface Registry_08_05 { + entities: Map; + validators: EV_0805; + paths: Set; + merged: DeepMerge_0805; +} -type SmallUnion805 = "a" | "b" | "c" | "d"; -type AllPerms805 = Permutation805; +type CK_0805 = `p08.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig805, - Flat805, - FR805, - BigUnion805, - ExtractAlpha805, - ExcludeZulu805, - OptionalAll805, - RequiredAll805, - ReadonlyAll805, - NullableAll805, - TypeNames805, - Action805, - AllPerms805, -}; +export type { Entity_08_05, Registry_08_05, CK_0805, EP_0805, EV_0805, DeepMerge_0805 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts index 9b897e34..b7007e31 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-06.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-06 (seed 806) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-06 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0806 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0806 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord806 { - a806: { x: number; y: string; z: boolean }; - b806: { p: string[]; q: Record }; - c806: { nested: { deep: { deeper: { deepest: string } } } }; - d806: number; - e806: string; - f806: boolean; - g806: null; - h806: undefined; - i806: bigint; - j806: symbol; +interface Entity_08_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_06 | null; children: Entity_08_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0806: number; y0806: string; z0806: boolean }; } -type PartialBig806 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten806 = T extends Array ? Flatten806 : T; -type Nested806 = number[][][][][][][][][][]; -type Flat806 = Flatten806; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly806 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly806 : T[K]; -}; -type DeepRequired806 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired806 : T[K]; +type Path_0806 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0806}` }[keyof T & string] : never; +type EP_0806 = Path_0806; + +type Val_0806 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0806 } + : T[K] extends object ? { t: 'o'; props: Val_0806 } + : { t: 'u' }; }; -type FR806 = DeepReadonly806>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion806 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha806 = Extract; -type ExcludeZulu806 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA806 { width: number; height: number; depth: number } -interface ShapeB806 { color: string; opacity: number; blend: string } -interface ShapeC806 { x: number; y: number; z: number; w: number } -interface ShapeD806 { label: string; title: string; summary: string } - -type Combined806 = ShapeA806 & ShapeB806 & ShapeC806 & ShapeD806; -type OptionalAll806 = { [K in keyof Combined806]?: Combined806[K] }; -type RequiredAll806 = { [K in keyof Combined806]-?: Combined806[K] }; -type ReadonlyAll806 = { readonly [K in keyof Combined806]: Combined806[K] }; -type NullableAll806 = { [K in keyof Combined806]: Combined806[K] | null }; +type EV_0806 = Val_0806; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString806 = T extends string ? true : false; -type IsNumber806 = T extends number ? true : false; -type TypeName806 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames806 = { - [K in keyof BigRecord806]: TypeName806; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb806 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource806 = "user" | "post" | "comment" | "tag" | "category"; -type Action806 = `${Verb806}_${Resource806}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise806 = T extends Promise ? UnwrapPromise806 : T; -type UnwrapArray806 = T extends (infer U)[] ? UnwrapArray806 : T; -type Head806 = T extends [infer H, ...infer _] ? H : never; -type Tail806 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation806 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation806>] - : never; +interface Registry_08_06 { + entities: Map; + validators: EV_0806; + paths: Set; + merged: DeepMerge_0806; +} -type SmallUnion806 = "a" | "b" | "c" | "d"; -type AllPerms806 = Permutation806; +type CK_0806 = `p08.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig806, - Flat806, - FR806, - BigUnion806, - ExtractAlpha806, - ExcludeZulu806, - OptionalAll806, - RequiredAll806, - ReadonlyAll806, - NullableAll806, - TypeNames806, - Action806, - AllPerms806, -}; +export type { Entity_08_06, Registry_08_06, CK_0806, EP_0806, EV_0806, DeepMerge_0806 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts index 6e9d9c25..bc66b752 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-07.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-07 (seed 807) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-07 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0807 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0807 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord807 { - a807: { x: number; y: string; z: boolean }; - b807: { p: string[]; q: Record }; - c807: { nested: { deep: { deeper: { deepest: string } } } }; - d807: number; - e807: string; - f807: boolean; - g807: null; - h807: undefined; - i807: bigint; - j807: symbol; +interface Entity_08_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_07 | null; children: Entity_08_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0807: number; y0807: string; z0807: boolean }; } -type PartialBig807 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten807 = T extends Array ? Flatten807 : T; -type Nested807 = number[][][][][][][][][][]; -type Flat807 = Flatten807; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly807 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly807 : T[K]; -}; -type DeepRequired807 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired807 : T[K]; +type Path_0807 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0807}` }[keyof T & string] : never; +type EP_0807 = Path_0807; + +type Val_0807 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0807 } + : T[K] extends object ? { t: 'o'; props: Val_0807 } + : { t: 'u' }; }; -type FR807 = DeepReadonly807>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion807 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha807 = Extract; -type ExcludeZulu807 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA807 { width: number; height: number; depth: number } -interface ShapeB807 { color: string; opacity: number; blend: string } -interface ShapeC807 { x: number; y: number; z: number; w: number } -interface ShapeD807 { label: string; title: string; summary: string } - -type Combined807 = ShapeA807 & ShapeB807 & ShapeC807 & ShapeD807; -type OptionalAll807 = { [K in keyof Combined807]?: Combined807[K] }; -type RequiredAll807 = { [K in keyof Combined807]-?: Combined807[K] }; -type ReadonlyAll807 = { readonly [K in keyof Combined807]: Combined807[K] }; -type NullableAll807 = { [K in keyof Combined807]: Combined807[K] | null }; +type EV_0807 = Val_0807; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString807 = T extends string ? true : false; -type IsNumber807 = T extends number ? true : false; -type TypeName807 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames807 = { - [K in keyof BigRecord807]: TypeName807; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb807 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource807 = "user" | "post" | "comment" | "tag" | "category"; -type Action807 = `${Verb807}_${Resource807}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise807 = T extends Promise ? UnwrapPromise807 : T; -type UnwrapArray807 = T extends (infer U)[] ? UnwrapArray807 : T; -type Head807 = T extends [infer H, ...infer _] ? H : never; -type Tail807 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation807 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation807>] - : never; +interface Registry_08_07 { + entities: Map; + validators: EV_0807; + paths: Set; + merged: DeepMerge_0807; +} -type SmallUnion807 = "a" | "b" | "c" | "d"; -type AllPerms807 = Permutation807; +type CK_0807 = `p08.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig807, - Flat807, - FR807, - BigUnion807, - ExtractAlpha807, - ExcludeZulu807, - OptionalAll807, - RequiredAll807, - ReadonlyAll807, - NullableAll807, - TypeNames807, - Action807, - AllPerms807, -}; +export type { Entity_08_07, Registry_08_07, CK_0807, EP_0807, EV_0807, DeepMerge_0807 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts index a878717d..e4f24aa0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-08.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-08 (seed 808) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-08 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0808 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0808 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord808 { - a808: { x: number; y: string; z: boolean }; - b808: { p: string[]; q: Record }; - c808: { nested: { deep: { deeper: { deepest: string } } } }; - d808: number; - e808: string; - f808: boolean; - g808: null; - h808: undefined; - i808: bigint; - j808: symbol; +interface Entity_08_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_08 | null; children: Entity_08_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0808: number; y0808: string; z0808: boolean }; } -type PartialBig808 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten808 = T extends Array ? Flatten808 : T; -type Nested808 = number[][][][][][][][][][]; -type Flat808 = Flatten808; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly808 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly808 : T[K]; -}; -type DeepRequired808 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired808 : T[K]; +type Path_0808 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0808}` }[keyof T & string] : never; +type EP_0808 = Path_0808; + +type Val_0808 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0808 } + : T[K] extends object ? { t: 'o'; props: Val_0808 } + : { t: 'u' }; }; -type FR808 = DeepReadonly808>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion808 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha808 = Extract; -type ExcludeZulu808 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA808 { width: number; height: number; depth: number } -interface ShapeB808 { color: string; opacity: number; blend: string } -interface ShapeC808 { x: number; y: number; z: number; w: number } -interface ShapeD808 { label: string; title: string; summary: string } - -type Combined808 = ShapeA808 & ShapeB808 & ShapeC808 & ShapeD808; -type OptionalAll808 = { [K in keyof Combined808]?: Combined808[K] }; -type RequiredAll808 = { [K in keyof Combined808]-?: Combined808[K] }; -type ReadonlyAll808 = { readonly [K in keyof Combined808]: Combined808[K] }; -type NullableAll808 = { [K in keyof Combined808]: Combined808[K] | null }; +type EV_0808 = Val_0808; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString808 = T extends string ? true : false; -type IsNumber808 = T extends number ? true : false; -type TypeName808 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames808 = { - [K in keyof BigRecord808]: TypeName808; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb808 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource808 = "user" | "post" | "comment" | "tag" | "category"; -type Action808 = `${Verb808}_${Resource808}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise808 = T extends Promise ? UnwrapPromise808 : T; -type UnwrapArray808 = T extends (infer U)[] ? UnwrapArray808 : T; -type Head808 = T extends [infer H, ...infer _] ? H : never; -type Tail808 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation808 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation808>] - : never; +interface Registry_08_08 { + entities: Map; + validators: EV_0808; + paths: Set; + merged: DeepMerge_0808; +} -type SmallUnion808 = "a" | "b" | "c" | "d"; -type AllPerms808 = Permutation808; +type CK_0808 = `p08.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig808, - Flat808, - FR808, - BigUnion808, - ExtractAlpha808, - ExcludeZulu808, - OptionalAll808, - RequiredAll808, - ReadonlyAll808, - NullableAll808, - TypeNames808, - Action808, - AllPerms808, -}; +export type { Entity_08_08, Registry_08_08, CK_0808, EP_0808, EV_0808, DeepMerge_0808 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts index f9a55919..9ace3236 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-09.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-09 (seed 809) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-09 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0809 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0809 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord809 { - a809: { x: number; y: string; z: boolean }; - b809: { p: string[]; q: Record }; - c809: { nested: { deep: { deeper: { deepest: string } } } }; - d809: number; - e809: string; - f809: boolean; - g809: null; - h809: undefined; - i809: bigint; - j809: symbol; +interface Entity_08_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_09 | null; children: Entity_08_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0809: number; y0809: string; z0809: boolean }; } -type PartialBig809 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten809 = T extends Array ? Flatten809 : T; -type Nested809 = number[][][][][][][][][][]; -type Flat809 = Flatten809; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly809 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly809 : T[K]; -}; -type DeepRequired809 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired809 : T[K]; +type Path_0809 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0809}` }[keyof T & string] : never; +type EP_0809 = Path_0809; + +type Val_0809 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0809 } + : T[K] extends object ? { t: 'o'; props: Val_0809 } + : { t: 'u' }; }; -type FR809 = DeepReadonly809>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion809 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha809 = Extract; -type ExcludeZulu809 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA809 { width: number; height: number; depth: number } -interface ShapeB809 { color: string; opacity: number; blend: string } -interface ShapeC809 { x: number; y: number; z: number; w: number } -interface ShapeD809 { label: string; title: string; summary: string } - -type Combined809 = ShapeA809 & ShapeB809 & ShapeC809 & ShapeD809; -type OptionalAll809 = { [K in keyof Combined809]?: Combined809[K] }; -type RequiredAll809 = { [K in keyof Combined809]-?: Combined809[K] }; -type ReadonlyAll809 = { readonly [K in keyof Combined809]: Combined809[K] }; -type NullableAll809 = { [K in keyof Combined809]: Combined809[K] | null }; +type EV_0809 = Val_0809; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString809 = T extends string ? true : false; -type IsNumber809 = T extends number ? true : false; -type TypeName809 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames809 = { - [K in keyof BigRecord809]: TypeName809; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb809 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource809 = "user" | "post" | "comment" | "tag" | "category"; -type Action809 = `${Verb809}_${Resource809}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise809 = T extends Promise ? UnwrapPromise809 : T; -type UnwrapArray809 = T extends (infer U)[] ? UnwrapArray809 : T; -type Head809 = T extends [infer H, ...infer _] ? H : never; -type Tail809 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation809 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation809>] - : never; +interface Registry_08_09 { + entities: Map; + validators: EV_0809; + paths: Set; + merged: DeepMerge_0809; +} -type SmallUnion809 = "a" | "b" | "c" | "d"; -type AllPerms809 = Permutation809; +type CK_0809 = `p08.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig809, - Flat809, - FR809, - BigUnion809, - ExtractAlpha809, - ExcludeZulu809, - OptionalAll809, - RequiredAll809, - ReadonlyAll809, - NullableAll809, - TypeNames809, - Action809, - AllPerms809, -}; +export type { Entity_08_09, Registry_08_09, CK_0809, EP_0809, EV_0809, DeepMerge_0809 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts index 62ca3307..716c86bf 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-10.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-10 (seed 810) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-10 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0810 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0810 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord810 { - a810: { x: number; y: string; z: boolean }; - b810: { p: string[]; q: Record }; - c810: { nested: { deep: { deeper: { deepest: string } } } }; - d810: number; - e810: string; - f810: boolean; - g810: null; - h810: undefined; - i810: bigint; - j810: symbol; +interface Entity_08_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_10 | null; children: Entity_08_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0810: number; y0810: string; z0810: boolean }; } -type PartialBig810 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten810 = T extends Array ? Flatten810 : T; -type Nested810 = number[][][][][][][][][][]; -type Flat810 = Flatten810; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly810 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly810 : T[K]; -}; -type DeepRequired810 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired810 : T[K]; +type Path_0810 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0810}` }[keyof T & string] : never; +type EP_0810 = Path_0810; + +type Val_0810 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0810 } + : T[K] extends object ? { t: 'o'; props: Val_0810 } + : { t: 'u' }; }; -type FR810 = DeepReadonly810>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion810 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha810 = Extract; -type ExcludeZulu810 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA810 { width: number; height: number; depth: number } -interface ShapeB810 { color: string; opacity: number; blend: string } -interface ShapeC810 { x: number; y: number; z: number; w: number } -interface ShapeD810 { label: string; title: string; summary: string } - -type Combined810 = ShapeA810 & ShapeB810 & ShapeC810 & ShapeD810; -type OptionalAll810 = { [K in keyof Combined810]?: Combined810[K] }; -type RequiredAll810 = { [K in keyof Combined810]-?: Combined810[K] }; -type ReadonlyAll810 = { readonly [K in keyof Combined810]: Combined810[K] }; -type NullableAll810 = { [K in keyof Combined810]: Combined810[K] | null }; +type EV_0810 = Val_0810; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString810 = T extends string ? true : false; -type IsNumber810 = T extends number ? true : false; -type TypeName810 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames810 = { - [K in keyof BigRecord810]: TypeName810; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb810 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource810 = "user" | "post" | "comment" | "tag" | "category"; -type Action810 = `${Verb810}_${Resource810}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise810 = T extends Promise ? UnwrapPromise810 : T; -type UnwrapArray810 = T extends (infer U)[] ? UnwrapArray810 : T; -type Head810 = T extends [infer H, ...infer _] ? H : never; -type Tail810 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation810 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation810>] - : never; +interface Registry_08_10 { + entities: Map; + validators: EV_0810; + paths: Set; + merged: DeepMerge_0810; +} -type SmallUnion810 = "a" | "b" | "c" | "d"; -type AllPerms810 = Permutation810; +type CK_0810 = `p08.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig810, - Flat810, - FR810, - BigUnion810, - ExtractAlpha810, - ExcludeZulu810, - OptionalAll810, - RequiredAll810, - ReadonlyAll810, - NullableAll810, - TypeNames810, - Action810, - AllPerms810, -}; +export type { Entity_08_10, Registry_08_10, CK_0810, EP_0810, EV_0810, DeepMerge_0810 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts index 2f5fe555..0661a4bf 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-11.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-11 (seed 811) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-11 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0811 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0811 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord811 { - a811: { x: number; y: string; z: boolean }; - b811: { p: string[]; q: Record }; - c811: { nested: { deep: { deeper: { deepest: string } } } }; - d811: number; - e811: string; - f811: boolean; - g811: null; - h811: undefined; - i811: bigint; - j811: symbol; +interface Entity_08_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_11 | null; children: Entity_08_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0811: number; y0811: string; z0811: boolean }; } -type PartialBig811 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten811 = T extends Array ? Flatten811 : T; -type Nested811 = number[][][][][][][][][][]; -type Flat811 = Flatten811; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly811 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly811 : T[K]; -}; -type DeepRequired811 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired811 : T[K]; +type Path_0811 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0811}` }[keyof T & string] : never; +type EP_0811 = Path_0811; + +type Val_0811 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0811 } + : T[K] extends object ? { t: 'o'; props: Val_0811 } + : { t: 'u' }; }; -type FR811 = DeepReadonly811>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion811 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha811 = Extract; -type ExcludeZulu811 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA811 { width: number; height: number; depth: number } -interface ShapeB811 { color: string; opacity: number; blend: string } -interface ShapeC811 { x: number; y: number; z: number; w: number } -interface ShapeD811 { label: string; title: string; summary: string } - -type Combined811 = ShapeA811 & ShapeB811 & ShapeC811 & ShapeD811; -type OptionalAll811 = { [K in keyof Combined811]?: Combined811[K] }; -type RequiredAll811 = { [K in keyof Combined811]-?: Combined811[K] }; -type ReadonlyAll811 = { readonly [K in keyof Combined811]: Combined811[K] }; -type NullableAll811 = { [K in keyof Combined811]: Combined811[K] | null }; +type EV_0811 = Val_0811; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString811 = T extends string ? true : false; -type IsNumber811 = T extends number ? true : false; -type TypeName811 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames811 = { - [K in keyof BigRecord811]: TypeName811; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb811 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource811 = "user" | "post" | "comment" | "tag" | "category"; -type Action811 = `${Verb811}_${Resource811}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise811 = T extends Promise ? UnwrapPromise811 : T; -type UnwrapArray811 = T extends (infer U)[] ? UnwrapArray811 : T; -type Head811 = T extends [infer H, ...infer _] ? H : never; -type Tail811 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation811 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation811>] - : never; +interface Registry_08_11 { + entities: Map; + validators: EV_0811; + paths: Set; + merged: DeepMerge_0811; +} -type SmallUnion811 = "a" | "b" | "c" | "d"; -type AllPerms811 = Permutation811; +type CK_0811 = `p08.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig811, - Flat811, - FR811, - BigUnion811, - ExtractAlpha811, - ExcludeZulu811, - OptionalAll811, - RequiredAll811, - ReadonlyAll811, - NullableAll811, - TypeNames811, - Action811, - AllPerms811, -}; +export type { Entity_08_11, Registry_08_11, CK_0811, EP_0811, EV_0811, DeepMerge_0811 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts index b2852cca..453c7fe5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-12.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-12 (seed 812) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-12 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0812 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0812 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord812 { - a812: { x: number; y: string; z: boolean }; - b812: { p: string[]; q: Record }; - c812: { nested: { deep: { deeper: { deepest: string } } } }; - d812: number; - e812: string; - f812: boolean; - g812: null; - h812: undefined; - i812: bigint; - j812: symbol; +interface Entity_08_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_12 | null; children: Entity_08_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0812: number; y0812: string; z0812: boolean }; } -type PartialBig812 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten812 = T extends Array ? Flatten812 : T; -type Nested812 = number[][][][][][][][][][]; -type Flat812 = Flatten812; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly812 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly812 : T[K]; -}; -type DeepRequired812 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired812 : T[K]; +type Path_0812 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0812}` }[keyof T & string] : never; +type EP_0812 = Path_0812; + +type Val_0812 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0812 } + : T[K] extends object ? { t: 'o'; props: Val_0812 } + : { t: 'u' }; }; -type FR812 = DeepReadonly812>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion812 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha812 = Extract; -type ExcludeZulu812 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA812 { width: number; height: number; depth: number } -interface ShapeB812 { color: string; opacity: number; blend: string } -interface ShapeC812 { x: number; y: number; z: number; w: number } -interface ShapeD812 { label: string; title: string; summary: string } - -type Combined812 = ShapeA812 & ShapeB812 & ShapeC812 & ShapeD812; -type OptionalAll812 = { [K in keyof Combined812]?: Combined812[K] }; -type RequiredAll812 = { [K in keyof Combined812]-?: Combined812[K] }; -type ReadonlyAll812 = { readonly [K in keyof Combined812]: Combined812[K] }; -type NullableAll812 = { [K in keyof Combined812]: Combined812[K] | null }; +type EV_0812 = Val_0812; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString812 = T extends string ? true : false; -type IsNumber812 = T extends number ? true : false; -type TypeName812 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames812 = { - [K in keyof BigRecord812]: TypeName812; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb812 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource812 = "user" | "post" | "comment" | "tag" | "category"; -type Action812 = `${Verb812}_${Resource812}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise812 = T extends Promise ? UnwrapPromise812 : T; -type UnwrapArray812 = T extends (infer U)[] ? UnwrapArray812 : T; -type Head812 = T extends [infer H, ...infer _] ? H : never; -type Tail812 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation812 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation812>] - : never; +interface Registry_08_12 { + entities: Map; + validators: EV_0812; + paths: Set; + merged: DeepMerge_0812; +} -type SmallUnion812 = "a" | "b" | "c" | "d"; -type AllPerms812 = Permutation812; +type CK_0812 = `p08.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig812, - Flat812, - FR812, - BigUnion812, - ExtractAlpha812, - ExcludeZulu812, - OptionalAll812, - RequiredAll812, - ReadonlyAll812, - NullableAll812, - TypeNames812, - Action812, - AllPerms812, -}; +export type { Entity_08_12, Registry_08_12, CK_0812, EP_0812, EV_0812, DeepMerge_0812 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts index 6600ad96..afc6739d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-13.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-13 (seed 813) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-13 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0813 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0813 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord813 { - a813: { x: number; y: string; z: boolean }; - b813: { p: string[]; q: Record }; - c813: { nested: { deep: { deeper: { deepest: string } } } }; - d813: number; - e813: string; - f813: boolean; - g813: null; - h813: undefined; - i813: bigint; - j813: symbol; +interface Entity_08_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_13 | null; children: Entity_08_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0813: number; y0813: string; z0813: boolean }; } -type PartialBig813 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten813 = T extends Array ? Flatten813 : T; -type Nested813 = number[][][][][][][][][][]; -type Flat813 = Flatten813; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly813 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly813 : T[K]; -}; -type DeepRequired813 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired813 : T[K]; +type Path_0813 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0813}` }[keyof T & string] : never; +type EP_0813 = Path_0813; + +type Val_0813 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0813 } + : T[K] extends object ? { t: 'o'; props: Val_0813 } + : { t: 'u' }; }; -type FR813 = DeepReadonly813>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion813 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha813 = Extract; -type ExcludeZulu813 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA813 { width: number; height: number; depth: number } -interface ShapeB813 { color: string; opacity: number; blend: string } -interface ShapeC813 { x: number; y: number; z: number; w: number } -interface ShapeD813 { label: string; title: string; summary: string } - -type Combined813 = ShapeA813 & ShapeB813 & ShapeC813 & ShapeD813; -type OptionalAll813 = { [K in keyof Combined813]?: Combined813[K] }; -type RequiredAll813 = { [K in keyof Combined813]-?: Combined813[K] }; -type ReadonlyAll813 = { readonly [K in keyof Combined813]: Combined813[K] }; -type NullableAll813 = { [K in keyof Combined813]: Combined813[K] | null }; +type EV_0813 = Val_0813; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString813 = T extends string ? true : false; -type IsNumber813 = T extends number ? true : false; -type TypeName813 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames813 = { - [K in keyof BigRecord813]: TypeName813; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb813 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource813 = "user" | "post" | "comment" | "tag" | "category"; -type Action813 = `${Verb813}_${Resource813}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise813 = T extends Promise ? UnwrapPromise813 : T; -type UnwrapArray813 = T extends (infer U)[] ? UnwrapArray813 : T; -type Head813 = T extends [infer H, ...infer _] ? H : never; -type Tail813 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation813 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation813>] - : never; +interface Registry_08_13 { + entities: Map; + validators: EV_0813; + paths: Set; + merged: DeepMerge_0813; +} -type SmallUnion813 = "a" | "b" | "c" | "d"; -type AllPerms813 = Permutation813; +type CK_0813 = `p08.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig813, - Flat813, - FR813, - BigUnion813, - ExtractAlpha813, - ExcludeZulu813, - OptionalAll813, - RequiredAll813, - ReadonlyAll813, - NullableAll813, - TypeNames813, - Action813, - AllPerms813, -}; +export type { Entity_08_13, Registry_08_13, CK_0813, EP_0813, EV_0813, DeepMerge_0813 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts index 3333227d..a687d8a6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-14.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-14 (seed 814) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-14 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0814 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0814 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord814 { - a814: { x: number; y: string; z: boolean }; - b814: { p: string[]; q: Record }; - c814: { nested: { deep: { deeper: { deepest: string } } } }; - d814: number; - e814: string; - f814: boolean; - g814: null; - h814: undefined; - i814: bigint; - j814: symbol; +interface Entity_08_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_14 | null; children: Entity_08_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0814: number; y0814: string; z0814: boolean }; } -type PartialBig814 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten814 = T extends Array ? Flatten814 : T; -type Nested814 = number[][][][][][][][][][]; -type Flat814 = Flatten814; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly814 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly814 : T[K]; -}; -type DeepRequired814 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired814 : T[K]; +type Path_0814 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0814}` }[keyof T & string] : never; +type EP_0814 = Path_0814; + +type Val_0814 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0814 } + : T[K] extends object ? { t: 'o'; props: Val_0814 } + : { t: 'u' }; }; -type FR814 = DeepReadonly814>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion814 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha814 = Extract; -type ExcludeZulu814 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA814 { width: number; height: number; depth: number } -interface ShapeB814 { color: string; opacity: number; blend: string } -interface ShapeC814 { x: number; y: number; z: number; w: number } -interface ShapeD814 { label: string; title: string; summary: string } - -type Combined814 = ShapeA814 & ShapeB814 & ShapeC814 & ShapeD814; -type OptionalAll814 = { [K in keyof Combined814]?: Combined814[K] }; -type RequiredAll814 = { [K in keyof Combined814]-?: Combined814[K] }; -type ReadonlyAll814 = { readonly [K in keyof Combined814]: Combined814[K] }; -type NullableAll814 = { [K in keyof Combined814]: Combined814[K] | null }; +type EV_0814 = Val_0814; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString814 = T extends string ? true : false; -type IsNumber814 = T extends number ? true : false; -type TypeName814 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames814 = { - [K in keyof BigRecord814]: TypeName814; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb814 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource814 = "user" | "post" | "comment" | "tag" | "category"; -type Action814 = `${Verb814}_${Resource814}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise814 = T extends Promise ? UnwrapPromise814 : T; -type UnwrapArray814 = T extends (infer U)[] ? UnwrapArray814 : T; -type Head814 = T extends [infer H, ...infer _] ? H : never; -type Tail814 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation814 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation814>] - : never; +interface Registry_08_14 { + entities: Map; + validators: EV_0814; + paths: Set; + merged: DeepMerge_0814; +} -type SmallUnion814 = "a" | "b" | "c" | "d"; -type AllPerms814 = Permutation814; +type CK_0814 = `p08.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig814, - Flat814, - FR814, - BigUnion814, - ExtractAlpha814, - ExcludeZulu814, - OptionalAll814, - RequiredAll814, - ReadonlyAll814, - NullableAll814, - TypeNames814, - Action814, - AllPerms814, -}; +export type { Entity_08_14, Registry_08_14, CK_0814, EP_0814, EV_0814, DeepMerge_0814 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts index 8eba0f36..baa3c12a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-15.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-15 (seed 815) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-15 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0815 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0815 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord815 { - a815: { x: number; y: string; z: boolean }; - b815: { p: string[]; q: Record }; - c815: { nested: { deep: { deeper: { deepest: string } } } }; - d815: number; - e815: string; - f815: boolean; - g815: null; - h815: undefined; - i815: bigint; - j815: symbol; +interface Entity_08_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_15 | null; children: Entity_08_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0815: number; y0815: string; z0815: boolean }; } -type PartialBig815 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten815 = T extends Array ? Flatten815 : T; -type Nested815 = number[][][][][][][][][][]; -type Flat815 = Flatten815; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly815 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly815 : T[K]; -}; -type DeepRequired815 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired815 : T[K]; +type Path_0815 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0815}` }[keyof T & string] : never; +type EP_0815 = Path_0815; + +type Val_0815 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0815 } + : T[K] extends object ? { t: 'o'; props: Val_0815 } + : { t: 'u' }; }; -type FR815 = DeepReadonly815>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion815 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha815 = Extract; -type ExcludeZulu815 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA815 { width: number; height: number; depth: number } -interface ShapeB815 { color: string; opacity: number; blend: string } -interface ShapeC815 { x: number; y: number; z: number; w: number } -interface ShapeD815 { label: string; title: string; summary: string } - -type Combined815 = ShapeA815 & ShapeB815 & ShapeC815 & ShapeD815; -type OptionalAll815 = { [K in keyof Combined815]?: Combined815[K] }; -type RequiredAll815 = { [K in keyof Combined815]-?: Combined815[K] }; -type ReadonlyAll815 = { readonly [K in keyof Combined815]: Combined815[K] }; -type NullableAll815 = { [K in keyof Combined815]: Combined815[K] | null }; +type EV_0815 = Val_0815; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString815 = T extends string ? true : false; -type IsNumber815 = T extends number ? true : false; -type TypeName815 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames815 = { - [K in keyof BigRecord815]: TypeName815; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb815 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource815 = "user" | "post" | "comment" | "tag" | "category"; -type Action815 = `${Verb815}_${Resource815}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise815 = T extends Promise ? UnwrapPromise815 : T; -type UnwrapArray815 = T extends (infer U)[] ? UnwrapArray815 : T; -type Head815 = T extends [infer H, ...infer _] ? H : never; -type Tail815 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation815 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation815>] - : never; +interface Registry_08_15 { + entities: Map; + validators: EV_0815; + paths: Set; + merged: DeepMerge_0815; +} -type SmallUnion815 = "a" | "b" | "c" | "d"; -type AllPerms815 = Permutation815; +type CK_0815 = `p08.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig815, - Flat815, - FR815, - BigUnion815, - ExtractAlpha815, - ExcludeZulu815, - OptionalAll815, - RequiredAll815, - ReadonlyAll815, - NullableAll815, - TypeNames815, - Action815, - AllPerms815, -}; +export type { Entity_08_15, Registry_08_15, CK_0815, EP_0815, EV_0815, DeepMerge_0815 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts index fb31f2db..9ba02422 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-16.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-16 (seed 816) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-16 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0816 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0816 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord816 { - a816: { x: number; y: string; z: boolean }; - b816: { p: string[]; q: Record }; - c816: { nested: { deep: { deeper: { deepest: string } } } }; - d816: number; - e816: string; - f816: boolean; - g816: null; - h816: undefined; - i816: bigint; - j816: symbol; +interface Entity_08_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_16 | null; children: Entity_08_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0816: number; y0816: string; z0816: boolean }; } -type PartialBig816 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten816 = T extends Array ? Flatten816 : T; -type Nested816 = number[][][][][][][][][][]; -type Flat816 = Flatten816; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly816 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly816 : T[K]; -}; -type DeepRequired816 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired816 : T[K]; +type Path_0816 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0816}` }[keyof T & string] : never; +type EP_0816 = Path_0816; + +type Val_0816 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0816 } + : T[K] extends object ? { t: 'o'; props: Val_0816 } + : { t: 'u' }; }; -type FR816 = DeepReadonly816>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion816 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha816 = Extract; -type ExcludeZulu816 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA816 { width: number; height: number; depth: number } -interface ShapeB816 { color: string; opacity: number; blend: string } -interface ShapeC816 { x: number; y: number; z: number; w: number } -interface ShapeD816 { label: string; title: string; summary: string } - -type Combined816 = ShapeA816 & ShapeB816 & ShapeC816 & ShapeD816; -type OptionalAll816 = { [K in keyof Combined816]?: Combined816[K] }; -type RequiredAll816 = { [K in keyof Combined816]-?: Combined816[K] }; -type ReadonlyAll816 = { readonly [K in keyof Combined816]: Combined816[K] }; -type NullableAll816 = { [K in keyof Combined816]: Combined816[K] | null }; +type EV_0816 = Val_0816; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString816 = T extends string ? true : false; -type IsNumber816 = T extends number ? true : false; -type TypeName816 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames816 = { - [K in keyof BigRecord816]: TypeName816; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb816 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource816 = "user" | "post" | "comment" | "tag" | "category"; -type Action816 = `${Verb816}_${Resource816}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise816 = T extends Promise ? UnwrapPromise816 : T; -type UnwrapArray816 = T extends (infer U)[] ? UnwrapArray816 : T; -type Head816 = T extends [infer H, ...infer _] ? H : never; -type Tail816 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation816 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation816>] - : never; +interface Registry_08_16 { + entities: Map; + validators: EV_0816; + paths: Set; + merged: DeepMerge_0816; +} -type SmallUnion816 = "a" | "b" | "c" | "d"; -type AllPerms816 = Permutation816; +type CK_0816 = `p08.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig816, - Flat816, - FR816, - BigUnion816, - ExtractAlpha816, - ExcludeZulu816, - OptionalAll816, - RequiredAll816, - ReadonlyAll816, - NullableAll816, - TypeNames816, - Action816, - AllPerms816, -}; +export type { Entity_08_16, Registry_08_16, CK_0816, EP_0816, EV_0816, DeepMerge_0816 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts index 7f64ab16..b9301704 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-17.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-17 (seed 817) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-17 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0817 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0817 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord817 { - a817: { x: number; y: string; z: boolean }; - b817: { p: string[]; q: Record }; - c817: { nested: { deep: { deeper: { deepest: string } } } }; - d817: number; - e817: string; - f817: boolean; - g817: null; - h817: undefined; - i817: bigint; - j817: symbol; +interface Entity_08_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_17 | null; children: Entity_08_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0817: number; y0817: string; z0817: boolean }; } -type PartialBig817 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten817 = T extends Array ? Flatten817 : T; -type Nested817 = number[][][][][][][][][][]; -type Flat817 = Flatten817; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly817 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly817 : T[K]; -}; -type DeepRequired817 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired817 : T[K]; +type Path_0817 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0817}` }[keyof T & string] : never; +type EP_0817 = Path_0817; + +type Val_0817 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0817 } + : T[K] extends object ? { t: 'o'; props: Val_0817 } + : { t: 'u' }; }; -type FR817 = DeepReadonly817>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion817 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha817 = Extract; -type ExcludeZulu817 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA817 { width: number; height: number; depth: number } -interface ShapeB817 { color: string; opacity: number; blend: string } -interface ShapeC817 { x: number; y: number; z: number; w: number } -interface ShapeD817 { label: string; title: string; summary: string } - -type Combined817 = ShapeA817 & ShapeB817 & ShapeC817 & ShapeD817; -type OptionalAll817 = { [K in keyof Combined817]?: Combined817[K] }; -type RequiredAll817 = { [K in keyof Combined817]-?: Combined817[K] }; -type ReadonlyAll817 = { readonly [K in keyof Combined817]: Combined817[K] }; -type NullableAll817 = { [K in keyof Combined817]: Combined817[K] | null }; +type EV_0817 = Val_0817; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString817 = T extends string ? true : false; -type IsNumber817 = T extends number ? true : false; -type TypeName817 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames817 = { - [K in keyof BigRecord817]: TypeName817; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb817 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource817 = "user" | "post" | "comment" | "tag" | "category"; -type Action817 = `${Verb817}_${Resource817}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise817 = T extends Promise ? UnwrapPromise817 : T; -type UnwrapArray817 = T extends (infer U)[] ? UnwrapArray817 : T; -type Head817 = T extends [infer H, ...infer _] ? H : never; -type Tail817 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation817 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation817>] - : never; +interface Registry_08_17 { + entities: Map; + validators: EV_0817; + paths: Set; + merged: DeepMerge_0817; +} -type SmallUnion817 = "a" | "b" | "c" | "d"; -type AllPerms817 = Permutation817; +type CK_0817 = `p08.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig817, - Flat817, - FR817, - BigUnion817, - ExtractAlpha817, - ExcludeZulu817, - OptionalAll817, - RequiredAll817, - ReadonlyAll817, - NullableAll817, - TypeNames817, - Action817, - AllPerms817, -}; +export type { Entity_08_17, Registry_08_17, CK_0817, EP_0817, EV_0817, DeepMerge_0817 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts index 83c7ece2..31ac6e25 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-18.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-18 (seed 818) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-18 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0818 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0818 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord818 { - a818: { x: number; y: string; z: boolean }; - b818: { p: string[]; q: Record }; - c818: { nested: { deep: { deeper: { deepest: string } } } }; - d818: number; - e818: string; - f818: boolean; - g818: null; - h818: undefined; - i818: bigint; - j818: symbol; +interface Entity_08_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_18 | null; children: Entity_08_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0818: number; y0818: string; z0818: boolean }; } -type PartialBig818 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten818 = T extends Array ? Flatten818 : T; -type Nested818 = number[][][][][][][][][][]; -type Flat818 = Flatten818; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly818 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly818 : T[K]; -}; -type DeepRequired818 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired818 : T[K]; +type Path_0818 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0818}` }[keyof T & string] : never; +type EP_0818 = Path_0818; + +type Val_0818 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0818 } + : T[K] extends object ? { t: 'o'; props: Val_0818 } + : { t: 'u' }; }; -type FR818 = DeepReadonly818>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion818 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha818 = Extract; -type ExcludeZulu818 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA818 { width: number; height: number; depth: number } -interface ShapeB818 { color: string; opacity: number; blend: string } -interface ShapeC818 { x: number; y: number; z: number; w: number } -interface ShapeD818 { label: string; title: string; summary: string } - -type Combined818 = ShapeA818 & ShapeB818 & ShapeC818 & ShapeD818; -type OptionalAll818 = { [K in keyof Combined818]?: Combined818[K] }; -type RequiredAll818 = { [K in keyof Combined818]-?: Combined818[K] }; -type ReadonlyAll818 = { readonly [K in keyof Combined818]: Combined818[K] }; -type NullableAll818 = { [K in keyof Combined818]: Combined818[K] | null }; +type EV_0818 = Val_0818; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString818 = T extends string ? true : false; -type IsNumber818 = T extends number ? true : false; -type TypeName818 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames818 = { - [K in keyof BigRecord818]: TypeName818; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb818 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource818 = "user" | "post" | "comment" | "tag" | "category"; -type Action818 = `${Verb818}_${Resource818}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise818 = T extends Promise ? UnwrapPromise818 : T; -type UnwrapArray818 = T extends (infer U)[] ? UnwrapArray818 : T; -type Head818 = T extends [infer H, ...infer _] ? H : never; -type Tail818 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation818 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation818>] - : never; +interface Registry_08_18 { + entities: Map; + validators: EV_0818; + paths: Set; + merged: DeepMerge_0818; +} -type SmallUnion818 = "a" | "b" | "c" | "d"; -type AllPerms818 = Permutation818; +type CK_0818 = `p08.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig818, - Flat818, - FR818, - BigUnion818, - ExtractAlpha818, - ExcludeZulu818, - OptionalAll818, - RequiredAll818, - ReadonlyAll818, - NullableAll818, - TypeNames818, - Action818, - AllPerms818, -}; +export type { Entity_08_18, Registry_08_18, CK_0818, EP_0818, EV_0818, DeepMerge_0818 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts index 535a3c90..14f7da9c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-19.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-19 (seed 819) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-19 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0819 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0819 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord819 { - a819: { x: number; y: string; z: boolean }; - b819: { p: string[]; q: Record }; - c819: { nested: { deep: { deeper: { deepest: string } } } }; - d819: number; - e819: string; - f819: boolean; - g819: null; - h819: undefined; - i819: bigint; - j819: symbol; +interface Entity_08_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_19 | null; children: Entity_08_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0819: number; y0819: string; z0819: boolean }; } -type PartialBig819 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten819 = T extends Array ? Flatten819 : T; -type Nested819 = number[][][][][][][][][][]; -type Flat819 = Flatten819; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly819 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly819 : T[K]; -}; -type DeepRequired819 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired819 : T[K]; +type Path_0819 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0819}` }[keyof T & string] : never; +type EP_0819 = Path_0819; + +type Val_0819 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0819 } + : T[K] extends object ? { t: 'o'; props: Val_0819 } + : { t: 'u' }; }; -type FR819 = DeepReadonly819>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion819 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha819 = Extract; -type ExcludeZulu819 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA819 { width: number; height: number; depth: number } -interface ShapeB819 { color: string; opacity: number; blend: string } -interface ShapeC819 { x: number; y: number; z: number; w: number } -interface ShapeD819 { label: string; title: string; summary: string } - -type Combined819 = ShapeA819 & ShapeB819 & ShapeC819 & ShapeD819; -type OptionalAll819 = { [K in keyof Combined819]?: Combined819[K] }; -type RequiredAll819 = { [K in keyof Combined819]-?: Combined819[K] }; -type ReadonlyAll819 = { readonly [K in keyof Combined819]: Combined819[K] }; -type NullableAll819 = { [K in keyof Combined819]: Combined819[K] | null }; +type EV_0819 = Val_0819; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString819 = T extends string ? true : false; -type IsNumber819 = T extends number ? true : false; -type TypeName819 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames819 = { - [K in keyof BigRecord819]: TypeName819; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb819 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource819 = "user" | "post" | "comment" | "tag" | "category"; -type Action819 = `${Verb819}_${Resource819}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise819 = T extends Promise ? UnwrapPromise819 : T; -type UnwrapArray819 = T extends (infer U)[] ? UnwrapArray819 : T; -type Head819 = T extends [infer H, ...infer _] ? H : never; -type Tail819 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation819 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation819>] - : never; +interface Registry_08_19 { + entities: Map; + validators: EV_0819; + paths: Set; + merged: DeepMerge_0819; +} -type SmallUnion819 = "a" | "b" | "c" | "d"; -type AllPerms819 = Permutation819; +type CK_0819 = `p08.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig819, - Flat819, - FR819, - BigUnion819, - ExtractAlpha819, - ExcludeZulu819, - OptionalAll819, - RequiredAll819, - ReadonlyAll819, - NullableAll819, - TypeNames819, - Action819, - AllPerms819, -}; +export type { Entity_08_19, Registry_08_19, CK_0819, EP_0819, EV_0819, DeepMerge_0819 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts index 306fb52a..19cac531 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-20.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-20 (seed 820) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-20 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0820 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0820 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord820 { - a820: { x: number; y: string; z: boolean }; - b820: { p: string[]; q: Record }; - c820: { nested: { deep: { deeper: { deepest: string } } } }; - d820: number; - e820: string; - f820: boolean; - g820: null; - h820: undefined; - i820: bigint; - j820: symbol; +interface Entity_08_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_20 | null; children: Entity_08_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0820: number; y0820: string; z0820: boolean }; } -type PartialBig820 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten820 = T extends Array ? Flatten820 : T; -type Nested820 = number[][][][][][][][][][]; -type Flat820 = Flatten820; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly820 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly820 : T[K]; -}; -type DeepRequired820 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired820 : T[K]; +type Path_0820 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0820}` }[keyof T & string] : never; +type EP_0820 = Path_0820; + +type Val_0820 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0820 } + : T[K] extends object ? { t: 'o'; props: Val_0820 } + : { t: 'u' }; }; -type FR820 = DeepReadonly820>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion820 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha820 = Extract; -type ExcludeZulu820 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA820 { width: number; height: number; depth: number } -interface ShapeB820 { color: string; opacity: number; blend: string } -interface ShapeC820 { x: number; y: number; z: number; w: number } -interface ShapeD820 { label: string; title: string; summary: string } - -type Combined820 = ShapeA820 & ShapeB820 & ShapeC820 & ShapeD820; -type OptionalAll820 = { [K in keyof Combined820]?: Combined820[K] }; -type RequiredAll820 = { [K in keyof Combined820]-?: Combined820[K] }; -type ReadonlyAll820 = { readonly [K in keyof Combined820]: Combined820[K] }; -type NullableAll820 = { [K in keyof Combined820]: Combined820[K] | null }; +type EV_0820 = Val_0820; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString820 = T extends string ? true : false; -type IsNumber820 = T extends number ? true : false; -type TypeName820 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames820 = { - [K in keyof BigRecord820]: TypeName820; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb820 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource820 = "user" | "post" | "comment" | "tag" | "category"; -type Action820 = `${Verb820}_${Resource820}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise820 = T extends Promise ? UnwrapPromise820 : T; -type UnwrapArray820 = T extends (infer U)[] ? UnwrapArray820 : T; -type Head820 = T extends [infer H, ...infer _] ? H : never; -type Tail820 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation820 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation820>] - : never; +interface Registry_08_20 { + entities: Map; + validators: EV_0820; + paths: Set; + merged: DeepMerge_0820; +} -type SmallUnion820 = "a" | "b" | "c" | "d"; -type AllPerms820 = Permutation820; +type CK_0820 = `p08.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig820, - Flat820, - FR820, - BigUnion820, - ExtractAlpha820, - ExcludeZulu820, - OptionalAll820, - RequiredAll820, - ReadonlyAll820, - NullableAll820, - TypeNames820, - Action820, - AllPerms820, -}; +export type { Entity_08_20, Registry_08_20, CK_0820, EP_0820, EV_0820, DeepMerge_0820 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts index f006d08b..e74927c9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-21.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-21 (seed 821) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-21 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0821 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0821 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord821 { - a821: { x: number; y: string; z: boolean }; - b821: { p: string[]; q: Record }; - c821: { nested: { deep: { deeper: { deepest: string } } } }; - d821: number; - e821: string; - f821: boolean; - g821: null; - h821: undefined; - i821: bigint; - j821: symbol; +interface Entity_08_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_21 | null; children: Entity_08_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0821: number; y0821: string; z0821: boolean }; } -type PartialBig821 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten821 = T extends Array ? Flatten821 : T; -type Nested821 = number[][][][][][][][][][]; -type Flat821 = Flatten821; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly821 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly821 : T[K]; -}; -type DeepRequired821 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired821 : T[K]; +type Path_0821 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0821}` }[keyof T & string] : never; +type EP_0821 = Path_0821; + +type Val_0821 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0821 } + : T[K] extends object ? { t: 'o'; props: Val_0821 } + : { t: 'u' }; }; -type FR821 = DeepReadonly821>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion821 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha821 = Extract; -type ExcludeZulu821 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA821 { width: number; height: number; depth: number } -interface ShapeB821 { color: string; opacity: number; blend: string } -interface ShapeC821 { x: number; y: number; z: number; w: number } -interface ShapeD821 { label: string; title: string; summary: string } - -type Combined821 = ShapeA821 & ShapeB821 & ShapeC821 & ShapeD821; -type OptionalAll821 = { [K in keyof Combined821]?: Combined821[K] }; -type RequiredAll821 = { [K in keyof Combined821]-?: Combined821[K] }; -type ReadonlyAll821 = { readonly [K in keyof Combined821]: Combined821[K] }; -type NullableAll821 = { [K in keyof Combined821]: Combined821[K] | null }; +type EV_0821 = Val_0821; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString821 = T extends string ? true : false; -type IsNumber821 = T extends number ? true : false; -type TypeName821 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames821 = { - [K in keyof BigRecord821]: TypeName821; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb821 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource821 = "user" | "post" | "comment" | "tag" | "category"; -type Action821 = `${Verb821}_${Resource821}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise821 = T extends Promise ? UnwrapPromise821 : T; -type UnwrapArray821 = T extends (infer U)[] ? UnwrapArray821 : T; -type Head821 = T extends [infer H, ...infer _] ? H : never; -type Tail821 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation821 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation821>] - : never; +interface Registry_08_21 { + entities: Map; + validators: EV_0821; + paths: Set; + merged: DeepMerge_0821; +} -type SmallUnion821 = "a" | "b" | "c" | "d"; -type AllPerms821 = Permutation821; +type CK_0821 = `p08.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig821, - Flat821, - FR821, - BigUnion821, - ExtractAlpha821, - ExcludeZulu821, - OptionalAll821, - RequiredAll821, - ReadonlyAll821, - NullableAll821, - TypeNames821, - Action821, - AllPerms821, -}; +export type { Entity_08_21, Registry_08_21, CK_0821, EP_0821, EV_0821, DeepMerge_0821 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts index dbdac775..4c0a165f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-22.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-22 (seed 822) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-22 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0822 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0822 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord822 { - a822: { x: number; y: string; z: boolean }; - b822: { p: string[]; q: Record }; - c822: { nested: { deep: { deeper: { deepest: string } } } }; - d822: number; - e822: string; - f822: boolean; - g822: null; - h822: undefined; - i822: bigint; - j822: symbol; +interface Entity_08_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_22 | null; children: Entity_08_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0822: number; y0822: string; z0822: boolean }; } -type PartialBig822 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten822 = T extends Array ? Flatten822 : T; -type Nested822 = number[][][][][][][][][][]; -type Flat822 = Flatten822; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly822 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly822 : T[K]; -}; -type DeepRequired822 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired822 : T[K]; +type Path_0822 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0822}` }[keyof T & string] : never; +type EP_0822 = Path_0822; + +type Val_0822 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0822 } + : T[K] extends object ? { t: 'o'; props: Val_0822 } + : { t: 'u' }; }; -type FR822 = DeepReadonly822>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion822 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha822 = Extract; -type ExcludeZulu822 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA822 { width: number; height: number; depth: number } -interface ShapeB822 { color: string; opacity: number; blend: string } -interface ShapeC822 { x: number; y: number; z: number; w: number } -interface ShapeD822 { label: string; title: string; summary: string } - -type Combined822 = ShapeA822 & ShapeB822 & ShapeC822 & ShapeD822; -type OptionalAll822 = { [K in keyof Combined822]?: Combined822[K] }; -type RequiredAll822 = { [K in keyof Combined822]-?: Combined822[K] }; -type ReadonlyAll822 = { readonly [K in keyof Combined822]: Combined822[K] }; -type NullableAll822 = { [K in keyof Combined822]: Combined822[K] | null }; +type EV_0822 = Val_0822; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString822 = T extends string ? true : false; -type IsNumber822 = T extends number ? true : false; -type TypeName822 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames822 = { - [K in keyof BigRecord822]: TypeName822; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb822 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource822 = "user" | "post" | "comment" | "tag" | "category"; -type Action822 = `${Verb822}_${Resource822}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise822 = T extends Promise ? UnwrapPromise822 : T; -type UnwrapArray822 = T extends (infer U)[] ? UnwrapArray822 : T; -type Head822 = T extends [infer H, ...infer _] ? H : never; -type Tail822 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation822 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation822>] - : never; +interface Registry_08_22 { + entities: Map; + validators: EV_0822; + paths: Set; + merged: DeepMerge_0822; +} -type SmallUnion822 = "a" | "b" | "c" | "d"; -type AllPerms822 = Permutation822; +type CK_0822 = `p08.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig822, - Flat822, - FR822, - BigUnion822, - ExtractAlpha822, - ExcludeZulu822, - OptionalAll822, - RequiredAll822, - ReadonlyAll822, - NullableAll822, - TypeNames822, - Action822, - AllPerms822, -}; +export type { Entity_08_22, Registry_08_22, CK_0822, EP_0822, EV_0822, DeepMerge_0822 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts index 873aca02..220b6ead 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-23.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-23 (seed 823) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-23 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0823 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0823 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord823 { - a823: { x: number; y: string; z: boolean }; - b823: { p: string[]; q: Record }; - c823: { nested: { deep: { deeper: { deepest: string } } } }; - d823: number; - e823: string; - f823: boolean; - g823: null; - h823: undefined; - i823: bigint; - j823: symbol; +interface Entity_08_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_23 | null; children: Entity_08_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0823: number; y0823: string; z0823: boolean }; } -type PartialBig823 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten823 = T extends Array ? Flatten823 : T; -type Nested823 = number[][][][][][][][][][]; -type Flat823 = Flatten823; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly823 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly823 : T[K]; -}; -type DeepRequired823 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired823 : T[K]; +type Path_0823 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0823}` }[keyof T & string] : never; +type EP_0823 = Path_0823; + +type Val_0823 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0823 } + : T[K] extends object ? { t: 'o'; props: Val_0823 } + : { t: 'u' }; }; -type FR823 = DeepReadonly823>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion823 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha823 = Extract; -type ExcludeZulu823 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA823 { width: number; height: number; depth: number } -interface ShapeB823 { color: string; opacity: number; blend: string } -interface ShapeC823 { x: number; y: number; z: number; w: number } -interface ShapeD823 { label: string; title: string; summary: string } - -type Combined823 = ShapeA823 & ShapeB823 & ShapeC823 & ShapeD823; -type OptionalAll823 = { [K in keyof Combined823]?: Combined823[K] }; -type RequiredAll823 = { [K in keyof Combined823]-?: Combined823[K] }; -type ReadonlyAll823 = { readonly [K in keyof Combined823]: Combined823[K] }; -type NullableAll823 = { [K in keyof Combined823]: Combined823[K] | null }; +type EV_0823 = Val_0823; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString823 = T extends string ? true : false; -type IsNumber823 = T extends number ? true : false; -type TypeName823 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames823 = { - [K in keyof BigRecord823]: TypeName823; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb823 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource823 = "user" | "post" | "comment" | "tag" | "category"; -type Action823 = `${Verb823}_${Resource823}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise823 = T extends Promise ? UnwrapPromise823 : T; -type UnwrapArray823 = T extends (infer U)[] ? UnwrapArray823 : T; -type Head823 = T extends [infer H, ...infer _] ? H : never; -type Tail823 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation823 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation823>] - : never; +interface Registry_08_23 { + entities: Map; + validators: EV_0823; + paths: Set; + merged: DeepMerge_0823; +} -type SmallUnion823 = "a" | "b" | "c" | "d"; -type AllPerms823 = Permutation823; +type CK_0823 = `p08.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig823, - Flat823, - FR823, - BigUnion823, - ExtractAlpha823, - ExcludeZulu823, - OptionalAll823, - RequiredAll823, - ReadonlyAll823, - NullableAll823, - TypeNames823, - Action823, - AllPerms823, -}; +export type { Entity_08_23, Registry_08_23, CK_0823, EP_0823, EV_0823, DeepMerge_0823 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts index dba36b93..1f842f97 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-24.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-24 (seed 824) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-24 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0824 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0824 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord824 { - a824: { x: number; y: string; z: boolean }; - b824: { p: string[]; q: Record }; - c824: { nested: { deep: { deeper: { deepest: string } } } }; - d824: number; - e824: string; - f824: boolean; - g824: null; - h824: undefined; - i824: bigint; - j824: symbol; +interface Entity_08_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_24 | null; children: Entity_08_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0824: number; y0824: string; z0824: boolean }; } -type PartialBig824 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten824 = T extends Array ? Flatten824 : T; -type Nested824 = number[][][][][][][][][][]; -type Flat824 = Flatten824; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly824 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly824 : T[K]; -}; -type DeepRequired824 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired824 : T[K]; +type Path_0824 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0824}` }[keyof T & string] : never; +type EP_0824 = Path_0824; + +type Val_0824 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0824 } + : T[K] extends object ? { t: 'o'; props: Val_0824 } + : { t: 'u' }; }; -type FR824 = DeepReadonly824>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion824 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha824 = Extract; -type ExcludeZulu824 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA824 { width: number; height: number; depth: number } -interface ShapeB824 { color: string; opacity: number; blend: string } -interface ShapeC824 { x: number; y: number; z: number; w: number } -interface ShapeD824 { label: string; title: string; summary: string } - -type Combined824 = ShapeA824 & ShapeB824 & ShapeC824 & ShapeD824; -type OptionalAll824 = { [K in keyof Combined824]?: Combined824[K] }; -type RequiredAll824 = { [K in keyof Combined824]-?: Combined824[K] }; -type ReadonlyAll824 = { readonly [K in keyof Combined824]: Combined824[K] }; -type NullableAll824 = { [K in keyof Combined824]: Combined824[K] | null }; +type EV_0824 = Val_0824; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString824 = T extends string ? true : false; -type IsNumber824 = T extends number ? true : false; -type TypeName824 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames824 = { - [K in keyof BigRecord824]: TypeName824; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb824 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource824 = "user" | "post" | "comment" | "tag" | "category"; -type Action824 = `${Verb824}_${Resource824}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise824 = T extends Promise ? UnwrapPromise824 : T; -type UnwrapArray824 = T extends (infer U)[] ? UnwrapArray824 : T; -type Head824 = T extends [infer H, ...infer _] ? H : never; -type Tail824 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation824 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation824>] - : never; +interface Registry_08_24 { + entities: Map; + validators: EV_0824; + paths: Set; + merged: DeepMerge_0824; +} -type SmallUnion824 = "a" | "b" | "c" | "d"; -type AllPerms824 = Permutation824; +type CK_0824 = `p08.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig824, - Flat824, - FR824, - BigUnion824, - ExtractAlpha824, - ExcludeZulu824, - OptionalAll824, - RequiredAll824, - ReadonlyAll824, - NullableAll824, - TypeNames824, - Action824, - AllPerms824, -}; +export type { Entity_08_24, Registry_08_24, CK_0824, EP_0824, EV_0824, DeepMerge_0824 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts index 5f248b63..5202e33c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-25.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-25 (seed 825) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-25 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0825 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0825 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord825 { - a825: { x: number; y: string; z: boolean }; - b825: { p: string[]; q: Record }; - c825: { nested: { deep: { deeper: { deepest: string } } } }; - d825: number; - e825: string; - f825: boolean; - g825: null; - h825: undefined; - i825: bigint; - j825: symbol; +interface Entity_08_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_25 | null; children: Entity_08_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0825: number; y0825: string; z0825: boolean }; } -type PartialBig825 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten825 = T extends Array ? Flatten825 : T; -type Nested825 = number[][][][][][][][][][]; -type Flat825 = Flatten825; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly825 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly825 : T[K]; -}; -type DeepRequired825 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired825 : T[K]; +type Path_0825 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0825}` }[keyof T & string] : never; +type EP_0825 = Path_0825; + +type Val_0825 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0825 } + : T[K] extends object ? { t: 'o'; props: Val_0825 } + : { t: 'u' }; }; -type FR825 = DeepReadonly825>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion825 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha825 = Extract; -type ExcludeZulu825 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA825 { width: number; height: number; depth: number } -interface ShapeB825 { color: string; opacity: number; blend: string } -interface ShapeC825 { x: number; y: number; z: number; w: number } -interface ShapeD825 { label: string; title: string; summary: string } - -type Combined825 = ShapeA825 & ShapeB825 & ShapeC825 & ShapeD825; -type OptionalAll825 = { [K in keyof Combined825]?: Combined825[K] }; -type RequiredAll825 = { [K in keyof Combined825]-?: Combined825[K] }; -type ReadonlyAll825 = { readonly [K in keyof Combined825]: Combined825[K] }; -type NullableAll825 = { [K in keyof Combined825]: Combined825[K] | null }; +type EV_0825 = Val_0825; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString825 = T extends string ? true : false; -type IsNumber825 = T extends number ? true : false; -type TypeName825 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames825 = { - [K in keyof BigRecord825]: TypeName825; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb825 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource825 = "user" | "post" | "comment" | "tag" | "category"; -type Action825 = `${Verb825}_${Resource825}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise825 = T extends Promise ? UnwrapPromise825 : T; -type UnwrapArray825 = T extends (infer U)[] ? UnwrapArray825 : T; -type Head825 = T extends [infer H, ...infer _] ? H : never; -type Tail825 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation825 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation825>] - : never; +interface Registry_08_25 { + entities: Map; + validators: EV_0825; + paths: Set; + merged: DeepMerge_0825; +} -type SmallUnion825 = "a" | "b" | "c" | "d"; -type AllPerms825 = Permutation825; +type CK_0825 = `p08.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig825, - Flat825, - FR825, - BigUnion825, - ExtractAlpha825, - ExcludeZulu825, - OptionalAll825, - RequiredAll825, - ReadonlyAll825, - NullableAll825, - TypeNames825, - Action825, - AllPerms825, -}; +export type { Entity_08_25, Registry_08_25, CK_0825, EP_0825, EV_0825, DeepMerge_0825 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts index 8368a391..20535e7a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-26.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-26 (seed 826) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-26 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0826 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0826 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord826 { - a826: { x: number; y: string; z: boolean }; - b826: { p: string[]; q: Record }; - c826: { nested: { deep: { deeper: { deepest: string } } } }; - d826: number; - e826: string; - f826: boolean; - g826: null; - h826: undefined; - i826: bigint; - j826: symbol; +interface Entity_08_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_26 | null; children: Entity_08_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0826: number; y0826: string; z0826: boolean }; } -type PartialBig826 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten826 = T extends Array ? Flatten826 : T; -type Nested826 = number[][][][][][][][][][]; -type Flat826 = Flatten826; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly826 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly826 : T[K]; -}; -type DeepRequired826 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired826 : T[K]; +type Path_0826 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0826}` }[keyof T & string] : never; +type EP_0826 = Path_0826; + +type Val_0826 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0826 } + : T[K] extends object ? { t: 'o'; props: Val_0826 } + : { t: 'u' }; }; -type FR826 = DeepReadonly826>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion826 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha826 = Extract; -type ExcludeZulu826 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA826 { width: number; height: number; depth: number } -interface ShapeB826 { color: string; opacity: number; blend: string } -interface ShapeC826 { x: number; y: number; z: number; w: number } -interface ShapeD826 { label: string; title: string; summary: string } - -type Combined826 = ShapeA826 & ShapeB826 & ShapeC826 & ShapeD826; -type OptionalAll826 = { [K in keyof Combined826]?: Combined826[K] }; -type RequiredAll826 = { [K in keyof Combined826]-?: Combined826[K] }; -type ReadonlyAll826 = { readonly [K in keyof Combined826]: Combined826[K] }; -type NullableAll826 = { [K in keyof Combined826]: Combined826[K] | null }; +type EV_0826 = Val_0826; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString826 = T extends string ? true : false; -type IsNumber826 = T extends number ? true : false; -type TypeName826 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames826 = { - [K in keyof BigRecord826]: TypeName826; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb826 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource826 = "user" | "post" | "comment" | "tag" | "category"; -type Action826 = `${Verb826}_${Resource826}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise826 = T extends Promise ? UnwrapPromise826 : T; -type UnwrapArray826 = T extends (infer U)[] ? UnwrapArray826 : T; -type Head826 = T extends [infer H, ...infer _] ? H : never; -type Tail826 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation826 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation826>] - : never; +interface Registry_08_26 { + entities: Map; + validators: EV_0826; + paths: Set; + merged: DeepMerge_0826; +} -type SmallUnion826 = "a" | "b" | "c" | "d"; -type AllPerms826 = Permutation826; +type CK_0826 = `p08.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig826, - Flat826, - FR826, - BigUnion826, - ExtractAlpha826, - ExcludeZulu826, - OptionalAll826, - RequiredAll826, - ReadonlyAll826, - NullableAll826, - TypeNames826, - Action826, - AllPerms826, -}; +export type { Entity_08_26, Registry_08_26, CK_0826, EP_0826, EV_0826, DeepMerge_0826 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts index 98024d4a..4c14e429 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-27.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-27 (seed 827) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-27 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0827 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0827 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord827 { - a827: { x: number; y: string; z: boolean }; - b827: { p: string[]; q: Record }; - c827: { nested: { deep: { deeper: { deepest: string } } } }; - d827: number; - e827: string; - f827: boolean; - g827: null; - h827: undefined; - i827: bigint; - j827: symbol; +interface Entity_08_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_27 | null; children: Entity_08_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0827: number; y0827: string; z0827: boolean }; } -type PartialBig827 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten827 = T extends Array ? Flatten827 : T; -type Nested827 = number[][][][][][][][][][]; -type Flat827 = Flatten827; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly827 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly827 : T[K]; -}; -type DeepRequired827 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired827 : T[K]; +type Path_0827 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0827}` }[keyof T & string] : never; +type EP_0827 = Path_0827; + +type Val_0827 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0827 } + : T[K] extends object ? { t: 'o'; props: Val_0827 } + : { t: 'u' }; }; -type FR827 = DeepReadonly827>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion827 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha827 = Extract; -type ExcludeZulu827 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA827 { width: number; height: number; depth: number } -interface ShapeB827 { color: string; opacity: number; blend: string } -interface ShapeC827 { x: number; y: number; z: number; w: number } -interface ShapeD827 { label: string; title: string; summary: string } - -type Combined827 = ShapeA827 & ShapeB827 & ShapeC827 & ShapeD827; -type OptionalAll827 = { [K in keyof Combined827]?: Combined827[K] }; -type RequiredAll827 = { [K in keyof Combined827]-?: Combined827[K] }; -type ReadonlyAll827 = { readonly [K in keyof Combined827]: Combined827[K] }; -type NullableAll827 = { [K in keyof Combined827]: Combined827[K] | null }; +type EV_0827 = Val_0827; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString827 = T extends string ? true : false; -type IsNumber827 = T extends number ? true : false; -type TypeName827 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames827 = { - [K in keyof BigRecord827]: TypeName827; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb827 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource827 = "user" | "post" | "comment" | "tag" | "category"; -type Action827 = `${Verb827}_${Resource827}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise827 = T extends Promise ? UnwrapPromise827 : T; -type UnwrapArray827 = T extends (infer U)[] ? UnwrapArray827 : T; -type Head827 = T extends [infer H, ...infer _] ? H : never; -type Tail827 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation827 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation827>] - : never; +interface Registry_08_27 { + entities: Map; + validators: EV_0827; + paths: Set; + merged: DeepMerge_0827; +} -type SmallUnion827 = "a" | "b" | "c" | "d"; -type AllPerms827 = Permutation827; +type CK_0827 = `p08.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig827, - Flat827, - FR827, - BigUnion827, - ExtractAlpha827, - ExcludeZulu827, - OptionalAll827, - RequiredAll827, - ReadonlyAll827, - NullableAll827, - TypeNames827, - Action827, - AllPerms827, -}; +export type { Entity_08_27, Registry_08_27, CK_0827, EP_0827, EV_0827, DeepMerge_0827 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts index 48f18732..a312dc58 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-28.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-28 (seed 828) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-28 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0828 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0828 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord828 { - a828: { x: number; y: string; z: boolean }; - b828: { p: string[]; q: Record }; - c828: { nested: { deep: { deeper: { deepest: string } } } }; - d828: number; - e828: string; - f828: boolean; - g828: null; - h828: undefined; - i828: bigint; - j828: symbol; +interface Entity_08_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_28 | null; children: Entity_08_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0828: number; y0828: string; z0828: boolean }; } -type PartialBig828 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten828 = T extends Array ? Flatten828 : T; -type Nested828 = number[][][][][][][][][][]; -type Flat828 = Flatten828; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly828 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly828 : T[K]; -}; -type DeepRequired828 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired828 : T[K]; +type Path_0828 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0828}` }[keyof T & string] : never; +type EP_0828 = Path_0828; + +type Val_0828 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0828 } + : T[K] extends object ? { t: 'o'; props: Val_0828 } + : { t: 'u' }; }; -type FR828 = DeepReadonly828>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion828 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha828 = Extract; -type ExcludeZulu828 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA828 { width: number; height: number; depth: number } -interface ShapeB828 { color: string; opacity: number; blend: string } -interface ShapeC828 { x: number; y: number; z: number; w: number } -interface ShapeD828 { label: string; title: string; summary: string } - -type Combined828 = ShapeA828 & ShapeB828 & ShapeC828 & ShapeD828; -type OptionalAll828 = { [K in keyof Combined828]?: Combined828[K] }; -type RequiredAll828 = { [K in keyof Combined828]-?: Combined828[K] }; -type ReadonlyAll828 = { readonly [K in keyof Combined828]: Combined828[K] }; -type NullableAll828 = { [K in keyof Combined828]: Combined828[K] | null }; +type EV_0828 = Val_0828; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString828 = T extends string ? true : false; -type IsNumber828 = T extends number ? true : false; -type TypeName828 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames828 = { - [K in keyof BigRecord828]: TypeName828; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb828 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource828 = "user" | "post" | "comment" | "tag" | "category"; -type Action828 = `${Verb828}_${Resource828}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise828 = T extends Promise ? UnwrapPromise828 : T; -type UnwrapArray828 = T extends (infer U)[] ? UnwrapArray828 : T; -type Head828 = T extends [infer H, ...infer _] ? H : never; -type Tail828 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation828 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation828>] - : never; +interface Registry_08_28 { + entities: Map; + validators: EV_0828; + paths: Set; + merged: DeepMerge_0828; +} -type SmallUnion828 = "a" | "b" | "c" | "d"; -type AllPerms828 = Permutation828; +type CK_0828 = `p08.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig828, - Flat828, - FR828, - BigUnion828, - ExtractAlpha828, - ExcludeZulu828, - OptionalAll828, - RequiredAll828, - ReadonlyAll828, - NullableAll828, - TypeNames828, - Action828, - AllPerms828, -}; +export type { Entity_08_28, Registry_08_28, CK_0828, EP_0828, EV_0828, DeepMerge_0828 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts index 75c3a54c..0297d65c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-29.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-29 (seed 829) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-29 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0829 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0829 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord829 { - a829: { x: number; y: string; z: boolean }; - b829: { p: string[]; q: Record }; - c829: { nested: { deep: { deeper: { deepest: string } } } }; - d829: number; - e829: string; - f829: boolean; - g829: null; - h829: undefined; - i829: bigint; - j829: symbol; +interface Entity_08_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_29 | null; children: Entity_08_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0829: number; y0829: string; z0829: boolean }; } -type PartialBig829 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten829 = T extends Array ? Flatten829 : T; -type Nested829 = number[][][][][][][][][][]; -type Flat829 = Flatten829; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly829 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly829 : T[K]; -}; -type DeepRequired829 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired829 : T[K]; +type Path_0829 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0829}` }[keyof T & string] : never; +type EP_0829 = Path_0829; + +type Val_0829 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0829 } + : T[K] extends object ? { t: 'o'; props: Val_0829 } + : { t: 'u' }; }; -type FR829 = DeepReadonly829>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion829 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha829 = Extract; -type ExcludeZulu829 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA829 { width: number; height: number; depth: number } -interface ShapeB829 { color: string; opacity: number; blend: string } -interface ShapeC829 { x: number; y: number; z: number; w: number } -interface ShapeD829 { label: string; title: string; summary: string } - -type Combined829 = ShapeA829 & ShapeB829 & ShapeC829 & ShapeD829; -type OptionalAll829 = { [K in keyof Combined829]?: Combined829[K] }; -type RequiredAll829 = { [K in keyof Combined829]-?: Combined829[K] }; -type ReadonlyAll829 = { readonly [K in keyof Combined829]: Combined829[K] }; -type NullableAll829 = { [K in keyof Combined829]: Combined829[K] | null }; +type EV_0829 = Val_0829; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString829 = T extends string ? true : false; -type IsNumber829 = T extends number ? true : false; -type TypeName829 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames829 = { - [K in keyof BigRecord829]: TypeName829; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb829 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource829 = "user" | "post" | "comment" | "tag" | "category"; -type Action829 = `${Verb829}_${Resource829}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise829 = T extends Promise ? UnwrapPromise829 : T; -type UnwrapArray829 = T extends (infer U)[] ? UnwrapArray829 : T; -type Head829 = T extends [infer H, ...infer _] ? H : never; -type Tail829 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation829 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation829>] - : never; +interface Registry_08_29 { + entities: Map; + validators: EV_0829; + paths: Set; + merged: DeepMerge_0829; +} -type SmallUnion829 = "a" | "b" | "c" | "d"; -type AllPerms829 = Permutation829; +type CK_0829 = `p08.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig829, - Flat829, - FR829, - BigUnion829, - ExtractAlpha829, - ExcludeZulu829, - OptionalAll829, - RequiredAll829, - ReadonlyAll829, - NullableAll829, - TypeNames829, - Action829, - AllPerms829, -}; +export type { Entity_08_29, Registry_08_29, CK_0829, EP_0829, EV_0829, DeepMerge_0829 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts index 88d28a0b..40c0c81b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-30.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-30 (seed 830) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-30 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0830 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0830 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord830 { - a830: { x: number; y: string; z: boolean }; - b830: { p: string[]; q: Record }; - c830: { nested: { deep: { deeper: { deepest: string } } } }; - d830: number; - e830: string; - f830: boolean; - g830: null; - h830: undefined; - i830: bigint; - j830: symbol; +interface Entity_08_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_30 | null; children: Entity_08_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0830: number; y0830: string; z0830: boolean }; } -type PartialBig830 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten830 = T extends Array ? Flatten830 : T; -type Nested830 = number[][][][][][][][][][]; -type Flat830 = Flatten830; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly830 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly830 : T[K]; -}; -type DeepRequired830 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired830 : T[K]; +type Path_0830 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0830}` }[keyof T & string] : never; +type EP_0830 = Path_0830; + +type Val_0830 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0830 } + : T[K] extends object ? { t: 'o'; props: Val_0830 } + : { t: 'u' }; }; -type FR830 = DeepReadonly830>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion830 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha830 = Extract; -type ExcludeZulu830 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA830 { width: number; height: number; depth: number } -interface ShapeB830 { color: string; opacity: number; blend: string } -interface ShapeC830 { x: number; y: number; z: number; w: number } -interface ShapeD830 { label: string; title: string; summary: string } - -type Combined830 = ShapeA830 & ShapeB830 & ShapeC830 & ShapeD830; -type OptionalAll830 = { [K in keyof Combined830]?: Combined830[K] }; -type RequiredAll830 = { [K in keyof Combined830]-?: Combined830[K] }; -type ReadonlyAll830 = { readonly [K in keyof Combined830]: Combined830[K] }; -type NullableAll830 = { [K in keyof Combined830]: Combined830[K] | null }; +type EV_0830 = Val_0830; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString830 = T extends string ? true : false; -type IsNumber830 = T extends number ? true : false; -type TypeName830 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames830 = { - [K in keyof BigRecord830]: TypeName830; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb830 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource830 = "user" | "post" | "comment" | "tag" | "category"; -type Action830 = `${Verb830}_${Resource830}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise830 = T extends Promise ? UnwrapPromise830 : T; -type UnwrapArray830 = T extends (infer U)[] ? UnwrapArray830 : T; -type Head830 = T extends [infer H, ...infer _] ? H : never; -type Tail830 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation830 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation830>] - : never; +interface Registry_08_30 { + entities: Map; + validators: EV_0830; + paths: Set; + merged: DeepMerge_0830; +} -type SmallUnion830 = "a" | "b" | "c" | "d"; -type AllPerms830 = Permutation830; +type CK_0830 = `p08.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig830, - Flat830, - FR830, - BigUnion830, - ExtractAlpha830, - ExcludeZulu830, - OptionalAll830, - RequiredAll830, - ReadonlyAll830, - NullableAll830, - TypeNames830, - Action830, - AllPerms830, -}; +export type { Entity_08_30, Registry_08_30, CK_0830, EP_0830, EV_0830, DeepMerge_0830 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts index adce1c88..2c580a9a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-31.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-31 (seed 831) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-31 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0831 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0831 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord831 { - a831: { x: number; y: string; z: boolean }; - b831: { p: string[]; q: Record }; - c831: { nested: { deep: { deeper: { deepest: string } } } }; - d831: number; - e831: string; - f831: boolean; - g831: null; - h831: undefined; - i831: bigint; - j831: symbol; +interface Entity_08_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_31 | null; children: Entity_08_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0831: number; y0831: string; z0831: boolean }; } -type PartialBig831 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten831 = T extends Array ? Flatten831 : T; -type Nested831 = number[][][][][][][][][][]; -type Flat831 = Flatten831; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly831 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly831 : T[K]; -}; -type DeepRequired831 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired831 : T[K]; +type Path_0831 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0831}` }[keyof T & string] : never; +type EP_0831 = Path_0831; + +type Val_0831 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0831 } + : T[K] extends object ? { t: 'o'; props: Val_0831 } + : { t: 'u' }; }; -type FR831 = DeepReadonly831>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion831 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha831 = Extract; -type ExcludeZulu831 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA831 { width: number; height: number; depth: number } -interface ShapeB831 { color: string; opacity: number; blend: string } -interface ShapeC831 { x: number; y: number; z: number; w: number } -interface ShapeD831 { label: string; title: string; summary: string } - -type Combined831 = ShapeA831 & ShapeB831 & ShapeC831 & ShapeD831; -type OptionalAll831 = { [K in keyof Combined831]?: Combined831[K] }; -type RequiredAll831 = { [K in keyof Combined831]-?: Combined831[K] }; -type ReadonlyAll831 = { readonly [K in keyof Combined831]: Combined831[K] }; -type NullableAll831 = { [K in keyof Combined831]: Combined831[K] | null }; +type EV_0831 = Val_0831; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString831 = T extends string ? true : false; -type IsNumber831 = T extends number ? true : false; -type TypeName831 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames831 = { - [K in keyof BigRecord831]: TypeName831; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb831 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource831 = "user" | "post" | "comment" | "tag" | "category"; -type Action831 = `${Verb831}_${Resource831}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise831 = T extends Promise ? UnwrapPromise831 : T; -type UnwrapArray831 = T extends (infer U)[] ? UnwrapArray831 : T; -type Head831 = T extends [infer H, ...infer _] ? H : never; -type Tail831 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation831 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation831>] - : never; +interface Registry_08_31 { + entities: Map; + validators: EV_0831; + paths: Set; + merged: DeepMerge_0831; +} -type SmallUnion831 = "a" | "b" | "c" | "d"; -type AllPerms831 = Permutation831; +type CK_0831 = `p08.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig831, - Flat831, - FR831, - BigUnion831, - ExtractAlpha831, - ExcludeZulu831, - OptionalAll831, - RequiredAll831, - ReadonlyAll831, - NullableAll831, - TypeNames831, - Action831, - AllPerms831, -}; +export type { Entity_08_31, Registry_08_31, CK_0831, EP_0831, EV_0831, DeepMerge_0831 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts index 3dc89183..3c07a22a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-32.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-32 (seed 832) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-32 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0832 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0832 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord832 { - a832: { x: number; y: string; z: boolean }; - b832: { p: string[]; q: Record }; - c832: { nested: { deep: { deeper: { deepest: string } } } }; - d832: number; - e832: string; - f832: boolean; - g832: null; - h832: undefined; - i832: bigint; - j832: symbol; +interface Entity_08_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_32 | null; children: Entity_08_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0832: number; y0832: string; z0832: boolean }; } -type PartialBig832 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten832 = T extends Array ? Flatten832 : T; -type Nested832 = number[][][][][][][][][][]; -type Flat832 = Flatten832; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly832 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly832 : T[K]; -}; -type DeepRequired832 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired832 : T[K]; +type Path_0832 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0832}` }[keyof T & string] : never; +type EP_0832 = Path_0832; + +type Val_0832 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0832 } + : T[K] extends object ? { t: 'o'; props: Val_0832 } + : { t: 'u' }; }; -type FR832 = DeepReadonly832>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion832 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha832 = Extract; -type ExcludeZulu832 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA832 { width: number; height: number; depth: number } -interface ShapeB832 { color: string; opacity: number; blend: string } -interface ShapeC832 { x: number; y: number; z: number; w: number } -interface ShapeD832 { label: string; title: string; summary: string } - -type Combined832 = ShapeA832 & ShapeB832 & ShapeC832 & ShapeD832; -type OptionalAll832 = { [K in keyof Combined832]?: Combined832[K] }; -type RequiredAll832 = { [K in keyof Combined832]-?: Combined832[K] }; -type ReadonlyAll832 = { readonly [K in keyof Combined832]: Combined832[K] }; -type NullableAll832 = { [K in keyof Combined832]: Combined832[K] | null }; +type EV_0832 = Val_0832; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString832 = T extends string ? true : false; -type IsNumber832 = T extends number ? true : false; -type TypeName832 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames832 = { - [K in keyof BigRecord832]: TypeName832; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb832 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource832 = "user" | "post" | "comment" | "tag" | "category"; -type Action832 = `${Verb832}_${Resource832}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise832 = T extends Promise ? UnwrapPromise832 : T; -type UnwrapArray832 = T extends (infer U)[] ? UnwrapArray832 : T; -type Head832 = T extends [infer H, ...infer _] ? H : never; -type Tail832 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation832 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation832>] - : never; +interface Registry_08_32 { + entities: Map; + validators: EV_0832; + paths: Set; + merged: DeepMerge_0832; +} -type SmallUnion832 = "a" | "b" | "c" | "d"; -type AllPerms832 = Permutation832; +type CK_0832 = `p08.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig832, - Flat832, - FR832, - BigUnion832, - ExtractAlpha832, - ExcludeZulu832, - OptionalAll832, - RequiredAll832, - ReadonlyAll832, - NullableAll832, - TypeNames832, - Action832, - AllPerms832, -}; +export type { Entity_08_32, Registry_08_32, CK_0832, EP_0832, EV_0832, DeepMerge_0832 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts index fce68016..8b8d3abe 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-33.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-33 (seed 833) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-33 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0833 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0833 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord833 { - a833: { x: number; y: string; z: boolean }; - b833: { p: string[]; q: Record }; - c833: { nested: { deep: { deeper: { deepest: string } } } }; - d833: number; - e833: string; - f833: boolean; - g833: null; - h833: undefined; - i833: bigint; - j833: symbol; +interface Entity_08_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_33 | null; children: Entity_08_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0833: number; y0833: string; z0833: boolean }; } -type PartialBig833 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten833 = T extends Array ? Flatten833 : T; -type Nested833 = number[][][][][][][][][][]; -type Flat833 = Flatten833; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly833 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly833 : T[K]; -}; -type DeepRequired833 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired833 : T[K]; +type Path_0833 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0833}` }[keyof T & string] : never; +type EP_0833 = Path_0833; + +type Val_0833 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0833 } + : T[K] extends object ? { t: 'o'; props: Val_0833 } + : { t: 'u' }; }; -type FR833 = DeepReadonly833>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion833 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha833 = Extract; -type ExcludeZulu833 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA833 { width: number; height: number; depth: number } -interface ShapeB833 { color: string; opacity: number; blend: string } -interface ShapeC833 { x: number; y: number; z: number; w: number } -interface ShapeD833 { label: string; title: string; summary: string } - -type Combined833 = ShapeA833 & ShapeB833 & ShapeC833 & ShapeD833; -type OptionalAll833 = { [K in keyof Combined833]?: Combined833[K] }; -type RequiredAll833 = { [K in keyof Combined833]-?: Combined833[K] }; -type ReadonlyAll833 = { readonly [K in keyof Combined833]: Combined833[K] }; -type NullableAll833 = { [K in keyof Combined833]: Combined833[K] | null }; +type EV_0833 = Val_0833; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString833 = T extends string ? true : false; -type IsNumber833 = T extends number ? true : false; -type TypeName833 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames833 = { - [K in keyof BigRecord833]: TypeName833; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb833 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource833 = "user" | "post" | "comment" | "tag" | "category"; -type Action833 = `${Verb833}_${Resource833}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise833 = T extends Promise ? UnwrapPromise833 : T; -type UnwrapArray833 = T extends (infer U)[] ? UnwrapArray833 : T; -type Head833 = T extends [infer H, ...infer _] ? H : never; -type Tail833 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation833 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation833>] - : never; +interface Registry_08_33 { + entities: Map; + validators: EV_0833; + paths: Set; + merged: DeepMerge_0833; +} -type SmallUnion833 = "a" | "b" | "c" | "d"; -type AllPerms833 = Permutation833; +type CK_0833 = `p08.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig833, - Flat833, - FR833, - BigUnion833, - ExtractAlpha833, - ExcludeZulu833, - OptionalAll833, - RequiredAll833, - ReadonlyAll833, - NullableAll833, - TypeNames833, - Action833, - AllPerms833, -}; +export type { Entity_08_33, Registry_08_33, CK_0833, EP_0833, EV_0833, DeepMerge_0833 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts index 0353ae2f..95131947 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-34.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-34 (seed 834) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-34 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0834 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0834 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord834 { - a834: { x: number; y: string; z: boolean }; - b834: { p: string[]; q: Record }; - c834: { nested: { deep: { deeper: { deepest: string } } } }; - d834: number; - e834: string; - f834: boolean; - g834: null; - h834: undefined; - i834: bigint; - j834: symbol; +interface Entity_08_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_34 | null; children: Entity_08_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0834: number; y0834: string; z0834: boolean }; } -type PartialBig834 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten834 = T extends Array ? Flatten834 : T; -type Nested834 = number[][][][][][][][][][]; -type Flat834 = Flatten834; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly834 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly834 : T[K]; -}; -type DeepRequired834 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired834 : T[K]; +type Path_0834 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0834}` }[keyof T & string] : never; +type EP_0834 = Path_0834; + +type Val_0834 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0834 } + : T[K] extends object ? { t: 'o'; props: Val_0834 } + : { t: 'u' }; }; -type FR834 = DeepReadonly834>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion834 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha834 = Extract; -type ExcludeZulu834 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA834 { width: number; height: number; depth: number } -interface ShapeB834 { color: string; opacity: number; blend: string } -interface ShapeC834 { x: number; y: number; z: number; w: number } -interface ShapeD834 { label: string; title: string; summary: string } - -type Combined834 = ShapeA834 & ShapeB834 & ShapeC834 & ShapeD834; -type OptionalAll834 = { [K in keyof Combined834]?: Combined834[K] }; -type RequiredAll834 = { [K in keyof Combined834]-?: Combined834[K] }; -type ReadonlyAll834 = { readonly [K in keyof Combined834]: Combined834[K] }; -type NullableAll834 = { [K in keyof Combined834]: Combined834[K] | null }; +type EV_0834 = Val_0834; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString834 = T extends string ? true : false; -type IsNumber834 = T extends number ? true : false; -type TypeName834 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames834 = { - [K in keyof BigRecord834]: TypeName834; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb834 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource834 = "user" | "post" | "comment" | "tag" | "category"; -type Action834 = `${Verb834}_${Resource834}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise834 = T extends Promise ? UnwrapPromise834 : T; -type UnwrapArray834 = T extends (infer U)[] ? UnwrapArray834 : T; -type Head834 = T extends [infer H, ...infer _] ? H : never; -type Tail834 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation834 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation834>] - : never; +interface Registry_08_34 { + entities: Map; + validators: EV_0834; + paths: Set; + merged: DeepMerge_0834; +} -type SmallUnion834 = "a" | "b" | "c" | "d"; -type AllPerms834 = Permutation834; +type CK_0834 = `p08.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig834, - Flat834, - FR834, - BigUnion834, - ExtractAlpha834, - ExcludeZulu834, - OptionalAll834, - RequiredAll834, - ReadonlyAll834, - NullableAll834, - TypeNames834, - Action834, - AllPerms834, -}; +export type { Entity_08_34, Registry_08_34, CK_0834, EP_0834, EV_0834, DeepMerge_0834 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts index b5262942..c0f9c9b0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-35.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-35 (seed 835) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-35 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0835 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0835 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord835 { - a835: { x: number; y: string; z: boolean }; - b835: { p: string[]; q: Record }; - c835: { nested: { deep: { deeper: { deepest: string } } } }; - d835: number; - e835: string; - f835: boolean; - g835: null; - h835: undefined; - i835: bigint; - j835: symbol; +interface Entity_08_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_35 | null; children: Entity_08_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0835: number; y0835: string; z0835: boolean }; } -type PartialBig835 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten835 = T extends Array ? Flatten835 : T; -type Nested835 = number[][][][][][][][][][]; -type Flat835 = Flatten835; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly835 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly835 : T[K]; -}; -type DeepRequired835 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired835 : T[K]; +type Path_0835 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0835}` }[keyof T & string] : never; +type EP_0835 = Path_0835; + +type Val_0835 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0835 } + : T[K] extends object ? { t: 'o'; props: Val_0835 } + : { t: 'u' }; }; -type FR835 = DeepReadonly835>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion835 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha835 = Extract; -type ExcludeZulu835 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA835 { width: number; height: number; depth: number } -interface ShapeB835 { color: string; opacity: number; blend: string } -interface ShapeC835 { x: number; y: number; z: number; w: number } -interface ShapeD835 { label: string; title: string; summary: string } - -type Combined835 = ShapeA835 & ShapeB835 & ShapeC835 & ShapeD835; -type OptionalAll835 = { [K in keyof Combined835]?: Combined835[K] }; -type RequiredAll835 = { [K in keyof Combined835]-?: Combined835[K] }; -type ReadonlyAll835 = { readonly [K in keyof Combined835]: Combined835[K] }; -type NullableAll835 = { [K in keyof Combined835]: Combined835[K] | null }; +type EV_0835 = Val_0835; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString835 = T extends string ? true : false; -type IsNumber835 = T extends number ? true : false; -type TypeName835 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames835 = { - [K in keyof BigRecord835]: TypeName835; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb835 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource835 = "user" | "post" | "comment" | "tag" | "category"; -type Action835 = `${Verb835}_${Resource835}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise835 = T extends Promise ? UnwrapPromise835 : T; -type UnwrapArray835 = T extends (infer U)[] ? UnwrapArray835 : T; -type Head835 = T extends [infer H, ...infer _] ? H : never; -type Tail835 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation835 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation835>] - : never; +interface Registry_08_35 { + entities: Map; + validators: EV_0835; + paths: Set; + merged: DeepMerge_0835; +} -type SmallUnion835 = "a" | "b" | "c" | "d"; -type AllPerms835 = Permutation835; +type CK_0835 = `p08.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig835, - Flat835, - FR835, - BigUnion835, - ExtractAlpha835, - ExcludeZulu835, - OptionalAll835, - RequiredAll835, - ReadonlyAll835, - NullableAll835, - TypeNames835, - Action835, - AllPerms835, -}; +export type { Entity_08_35, Registry_08_35, CK_0835, EP_0835, EV_0835, DeepMerge_0835 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts index 45807b78..875d2983 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-36.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-36 (seed 836) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-36 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0836 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0836 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord836 { - a836: { x: number; y: string; z: boolean }; - b836: { p: string[]; q: Record }; - c836: { nested: { deep: { deeper: { deepest: string } } } }; - d836: number; - e836: string; - f836: boolean; - g836: null; - h836: undefined; - i836: bigint; - j836: symbol; +interface Entity_08_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_36 | null; children: Entity_08_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0836: number; y0836: string; z0836: boolean }; } -type PartialBig836 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten836 = T extends Array ? Flatten836 : T; -type Nested836 = number[][][][][][][][][][]; -type Flat836 = Flatten836; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly836 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly836 : T[K]; -}; -type DeepRequired836 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired836 : T[K]; +type Path_0836 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0836}` }[keyof T & string] : never; +type EP_0836 = Path_0836; + +type Val_0836 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0836 } + : T[K] extends object ? { t: 'o'; props: Val_0836 } + : { t: 'u' }; }; -type FR836 = DeepReadonly836>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion836 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha836 = Extract; -type ExcludeZulu836 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA836 { width: number; height: number; depth: number } -interface ShapeB836 { color: string; opacity: number; blend: string } -interface ShapeC836 { x: number; y: number; z: number; w: number } -interface ShapeD836 { label: string; title: string; summary: string } - -type Combined836 = ShapeA836 & ShapeB836 & ShapeC836 & ShapeD836; -type OptionalAll836 = { [K in keyof Combined836]?: Combined836[K] }; -type RequiredAll836 = { [K in keyof Combined836]-?: Combined836[K] }; -type ReadonlyAll836 = { readonly [K in keyof Combined836]: Combined836[K] }; -type NullableAll836 = { [K in keyof Combined836]: Combined836[K] | null }; +type EV_0836 = Val_0836; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString836 = T extends string ? true : false; -type IsNumber836 = T extends number ? true : false; -type TypeName836 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames836 = { - [K in keyof BigRecord836]: TypeName836; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb836 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource836 = "user" | "post" | "comment" | "tag" | "category"; -type Action836 = `${Verb836}_${Resource836}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise836 = T extends Promise ? UnwrapPromise836 : T; -type UnwrapArray836 = T extends (infer U)[] ? UnwrapArray836 : T; -type Head836 = T extends [infer H, ...infer _] ? H : never; -type Tail836 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation836 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation836>] - : never; +interface Registry_08_36 { + entities: Map; + validators: EV_0836; + paths: Set; + merged: DeepMerge_0836; +} -type SmallUnion836 = "a" | "b" | "c" | "d"; -type AllPerms836 = Permutation836; +type CK_0836 = `p08.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig836, - Flat836, - FR836, - BigUnion836, - ExtractAlpha836, - ExcludeZulu836, - OptionalAll836, - RequiredAll836, - ReadonlyAll836, - NullableAll836, - TypeNames836, - Action836, - AllPerms836, -}; +export type { Entity_08_36, Registry_08_36, CK_0836, EP_0836, EV_0836, DeepMerge_0836 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts index 84d06a1a..582a058c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-37.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-37 (seed 837) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-37 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0837 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0837 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord837 { - a837: { x: number; y: string; z: boolean }; - b837: { p: string[]; q: Record }; - c837: { nested: { deep: { deeper: { deepest: string } } } }; - d837: number; - e837: string; - f837: boolean; - g837: null; - h837: undefined; - i837: bigint; - j837: symbol; +interface Entity_08_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_37 | null; children: Entity_08_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0837: number; y0837: string; z0837: boolean }; } -type PartialBig837 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten837 = T extends Array ? Flatten837 : T; -type Nested837 = number[][][][][][][][][][]; -type Flat837 = Flatten837; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly837 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly837 : T[K]; -}; -type DeepRequired837 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired837 : T[K]; +type Path_0837 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0837}` }[keyof T & string] : never; +type EP_0837 = Path_0837; + +type Val_0837 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0837 } + : T[K] extends object ? { t: 'o'; props: Val_0837 } + : { t: 'u' }; }; -type FR837 = DeepReadonly837>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion837 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha837 = Extract; -type ExcludeZulu837 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA837 { width: number; height: number; depth: number } -interface ShapeB837 { color: string; opacity: number; blend: string } -interface ShapeC837 { x: number; y: number; z: number; w: number } -interface ShapeD837 { label: string; title: string; summary: string } - -type Combined837 = ShapeA837 & ShapeB837 & ShapeC837 & ShapeD837; -type OptionalAll837 = { [K in keyof Combined837]?: Combined837[K] }; -type RequiredAll837 = { [K in keyof Combined837]-?: Combined837[K] }; -type ReadonlyAll837 = { readonly [K in keyof Combined837]: Combined837[K] }; -type NullableAll837 = { [K in keyof Combined837]: Combined837[K] | null }; +type EV_0837 = Val_0837; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString837 = T extends string ? true : false; -type IsNumber837 = T extends number ? true : false; -type TypeName837 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames837 = { - [K in keyof BigRecord837]: TypeName837; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb837 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource837 = "user" | "post" | "comment" | "tag" | "category"; -type Action837 = `${Verb837}_${Resource837}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise837 = T extends Promise ? UnwrapPromise837 : T; -type UnwrapArray837 = T extends (infer U)[] ? UnwrapArray837 : T; -type Head837 = T extends [infer H, ...infer _] ? H : never; -type Tail837 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation837 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation837>] - : never; +interface Registry_08_37 { + entities: Map; + validators: EV_0837; + paths: Set; + merged: DeepMerge_0837; +} -type SmallUnion837 = "a" | "b" | "c" | "d"; -type AllPerms837 = Permutation837; +type CK_0837 = `p08.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig837, - Flat837, - FR837, - BigUnion837, - ExtractAlpha837, - ExcludeZulu837, - OptionalAll837, - RequiredAll837, - ReadonlyAll837, - NullableAll837, - TypeNames837, - Action837, - AllPerms837, -}; +export type { Entity_08_37, Registry_08_37, CK_0837, EP_0837, EV_0837, DeepMerge_0837 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts index d023b96a..c5394e7e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-38.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-38 (seed 838) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-38 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0838 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0838 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord838 { - a838: { x: number; y: string; z: boolean }; - b838: { p: string[]; q: Record }; - c838: { nested: { deep: { deeper: { deepest: string } } } }; - d838: number; - e838: string; - f838: boolean; - g838: null; - h838: undefined; - i838: bigint; - j838: symbol; +interface Entity_08_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_38 | null; children: Entity_08_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0838: number; y0838: string; z0838: boolean }; } -type PartialBig838 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten838 = T extends Array ? Flatten838 : T; -type Nested838 = number[][][][][][][][][][]; -type Flat838 = Flatten838; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly838 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly838 : T[K]; -}; -type DeepRequired838 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired838 : T[K]; +type Path_0838 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0838}` }[keyof T & string] : never; +type EP_0838 = Path_0838; + +type Val_0838 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0838 } + : T[K] extends object ? { t: 'o'; props: Val_0838 } + : { t: 'u' }; }; -type FR838 = DeepReadonly838>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion838 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha838 = Extract; -type ExcludeZulu838 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA838 { width: number; height: number; depth: number } -interface ShapeB838 { color: string; opacity: number; blend: string } -interface ShapeC838 { x: number; y: number; z: number; w: number } -interface ShapeD838 { label: string; title: string; summary: string } - -type Combined838 = ShapeA838 & ShapeB838 & ShapeC838 & ShapeD838; -type OptionalAll838 = { [K in keyof Combined838]?: Combined838[K] }; -type RequiredAll838 = { [K in keyof Combined838]-?: Combined838[K] }; -type ReadonlyAll838 = { readonly [K in keyof Combined838]: Combined838[K] }; -type NullableAll838 = { [K in keyof Combined838]: Combined838[K] | null }; +type EV_0838 = Val_0838; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString838 = T extends string ? true : false; -type IsNumber838 = T extends number ? true : false; -type TypeName838 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames838 = { - [K in keyof BigRecord838]: TypeName838; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb838 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource838 = "user" | "post" | "comment" | "tag" | "category"; -type Action838 = `${Verb838}_${Resource838}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise838 = T extends Promise ? UnwrapPromise838 : T; -type UnwrapArray838 = T extends (infer U)[] ? UnwrapArray838 : T; -type Head838 = T extends [infer H, ...infer _] ? H : never; -type Tail838 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation838 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation838>] - : never; +interface Registry_08_38 { + entities: Map; + validators: EV_0838; + paths: Set; + merged: DeepMerge_0838; +} -type SmallUnion838 = "a" | "b" | "c" | "d"; -type AllPerms838 = Permutation838; +type CK_0838 = `p08.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig838, - Flat838, - FR838, - BigUnion838, - ExtractAlpha838, - ExcludeZulu838, - OptionalAll838, - RequiredAll838, - ReadonlyAll838, - NullableAll838, - TypeNames838, - Action838, - AllPerms838, -}; +export type { Entity_08_38, Registry_08_38, CK_0838, EP_0838, EV_0838, DeepMerge_0838 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts index 5d017630..43b685e9 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-39.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-39 (seed 839) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-39 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0839 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0839 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord839 { - a839: { x: number; y: string; z: boolean }; - b839: { p: string[]; q: Record }; - c839: { nested: { deep: { deeper: { deepest: string } } } }; - d839: number; - e839: string; - f839: boolean; - g839: null; - h839: undefined; - i839: bigint; - j839: symbol; +interface Entity_08_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_39 | null; children: Entity_08_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0839: number; y0839: string; z0839: boolean }; } -type PartialBig839 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten839 = T extends Array ? Flatten839 : T; -type Nested839 = number[][][][][][][][][][]; -type Flat839 = Flatten839; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly839 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly839 : T[K]; -}; -type DeepRequired839 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired839 : T[K]; +type Path_0839 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0839}` }[keyof T & string] : never; +type EP_0839 = Path_0839; + +type Val_0839 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0839 } + : T[K] extends object ? { t: 'o'; props: Val_0839 } + : { t: 'u' }; }; -type FR839 = DeepReadonly839>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion839 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha839 = Extract; -type ExcludeZulu839 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA839 { width: number; height: number; depth: number } -interface ShapeB839 { color: string; opacity: number; blend: string } -interface ShapeC839 { x: number; y: number; z: number; w: number } -interface ShapeD839 { label: string; title: string; summary: string } - -type Combined839 = ShapeA839 & ShapeB839 & ShapeC839 & ShapeD839; -type OptionalAll839 = { [K in keyof Combined839]?: Combined839[K] }; -type RequiredAll839 = { [K in keyof Combined839]-?: Combined839[K] }; -type ReadonlyAll839 = { readonly [K in keyof Combined839]: Combined839[K] }; -type NullableAll839 = { [K in keyof Combined839]: Combined839[K] | null }; +type EV_0839 = Val_0839; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString839 = T extends string ? true : false; -type IsNumber839 = T extends number ? true : false; -type TypeName839 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames839 = { - [K in keyof BigRecord839]: TypeName839; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb839 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource839 = "user" | "post" | "comment" | "tag" | "category"; -type Action839 = `${Verb839}_${Resource839}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise839 = T extends Promise ? UnwrapPromise839 : T; -type UnwrapArray839 = T extends (infer U)[] ? UnwrapArray839 : T; -type Head839 = T extends [infer H, ...infer _] ? H : never; -type Tail839 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation839 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation839>] - : never; +interface Registry_08_39 { + entities: Map; + validators: EV_0839; + paths: Set; + merged: DeepMerge_0839; +} -type SmallUnion839 = "a" | "b" | "c" | "d"; -type AllPerms839 = Permutation839; +type CK_0839 = `p08.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig839, - Flat839, - FR839, - BigUnion839, - ExtractAlpha839, - ExcludeZulu839, - OptionalAll839, - RequiredAll839, - ReadonlyAll839, - NullableAll839, - TypeNames839, - Action839, - AllPerms839, -}; +export type { Entity_08_39, Registry_08_39, CK_0839, EP_0839, EV_0839, DeepMerge_0839 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts index f20fef01..32aab720 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-40.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-40 (seed 840) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-40 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0840 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0840 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord840 { - a840: { x: number; y: string; z: boolean }; - b840: { p: string[]; q: Record }; - c840: { nested: { deep: { deeper: { deepest: string } } } }; - d840: number; - e840: string; - f840: boolean; - g840: null; - h840: undefined; - i840: bigint; - j840: symbol; +interface Entity_08_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_40 | null; children: Entity_08_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0840: number; y0840: string; z0840: boolean }; } -type PartialBig840 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten840 = T extends Array ? Flatten840 : T; -type Nested840 = number[][][][][][][][][][]; -type Flat840 = Flatten840; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly840 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly840 : T[K]; -}; -type DeepRequired840 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired840 : T[K]; +type Path_0840 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0840}` }[keyof T & string] : never; +type EP_0840 = Path_0840; + +type Val_0840 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0840 } + : T[K] extends object ? { t: 'o'; props: Val_0840 } + : { t: 'u' }; }; -type FR840 = DeepReadonly840>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion840 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha840 = Extract; -type ExcludeZulu840 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA840 { width: number; height: number; depth: number } -interface ShapeB840 { color: string; opacity: number; blend: string } -interface ShapeC840 { x: number; y: number; z: number; w: number } -interface ShapeD840 { label: string; title: string; summary: string } - -type Combined840 = ShapeA840 & ShapeB840 & ShapeC840 & ShapeD840; -type OptionalAll840 = { [K in keyof Combined840]?: Combined840[K] }; -type RequiredAll840 = { [K in keyof Combined840]-?: Combined840[K] }; -type ReadonlyAll840 = { readonly [K in keyof Combined840]: Combined840[K] }; -type NullableAll840 = { [K in keyof Combined840]: Combined840[K] | null }; +type EV_0840 = Val_0840; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString840 = T extends string ? true : false; -type IsNumber840 = T extends number ? true : false; -type TypeName840 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames840 = { - [K in keyof BigRecord840]: TypeName840; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb840 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource840 = "user" | "post" | "comment" | "tag" | "category"; -type Action840 = `${Verb840}_${Resource840}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise840 = T extends Promise ? UnwrapPromise840 : T; -type UnwrapArray840 = T extends (infer U)[] ? UnwrapArray840 : T; -type Head840 = T extends [infer H, ...infer _] ? H : never; -type Tail840 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation840 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation840>] - : never; +interface Registry_08_40 { + entities: Map; + validators: EV_0840; + paths: Set; + merged: DeepMerge_0840; +} -type SmallUnion840 = "a" | "b" | "c" | "d"; -type AllPerms840 = Permutation840; +type CK_0840 = `p08.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig840, - Flat840, - FR840, - BigUnion840, - ExtractAlpha840, - ExcludeZulu840, - OptionalAll840, - RequiredAll840, - ReadonlyAll840, - NullableAll840, - TypeNames840, - Action840, - AllPerms840, -}; +export type { Entity_08_40, Registry_08_40, CK_0840, EP_0840, EV_0840, DeepMerge_0840 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts index b4b4a9df..ac74aff5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-41.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-41 (seed 841) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-41 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0841 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0841 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord841 { - a841: { x: number; y: string; z: boolean }; - b841: { p: string[]; q: Record }; - c841: { nested: { deep: { deeper: { deepest: string } } } }; - d841: number; - e841: string; - f841: boolean; - g841: null; - h841: undefined; - i841: bigint; - j841: symbol; +interface Entity_08_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_41 | null; children: Entity_08_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0841: number; y0841: string; z0841: boolean }; } -type PartialBig841 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten841 = T extends Array ? Flatten841 : T; -type Nested841 = number[][][][][][][][][][]; -type Flat841 = Flatten841; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly841 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly841 : T[K]; -}; -type DeepRequired841 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired841 : T[K]; +type Path_0841 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0841}` }[keyof T & string] : never; +type EP_0841 = Path_0841; + +type Val_0841 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0841 } + : T[K] extends object ? { t: 'o'; props: Val_0841 } + : { t: 'u' }; }; -type FR841 = DeepReadonly841>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion841 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha841 = Extract; -type ExcludeZulu841 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA841 { width: number; height: number; depth: number } -interface ShapeB841 { color: string; opacity: number; blend: string } -interface ShapeC841 { x: number; y: number; z: number; w: number } -interface ShapeD841 { label: string; title: string; summary: string } - -type Combined841 = ShapeA841 & ShapeB841 & ShapeC841 & ShapeD841; -type OptionalAll841 = { [K in keyof Combined841]?: Combined841[K] }; -type RequiredAll841 = { [K in keyof Combined841]-?: Combined841[K] }; -type ReadonlyAll841 = { readonly [K in keyof Combined841]: Combined841[K] }; -type NullableAll841 = { [K in keyof Combined841]: Combined841[K] | null }; +type EV_0841 = Val_0841; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString841 = T extends string ? true : false; -type IsNumber841 = T extends number ? true : false; -type TypeName841 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames841 = { - [K in keyof BigRecord841]: TypeName841; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb841 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource841 = "user" | "post" | "comment" | "tag" | "category"; -type Action841 = `${Verb841}_${Resource841}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise841 = T extends Promise ? UnwrapPromise841 : T; -type UnwrapArray841 = T extends (infer U)[] ? UnwrapArray841 : T; -type Head841 = T extends [infer H, ...infer _] ? H : never; -type Tail841 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation841 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation841>] - : never; +interface Registry_08_41 { + entities: Map; + validators: EV_0841; + paths: Set; + merged: DeepMerge_0841; +} -type SmallUnion841 = "a" | "b" | "c" | "d"; -type AllPerms841 = Permutation841; +type CK_0841 = `p08.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig841, - Flat841, - FR841, - BigUnion841, - ExtractAlpha841, - ExcludeZulu841, - OptionalAll841, - RequiredAll841, - ReadonlyAll841, - NullableAll841, - TypeNames841, - Action841, - AllPerms841, -}; +export type { Entity_08_41, Registry_08_41, CK_0841, EP_0841, EV_0841, DeepMerge_0841 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts index 75382f9a..e827c110 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-42.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-42 (seed 842) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-42 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0842 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0842 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord842 { - a842: { x: number; y: string; z: boolean }; - b842: { p: string[]; q: Record }; - c842: { nested: { deep: { deeper: { deepest: string } } } }; - d842: number; - e842: string; - f842: boolean; - g842: null; - h842: undefined; - i842: bigint; - j842: symbol; +interface Entity_08_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_42 | null; children: Entity_08_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0842: number; y0842: string; z0842: boolean }; } -type PartialBig842 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten842 = T extends Array ? Flatten842 : T; -type Nested842 = number[][][][][][][][][][]; -type Flat842 = Flatten842; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly842 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly842 : T[K]; -}; -type DeepRequired842 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired842 : T[K]; +type Path_0842 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0842}` }[keyof T & string] : never; +type EP_0842 = Path_0842; + +type Val_0842 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0842 } + : T[K] extends object ? { t: 'o'; props: Val_0842 } + : { t: 'u' }; }; -type FR842 = DeepReadonly842>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion842 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha842 = Extract; -type ExcludeZulu842 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA842 { width: number; height: number; depth: number } -interface ShapeB842 { color: string; opacity: number; blend: string } -interface ShapeC842 { x: number; y: number; z: number; w: number } -interface ShapeD842 { label: string; title: string; summary: string } - -type Combined842 = ShapeA842 & ShapeB842 & ShapeC842 & ShapeD842; -type OptionalAll842 = { [K in keyof Combined842]?: Combined842[K] }; -type RequiredAll842 = { [K in keyof Combined842]-?: Combined842[K] }; -type ReadonlyAll842 = { readonly [K in keyof Combined842]: Combined842[K] }; -type NullableAll842 = { [K in keyof Combined842]: Combined842[K] | null }; +type EV_0842 = Val_0842; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString842 = T extends string ? true : false; -type IsNumber842 = T extends number ? true : false; -type TypeName842 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames842 = { - [K in keyof BigRecord842]: TypeName842; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb842 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource842 = "user" | "post" | "comment" | "tag" | "category"; -type Action842 = `${Verb842}_${Resource842}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise842 = T extends Promise ? UnwrapPromise842 : T; -type UnwrapArray842 = T extends (infer U)[] ? UnwrapArray842 : T; -type Head842 = T extends [infer H, ...infer _] ? H : never; -type Tail842 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation842 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation842>] - : never; +interface Registry_08_42 { + entities: Map; + validators: EV_0842; + paths: Set; + merged: DeepMerge_0842; +} -type SmallUnion842 = "a" | "b" | "c" | "d"; -type AllPerms842 = Permutation842; +type CK_0842 = `p08.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig842, - Flat842, - FR842, - BigUnion842, - ExtractAlpha842, - ExcludeZulu842, - OptionalAll842, - RequiredAll842, - ReadonlyAll842, - NullableAll842, - TypeNames842, - Action842, - AllPerms842, -}; +export type { Entity_08_42, Registry_08_42, CK_0842, EP_0842, EV_0842, DeepMerge_0842 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts index 9052e954..1207461d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-43.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-43 (seed 843) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-43 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0843 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0843 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord843 { - a843: { x: number; y: string; z: boolean }; - b843: { p: string[]; q: Record }; - c843: { nested: { deep: { deeper: { deepest: string } } } }; - d843: number; - e843: string; - f843: boolean; - g843: null; - h843: undefined; - i843: bigint; - j843: symbol; +interface Entity_08_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_43 | null; children: Entity_08_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0843: number; y0843: string; z0843: boolean }; } -type PartialBig843 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten843 = T extends Array ? Flatten843 : T; -type Nested843 = number[][][][][][][][][][]; -type Flat843 = Flatten843; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly843 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly843 : T[K]; -}; -type DeepRequired843 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired843 : T[K]; +type Path_0843 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0843}` }[keyof T & string] : never; +type EP_0843 = Path_0843; + +type Val_0843 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0843 } + : T[K] extends object ? { t: 'o'; props: Val_0843 } + : { t: 'u' }; }; -type FR843 = DeepReadonly843>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion843 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha843 = Extract; -type ExcludeZulu843 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA843 { width: number; height: number; depth: number } -interface ShapeB843 { color: string; opacity: number; blend: string } -interface ShapeC843 { x: number; y: number; z: number; w: number } -interface ShapeD843 { label: string; title: string; summary: string } - -type Combined843 = ShapeA843 & ShapeB843 & ShapeC843 & ShapeD843; -type OptionalAll843 = { [K in keyof Combined843]?: Combined843[K] }; -type RequiredAll843 = { [K in keyof Combined843]-?: Combined843[K] }; -type ReadonlyAll843 = { readonly [K in keyof Combined843]: Combined843[K] }; -type NullableAll843 = { [K in keyof Combined843]: Combined843[K] | null }; +type EV_0843 = Val_0843; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString843 = T extends string ? true : false; -type IsNumber843 = T extends number ? true : false; -type TypeName843 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames843 = { - [K in keyof BigRecord843]: TypeName843; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb843 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource843 = "user" | "post" | "comment" | "tag" | "category"; -type Action843 = `${Verb843}_${Resource843}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise843 = T extends Promise ? UnwrapPromise843 : T; -type UnwrapArray843 = T extends (infer U)[] ? UnwrapArray843 : T; -type Head843 = T extends [infer H, ...infer _] ? H : never; -type Tail843 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation843 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation843>] - : never; +interface Registry_08_43 { + entities: Map; + validators: EV_0843; + paths: Set; + merged: DeepMerge_0843; +} -type SmallUnion843 = "a" | "b" | "c" | "d"; -type AllPerms843 = Permutation843; +type CK_0843 = `p08.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig843, - Flat843, - FR843, - BigUnion843, - ExtractAlpha843, - ExcludeZulu843, - OptionalAll843, - RequiredAll843, - ReadonlyAll843, - NullableAll843, - TypeNames843, - Action843, - AllPerms843, -}; +export type { Entity_08_43, Registry_08_43, CK_0843, EP_0843, EV_0843, DeepMerge_0843 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts index 28be42fb..e5f5220d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-44.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-44 (seed 844) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-44 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0844 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0844 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord844 { - a844: { x: number; y: string; z: boolean }; - b844: { p: string[]; q: Record }; - c844: { nested: { deep: { deeper: { deepest: string } } } }; - d844: number; - e844: string; - f844: boolean; - g844: null; - h844: undefined; - i844: bigint; - j844: symbol; +interface Entity_08_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_44 | null; children: Entity_08_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0844: number; y0844: string; z0844: boolean }; } -type PartialBig844 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten844 = T extends Array ? Flatten844 : T; -type Nested844 = number[][][][][][][][][][]; -type Flat844 = Flatten844; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly844 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly844 : T[K]; -}; -type DeepRequired844 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired844 : T[K]; +type Path_0844 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0844}` }[keyof T & string] : never; +type EP_0844 = Path_0844; + +type Val_0844 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0844 } + : T[K] extends object ? { t: 'o'; props: Val_0844 } + : { t: 'u' }; }; -type FR844 = DeepReadonly844>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion844 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha844 = Extract; -type ExcludeZulu844 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA844 { width: number; height: number; depth: number } -interface ShapeB844 { color: string; opacity: number; blend: string } -interface ShapeC844 { x: number; y: number; z: number; w: number } -interface ShapeD844 { label: string; title: string; summary: string } - -type Combined844 = ShapeA844 & ShapeB844 & ShapeC844 & ShapeD844; -type OptionalAll844 = { [K in keyof Combined844]?: Combined844[K] }; -type RequiredAll844 = { [K in keyof Combined844]-?: Combined844[K] }; -type ReadonlyAll844 = { readonly [K in keyof Combined844]: Combined844[K] }; -type NullableAll844 = { [K in keyof Combined844]: Combined844[K] | null }; +type EV_0844 = Val_0844; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString844 = T extends string ? true : false; -type IsNumber844 = T extends number ? true : false; -type TypeName844 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames844 = { - [K in keyof BigRecord844]: TypeName844; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb844 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource844 = "user" | "post" | "comment" | "tag" | "category"; -type Action844 = `${Verb844}_${Resource844}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise844 = T extends Promise ? UnwrapPromise844 : T; -type UnwrapArray844 = T extends (infer U)[] ? UnwrapArray844 : T; -type Head844 = T extends [infer H, ...infer _] ? H : never; -type Tail844 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation844 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation844>] - : never; +interface Registry_08_44 { + entities: Map; + validators: EV_0844; + paths: Set; + merged: DeepMerge_0844; +} -type SmallUnion844 = "a" | "b" | "c" | "d"; -type AllPerms844 = Permutation844; +type CK_0844 = `p08.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig844, - Flat844, - FR844, - BigUnion844, - ExtractAlpha844, - ExcludeZulu844, - OptionalAll844, - RequiredAll844, - ReadonlyAll844, - NullableAll844, - TypeNames844, - Action844, - AllPerms844, -}; +export type { Entity_08_44, Registry_08_44, CK_0844, EP_0844, EV_0844, DeepMerge_0844 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts index 5a5332ce..f78857bd 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-45.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-45 (seed 845) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-45 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0845 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0845 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord845 { - a845: { x: number; y: string; z: boolean }; - b845: { p: string[]; q: Record }; - c845: { nested: { deep: { deeper: { deepest: string } } } }; - d845: number; - e845: string; - f845: boolean; - g845: null; - h845: undefined; - i845: bigint; - j845: symbol; +interface Entity_08_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_45 | null; children: Entity_08_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0845: number; y0845: string; z0845: boolean }; } -type PartialBig845 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten845 = T extends Array ? Flatten845 : T; -type Nested845 = number[][][][][][][][][][]; -type Flat845 = Flatten845; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly845 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly845 : T[K]; -}; -type DeepRequired845 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired845 : T[K]; +type Path_0845 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0845}` }[keyof T & string] : never; +type EP_0845 = Path_0845; + +type Val_0845 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0845 } + : T[K] extends object ? { t: 'o'; props: Val_0845 } + : { t: 'u' }; }; -type FR845 = DeepReadonly845>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion845 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha845 = Extract; -type ExcludeZulu845 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA845 { width: number; height: number; depth: number } -interface ShapeB845 { color: string; opacity: number; blend: string } -interface ShapeC845 { x: number; y: number; z: number; w: number } -interface ShapeD845 { label: string; title: string; summary: string } - -type Combined845 = ShapeA845 & ShapeB845 & ShapeC845 & ShapeD845; -type OptionalAll845 = { [K in keyof Combined845]?: Combined845[K] }; -type RequiredAll845 = { [K in keyof Combined845]-?: Combined845[K] }; -type ReadonlyAll845 = { readonly [K in keyof Combined845]: Combined845[K] }; -type NullableAll845 = { [K in keyof Combined845]: Combined845[K] | null }; +type EV_0845 = Val_0845; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString845 = T extends string ? true : false; -type IsNumber845 = T extends number ? true : false; -type TypeName845 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames845 = { - [K in keyof BigRecord845]: TypeName845; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb845 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource845 = "user" | "post" | "comment" | "tag" | "category"; -type Action845 = `${Verb845}_${Resource845}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise845 = T extends Promise ? UnwrapPromise845 : T; -type UnwrapArray845 = T extends (infer U)[] ? UnwrapArray845 : T; -type Head845 = T extends [infer H, ...infer _] ? H : never; -type Tail845 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation845 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation845>] - : never; +interface Registry_08_45 { + entities: Map; + validators: EV_0845; + paths: Set; + merged: DeepMerge_0845; +} -type SmallUnion845 = "a" | "b" | "c" | "d"; -type AllPerms845 = Permutation845; +type CK_0845 = `p08.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig845, - Flat845, - FR845, - BigUnion845, - ExtractAlpha845, - ExcludeZulu845, - OptionalAll845, - RequiredAll845, - ReadonlyAll845, - NullableAll845, - TypeNames845, - Action845, - AllPerms845, -}; +export type { Entity_08_45, Registry_08_45, CK_0845, EP_0845, EV_0845, DeepMerge_0845 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts index ce7060f2..c2aa64ea 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-46.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-46 (seed 846) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-46 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0846 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0846 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord846 { - a846: { x: number; y: string; z: boolean }; - b846: { p: string[]; q: Record }; - c846: { nested: { deep: { deeper: { deepest: string } } } }; - d846: number; - e846: string; - f846: boolean; - g846: null; - h846: undefined; - i846: bigint; - j846: symbol; +interface Entity_08_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_46 | null; children: Entity_08_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0846: number; y0846: string; z0846: boolean }; } -type PartialBig846 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten846 = T extends Array ? Flatten846 : T; -type Nested846 = number[][][][][][][][][][]; -type Flat846 = Flatten846; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly846 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly846 : T[K]; -}; -type DeepRequired846 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired846 : T[K]; +type Path_0846 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0846}` }[keyof T & string] : never; +type EP_0846 = Path_0846; + +type Val_0846 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0846 } + : T[K] extends object ? { t: 'o'; props: Val_0846 } + : { t: 'u' }; }; -type FR846 = DeepReadonly846>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion846 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha846 = Extract; -type ExcludeZulu846 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA846 { width: number; height: number; depth: number } -interface ShapeB846 { color: string; opacity: number; blend: string } -interface ShapeC846 { x: number; y: number; z: number; w: number } -interface ShapeD846 { label: string; title: string; summary: string } - -type Combined846 = ShapeA846 & ShapeB846 & ShapeC846 & ShapeD846; -type OptionalAll846 = { [K in keyof Combined846]?: Combined846[K] }; -type RequiredAll846 = { [K in keyof Combined846]-?: Combined846[K] }; -type ReadonlyAll846 = { readonly [K in keyof Combined846]: Combined846[K] }; -type NullableAll846 = { [K in keyof Combined846]: Combined846[K] | null }; +type EV_0846 = Val_0846; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString846 = T extends string ? true : false; -type IsNumber846 = T extends number ? true : false; -type TypeName846 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames846 = { - [K in keyof BigRecord846]: TypeName846; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb846 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource846 = "user" | "post" | "comment" | "tag" | "category"; -type Action846 = `${Verb846}_${Resource846}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise846 = T extends Promise ? UnwrapPromise846 : T; -type UnwrapArray846 = T extends (infer U)[] ? UnwrapArray846 : T; -type Head846 = T extends [infer H, ...infer _] ? H : never; -type Tail846 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation846 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation846>] - : never; +interface Registry_08_46 { + entities: Map; + validators: EV_0846; + paths: Set; + merged: DeepMerge_0846; +} -type SmallUnion846 = "a" | "b" | "c" | "d"; -type AllPerms846 = Permutation846; +type CK_0846 = `p08.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig846, - Flat846, - FR846, - BigUnion846, - ExtractAlpha846, - ExcludeZulu846, - OptionalAll846, - RequiredAll846, - ReadonlyAll846, - NullableAll846, - TypeNames846, - Action846, - AllPerms846, -}; +export type { Entity_08_46, Registry_08_46, CK_0846, EP_0846, EV_0846, DeepMerge_0846 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts index fcbd4e3d..7fbbfae1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-47.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-47 (seed 847) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-47 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0847 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0847 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord847 { - a847: { x: number; y: string; z: boolean }; - b847: { p: string[]; q: Record }; - c847: { nested: { deep: { deeper: { deepest: string } } } }; - d847: number; - e847: string; - f847: boolean; - g847: null; - h847: undefined; - i847: bigint; - j847: symbol; +interface Entity_08_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_47 | null; children: Entity_08_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0847: number; y0847: string; z0847: boolean }; } -type PartialBig847 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten847 = T extends Array ? Flatten847 : T; -type Nested847 = number[][][][][][][][][][]; -type Flat847 = Flatten847; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly847 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly847 : T[K]; -}; -type DeepRequired847 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired847 : T[K]; +type Path_0847 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0847}` }[keyof T & string] : never; +type EP_0847 = Path_0847; + +type Val_0847 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0847 } + : T[K] extends object ? { t: 'o'; props: Val_0847 } + : { t: 'u' }; }; -type FR847 = DeepReadonly847>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion847 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha847 = Extract; -type ExcludeZulu847 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA847 { width: number; height: number; depth: number } -interface ShapeB847 { color: string; opacity: number; blend: string } -interface ShapeC847 { x: number; y: number; z: number; w: number } -interface ShapeD847 { label: string; title: string; summary: string } - -type Combined847 = ShapeA847 & ShapeB847 & ShapeC847 & ShapeD847; -type OptionalAll847 = { [K in keyof Combined847]?: Combined847[K] }; -type RequiredAll847 = { [K in keyof Combined847]-?: Combined847[K] }; -type ReadonlyAll847 = { readonly [K in keyof Combined847]: Combined847[K] }; -type NullableAll847 = { [K in keyof Combined847]: Combined847[K] | null }; +type EV_0847 = Val_0847; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString847 = T extends string ? true : false; -type IsNumber847 = T extends number ? true : false; -type TypeName847 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames847 = { - [K in keyof BigRecord847]: TypeName847; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb847 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource847 = "user" | "post" | "comment" | "tag" | "category"; -type Action847 = `${Verb847}_${Resource847}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise847 = T extends Promise ? UnwrapPromise847 : T; -type UnwrapArray847 = T extends (infer U)[] ? UnwrapArray847 : T; -type Head847 = T extends [infer H, ...infer _] ? H : never; -type Tail847 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation847 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation847>] - : never; +interface Registry_08_47 { + entities: Map; + validators: EV_0847; + paths: Set; + merged: DeepMerge_0847; +} -type SmallUnion847 = "a" | "b" | "c" | "d"; -type AllPerms847 = Permutation847; +type CK_0847 = `p08.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig847, - Flat847, - FR847, - BigUnion847, - ExtractAlpha847, - ExcludeZulu847, - OptionalAll847, - RequiredAll847, - ReadonlyAll847, - NullableAll847, - TypeNames847, - Action847, - AllPerms847, -}; +export type { Entity_08_47, Registry_08_47, CK_0847, EP_0847, EV_0847, DeepMerge_0847 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts index 95ff0924..ba984ef1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-48.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-48 (seed 848) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-48 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0848 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0848 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord848 { - a848: { x: number; y: string; z: boolean }; - b848: { p: string[]; q: Record }; - c848: { nested: { deep: { deeper: { deepest: string } } } }; - d848: number; - e848: string; - f848: boolean; - g848: null; - h848: undefined; - i848: bigint; - j848: symbol; +interface Entity_08_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_48 | null; children: Entity_08_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0848: number; y0848: string; z0848: boolean }; } -type PartialBig848 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten848 = T extends Array ? Flatten848 : T; -type Nested848 = number[][][][][][][][][][]; -type Flat848 = Flatten848; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly848 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly848 : T[K]; -}; -type DeepRequired848 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired848 : T[K]; +type Path_0848 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0848}` }[keyof T & string] : never; +type EP_0848 = Path_0848; + +type Val_0848 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0848 } + : T[K] extends object ? { t: 'o'; props: Val_0848 } + : { t: 'u' }; }; -type FR848 = DeepReadonly848>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion848 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha848 = Extract; -type ExcludeZulu848 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA848 { width: number; height: number; depth: number } -interface ShapeB848 { color: string; opacity: number; blend: string } -interface ShapeC848 { x: number; y: number; z: number; w: number } -interface ShapeD848 { label: string; title: string; summary: string } - -type Combined848 = ShapeA848 & ShapeB848 & ShapeC848 & ShapeD848; -type OptionalAll848 = { [K in keyof Combined848]?: Combined848[K] }; -type RequiredAll848 = { [K in keyof Combined848]-?: Combined848[K] }; -type ReadonlyAll848 = { readonly [K in keyof Combined848]: Combined848[K] }; -type NullableAll848 = { [K in keyof Combined848]: Combined848[K] | null }; +type EV_0848 = Val_0848; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString848 = T extends string ? true : false; -type IsNumber848 = T extends number ? true : false; -type TypeName848 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames848 = { - [K in keyof BigRecord848]: TypeName848; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb848 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource848 = "user" | "post" | "comment" | "tag" | "category"; -type Action848 = `${Verb848}_${Resource848}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise848 = T extends Promise ? UnwrapPromise848 : T; -type UnwrapArray848 = T extends (infer U)[] ? UnwrapArray848 : T; -type Head848 = T extends [infer H, ...infer _] ? H : never; -type Tail848 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation848 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation848>] - : never; +interface Registry_08_48 { + entities: Map; + validators: EV_0848; + paths: Set; + merged: DeepMerge_0848; +} -type SmallUnion848 = "a" | "b" | "c" | "d"; -type AllPerms848 = Permutation848; +type CK_0848 = `p08.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig848, - Flat848, - FR848, - BigUnion848, - ExtractAlpha848, - ExcludeZulu848, - OptionalAll848, - RequiredAll848, - ReadonlyAll848, - NullableAll848, - TypeNames848, - Action848, - AllPerms848, -}; +export type { Entity_08_48, Registry_08_48, CK_0848, EP_0848, EV_0848, DeepMerge_0848 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts index 563dfd48..5c7ac70e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-49.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-49 (seed 849) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-49 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0849 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0849 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord849 { - a849: { x: number; y: string; z: boolean }; - b849: { p: string[]; q: Record }; - c849: { nested: { deep: { deeper: { deepest: string } } } }; - d849: number; - e849: string; - f849: boolean; - g849: null; - h849: undefined; - i849: bigint; - j849: symbol; +interface Entity_08_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_49 | null; children: Entity_08_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0849: number; y0849: string; z0849: boolean }; } -type PartialBig849 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten849 = T extends Array ? Flatten849 : T; -type Nested849 = number[][][][][][][][][][]; -type Flat849 = Flatten849; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly849 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly849 : T[K]; -}; -type DeepRequired849 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired849 : T[K]; +type Path_0849 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0849}` }[keyof T & string] : never; +type EP_0849 = Path_0849; + +type Val_0849 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0849 } + : T[K] extends object ? { t: 'o'; props: Val_0849 } + : { t: 'u' }; }; -type FR849 = DeepReadonly849>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion849 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha849 = Extract; -type ExcludeZulu849 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA849 { width: number; height: number; depth: number } -interface ShapeB849 { color: string; opacity: number; blend: string } -interface ShapeC849 { x: number; y: number; z: number; w: number } -interface ShapeD849 { label: string; title: string; summary: string } - -type Combined849 = ShapeA849 & ShapeB849 & ShapeC849 & ShapeD849; -type OptionalAll849 = { [K in keyof Combined849]?: Combined849[K] }; -type RequiredAll849 = { [K in keyof Combined849]-?: Combined849[K] }; -type ReadonlyAll849 = { readonly [K in keyof Combined849]: Combined849[K] }; -type NullableAll849 = { [K in keyof Combined849]: Combined849[K] | null }; +type EV_0849 = Val_0849; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString849 = T extends string ? true : false; -type IsNumber849 = T extends number ? true : false; -type TypeName849 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames849 = { - [K in keyof BigRecord849]: TypeName849; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb849 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource849 = "user" | "post" | "comment" | "tag" | "category"; -type Action849 = `${Verb849}_${Resource849}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise849 = T extends Promise ? UnwrapPromise849 : T; -type UnwrapArray849 = T extends (infer U)[] ? UnwrapArray849 : T; -type Head849 = T extends [infer H, ...infer _] ? H : never; -type Tail849 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation849 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation849>] - : never; +interface Registry_08_49 { + entities: Map; + validators: EV_0849; + paths: Set; + merged: DeepMerge_0849; +} -type SmallUnion849 = "a" | "b" | "c" | "d"; -type AllPerms849 = Permutation849; +type CK_0849 = `p08.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig849, - Flat849, - FR849, - BigUnion849, - ExtractAlpha849, - ExcludeZulu849, - OptionalAll849, - RequiredAll849, - ReadonlyAll849, - NullableAll849, - TypeNames849, - Action849, - AllPerms849, -}; +export type { Entity_08_49, Registry_08_49, CK_0849, EP_0849, EV_0849, DeepMerge_0849 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts index d99b6e4d..d80c1967 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-08/types-50.ts @@ -1,125 +1,50 @@ -// pkg-08 / types-50 (seed 850) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-08/types-50 - heavy interconnected types + +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; +import type { Entity_5_01, Registry_5_01 } from '../pkg-05/types-01'; +import type { Entity_5_10, Registry_5_10 } from '../pkg-05/types-10'; +import type { Entity_5_20, Registry_5_20 } from '../pkg-05/types-20'; + +type DeepMerge_0850 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0850 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord850 { - a850: { x: number; y: string; z: boolean }; - b850: { p: string[]; q: Record }; - c850: { nested: { deep: { deeper: { deepest: string } } } }; - d850: number; - e850: string; - f850: boolean; - g850: null; - h850: undefined; - i850: bigint; - j850: symbol; +interface Entity_08_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_08_50 | null; children: Entity_08_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0850: number; y0850: string; z0850: boolean }; } -type PartialBig850 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten850 = T extends Array ? Flatten850 : T; -type Nested850 = number[][][][][][][][][][]; -type Flat850 = Flatten850; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly850 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly850 : T[K]; -}; -type DeepRequired850 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired850 : T[K]; +type Path_0850 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0850}` }[keyof T & string] : never; +type EP_0850 = Path_0850; + +type Val_0850 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0850 } + : T[K] extends object ? { t: 'o'; props: Val_0850 } + : { t: 'u' }; }; -type FR850 = DeepReadonly850>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion850 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha850 = Extract; -type ExcludeZulu850 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA850 { width: number; height: number; depth: number } -interface ShapeB850 { color: string; opacity: number; blend: string } -interface ShapeC850 { x: number; y: number; z: number; w: number } -interface ShapeD850 { label: string; title: string; summary: string } - -type Combined850 = ShapeA850 & ShapeB850 & ShapeC850 & ShapeD850; -type OptionalAll850 = { [K in keyof Combined850]?: Combined850[K] }; -type RequiredAll850 = { [K in keyof Combined850]-?: Combined850[K] }; -type ReadonlyAll850 = { readonly [K in keyof Combined850]: Combined850[K] }; -type NullableAll850 = { [K in keyof Combined850]: Combined850[K] | null }; +type EV_0850 = Val_0850; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString850 = T extends string ? true : false; -type IsNumber850 = T extends number ? true : false; -type TypeName850 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames850 = { - [K in keyof BigRecord850]: TypeName850; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb850 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource850 = "user" | "post" | "comment" | "tag" | "category"; -type Action850 = `${Verb850}_${Resource850}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise850 = T extends Promise ? UnwrapPromise850 : T; -type UnwrapArray850 = T extends (infer U)[] ? UnwrapArray850 : T; -type Head850 = T extends [infer H, ...infer _] ? H : never; -type Tail850 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation850 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation850>] - : never; +interface Registry_08_50 { + entities: Map; + validators: EV_0850; + paths: Set; + merged: DeepMerge_0850; +} -type SmallUnion850 = "a" | "b" | "c" | "d"; -type AllPerms850 = Permutation850; +type CK_0850 = `p08.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig850, - Flat850, - FR850, - BigUnion850, - ExtractAlpha850, - ExcludeZulu850, - OptionalAll850, - RequiredAll850, - ReadonlyAll850, - NullableAll850, - TypeNames850, - Action850, - AllPerms850, -}; +export type { Entity_08_50, Registry_08_50, CK_0850, EP_0850, EV_0850, DeepMerge_0850 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts index 36bcb72c..bff6f883 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-01.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-01 (seed 901) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-01 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0901 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0901 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord901 { - a901: { x: number; y: string; z: boolean }; - b901: { p: string[]; q: Record }; - c901: { nested: { deep: { deeper: { deepest: string } } } }; - d901: number; - e901: string; - f901: boolean; - g901: null; - h901: undefined; - i901: bigint; - j901: symbol; +interface Entity_09_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_01 | null; children: Entity_09_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x0901: number; y0901: string; z0901: boolean }; } -type PartialBig901 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten901 = T extends Array ? Flatten901 : T; -type Nested901 = number[][][][][][][][][][]; -type Flat901 = Flatten901; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly901 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly901 : T[K]; -}; -type DeepRequired901 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired901 : T[K]; +type Path_0901 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0901}` }[keyof T & string] : never; +type EP_0901 = Path_0901; + +type Val_0901 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0901 } + : T[K] extends object ? { t: 'o'; props: Val_0901 } + : { t: 'u' }; }; -type FR901 = DeepReadonly901>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion901 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha901 = Extract; -type ExcludeZulu901 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA901 { width: number; height: number; depth: number } -interface ShapeB901 { color: string; opacity: number; blend: string } -interface ShapeC901 { x: number; y: number; z: number; w: number } -interface ShapeD901 { label: string; title: string; summary: string } - -type Combined901 = ShapeA901 & ShapeB901 & ShapeC901 & ShapeD901; -type OptionalAll901 = { [K in keyof Combined901]?: Combined901[K] }; -type RequiredAll901 = { [K in keyof Combined901]-?: Combined901[K] }; -type ReadonlyAll901 = { readonly [K in keyof Combined901]: Combined901[K] }; -type NullableAll901 = { [K in keyof Combined901]: Combined901[K] | null }; +type EV_0901 = Val_0901; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString901 = T extends string ? true : false; -type IsNumber901 = T extends number ? true : false; -type TypeName901 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames901 = { - [K in keyof BigRecord901]: TypeName901; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb901 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource901 = "user" | "post" | "comment" | "tag" | "category"; -type Action901 = `${Verb901}_${Resource901}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise901 = T extends Promise ? UnwrapPromise901 : T; -type UnwrapArray901 = T extends (infer U)[] ? UnwrapArray901 : T; -type Head901 = T extends [infer H, ...infer _] ? H : never; -type Tail901 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation901 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation901>] - : never; +interface Registry_09_01 { + entities: Map; + validators: EV_0901; + paths: Set; + merged: DeepMerge_0901; +} -type SmallUnion901 = "a" | "b" | "c" | "d"; -type AllPerms901 = Permutation901; +type CK_0901 = `p09.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig901, - Flat901, - FR901, - BigUnion901, - ExtractAlpha901, - ExcludeZulu901, - OptionalAll901, - RequiredAll901, - ReadonlyAll901, - NullableAll901, - TypeNames901, - Action901, - AllPerms901, -}; +export type { Entity_09_01, Registry_09_01, CK_0901, EP_0901, EV_0901, DeepMerge_0901 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts index 2b61cd5c..c255fcda 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-02.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-02 (seed 902) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-02 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0902 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0902 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord902 { - a902: { x: number; y: string; z: boolean }; - b902: { p: string[]; q: Record }; - c902: { nested: { deep: { deeper: { deepest: string } } } }; - d902: number; - e902: string; - f902: boolean; - g902: null; - h902: undefined; - i902: bigint; - j902: symbol; +interface Entity_09_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_02 | null; children: Entity_09_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x0902: number; y0902: string; z0902: boolean }; } -type PartialBig902 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten902 = T extends Array ? Flatten902 : T; -type Nested902 = number[][][][][][][][][][]; -type Flat902 = Flatten902; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly902 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly902 : T[K]; -}; -type DeepRequired902 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired902 : T[K]; +type Path_0902 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0902}` }[keyof T & string] : never; +type EP_0902 = Path_0902; + +type Val_0902 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0902 } + : T[K] extends object ? { t: 'o'; props: Val_0902 } + : { t: 'u' }; }; -type FR902 = DeepReadonly902>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion902 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha902 = Extract; -type ExcludeZulu902 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA902 { width: number; height: number; depth: number } -interface ShapeB902 { color: string; opacity: number; blend: string } -interface ShapeC902 { x: number; y: number; z: number; w: number } -interface ShapeD902 { label: string; title: string; summary: string } - -type Combined902 = ShapeA902 & ShapeB902 & ShapeC902 & ShapeD902; -type OptionalAll902 = { [K in keyof Combined902]?: Combined902[K] }; -type RequiredAll902 = { [K in keyof Combined902]-?: Combined902[K] }; -type ReadonlyAll902 = { readonly [K in keyof Combined902]: Combined902[K] }; -type NullableAll902 = { [K in keyof Combined902]: Combined902[K] | null }; +type EV_0902 = Val_0902; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString902 = T extends string ? true : false; -type IsNumber902 = T extends number ? true : false; -type TypeName902 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames902 = { - [K in keyof BigRecord902]: TypeName902; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb902 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource902 = "user" | "post" | "comment" | "tag" | "category"; -type Action902 = `${Verb902}_${Resource902}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise902 = T extends Promise ? UnwrapPromise902 : T; -type UnwrapArray902 = T extends (infer U)[] ? UnwrapArray902 : T; -type Head902 = T extends [infer H, ...infer _] ? H : never; -type Tail902 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation902 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation902>] - : never; +interface Registry_09_02 { + entities: Map; + validators: EV_0902; + paths: Set; + merged: DeepMerge_0902; +} -type SmallUnion902 = "a" | "b" | "c" | "d"; -type AllPerms902 = Permutation902; +type CK_0902 = `p09.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig902, - Flat902, - FR902, - BigUnion902, - ExtractAlpha902, - ExcludeZulu902, - OptionalAll902, - RequiredAll902, - ReadonlyAll902, - NullableAll902, - TypeNames902, - Action902, - AllPerms902, -}; +export type { Entity_09_02, Registry_09_02, CK_0902, EP_0902, EV_0902, DeepMerge_0902 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts index e4c389a3..dbe65716 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-03.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-03 (seed 903) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-03 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0903 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0903 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord903 { - a903: { x: number; y: string; z: boolean }; - b903: { p: string[]; q: Record }; - c903: { nested: { deep: { deeper: { deepest: string } } } }; - d903: number; - e903: string; - f903: boolean; - g903: null; - h903: undefined; - i903: bigint; - j903: symbol; +interface Entity_09_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_03 | null; children: Entity_09_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x0903: number; y0903: string; z0903: boolean }; } -type PartialBig903 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten903 = T extends Array ? Flatten903 : T; -type Nested903 = number[][][][][][][][][][]; -type Flat903 = Flatten903; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly903 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly903 : T[K]; -}; -type DeepRequired903 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired903 : T[K]; +type Path_0903 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0903}` }[keyof T & string] : never; +type EP_0903 = Path_0903; + +type Val_0903 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0903 } + : T[K] extends object ? { t: 'o'; props: Val_0903 } + : { t: 'u' }; }; -type FR903 = DeepReadonly903>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion903 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha903 = Extract; -type ExcludeZulu903 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA903 { width: number; height: number; depth: number } -interface ShapeB903 { color: string; opacity: number; blend: string } -interface ShapeC903 { x: number; y: number; z: number; w: number } -interface ShapeD903 { label: string; title: string; summary: string } - -type Combined903 = ShapeA903 & ShapeB903 & ShapeC903 & ShapeD903; -type OptionalAll903 = { [K in keyof Combined903]?: Combined903[K] }; -type RequiredAll903 = { [K in keyof Combined903]-?: Combined903[K] }; -type ReadonlyAll903 = { readonly [K in keyof Combined903]: Combined903[K] }; -type NullableAll903 = { [K in keyof Combined903]: Combined903[K] | null }; +type EV_0903 = Val_0903; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString903 = T extends string ? true : false; -type IsNumber903 = T extends number ? true : false; -type TypeName903 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames903 = { - [K in keyof BigRecord903]: TypeName903; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb903 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource903 = "user" | "post" | "comment" | "tag" | "category"; -type Action903 = `${Verb903}_${Resource903}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise903 = T extends Promise ? UnwrapPromise903 : T; -type UnwrapArray903 = T extends (infer U)[] ? UnwrapArray903 : T; -type Head903 = T extends [infer H, ...infer _] ? H : never; -type Tail903 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation903 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation903>] - : never; +interface Registry_09_03 { + entities: Map; + validators: EV_0903; + paths: Set; + merged: DeepMerge_0903; +} -type SmallUnion903 = "a" | "b" | "c" | "d"; -type AllPerms903 = Permutation903; +type CK_0903 = `p09.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig903, - Flat903, - FR903, - BigUnion903, - ExtractAlpha903, - ExcludeZulu903, - OptionalAll903, - RequiredAll903, - ReadonlyAll903, - NullableAll903, - TypeNames903, - Action903, - AllPerms903, -}; +export type { Entity_09_03, Registry_09_03, CK_0903, EP_0903, EV_0903, DeepMerge_0903 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts index e5a706a8..1b62fb49 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-04.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-04 (seed 904) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-04 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0904 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0904 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord904 { - a904: { x: number; y: string; z: boolean }; - b904: { p: string[]; q: Record }; - c904: { nested: { deep: { deeper: { deepest: string } } } }; - d904: number; - e904: string; - f904: boolean; - g904: null; - h904: undefined; - i904: bigint; - j904: symbol; +interface Entity_09_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_04 | null; children: Entity_09_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x0904: number; y0904: string; z0904: boolean }; } -type PartialBig904 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten904 = T extends Array ? Flatten904 : T; -type Nested904 = number[][][][][][][][][][]; -type Flat904 = Flatten904; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly904 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly904 : T[K]; -}; -type DeepRequired904 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired904 : T[K]; +type Path_0904 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0904}` }[keyof T & string] : never; +type EP_0904 = Path_0904; + +type Val_0904 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0904 } + : T[K] extends object ? { t: 'o'; props: Val_0904 } + : { t: 'u' }; }; -type FR904 = DeepReadonly904>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion904 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha904 = Extract; -type ExcludeZulu904 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA904 { width: number; height: number; depth: number } -interface ShapeB904 { color: string; opacity: number; blend: string } -interface ShapeC904 { x: number; y: number; z: number; w: number } -interface ShapeD904 { label: string; title: string; summary: string } - -type Combined904 = ShapeA904 & ShapeB904 & ShapeC904 & ShapeD904; -type OptionalAll904 = { [K in keyof Combined904]?: Combined904[K] }; -type RequiredAll904 = { [K in keyof Combined904]-?: Combined904[K] }; -type ReadonlyAll904 = { readonly [K in keyof Combined904]: Combined904[K] }; -type NullableAll904 = { [K in keyof Combined904]: Combined904[K] | null }; +type EV_0904 = Val_0904; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString904 = T extends string ? true : false; -type IsNumber904 = T extends number ? true : false; -type TypeName904 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames904 = { - [K in keyof BigRecord904]: TypeName904; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb904 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource904 = "user" | "post" | "comment" | "tag" | "category"; -type Action904 = `${Verb904}_${Resource904}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise904 = T extends Promise ? UnwrapPromise904 : T; -type UnwrapArray904 = T extends (infer U)[] ? UnwrapArray904 : T; -type Head904 = T extends [infer H, ...infer _] ? H : never; -type Tail904 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation904 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation904>] - : never; +interface Registry_09_04 { + entities: Map; + validators: EV_0904; + paths: Set; + merged: DeepMerge_0904; +} -type SmallUnion904 = "a" | "b" | "c" | "d"; -type AllPerms904 = Permutation904; +type CK_0904 = `p09.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig904, - Flat904, - FR904, - BigUnion904, - ExtractAlpha904, - ExcludeZulu904, - OptionalAll904, - RequiredAll904, - ReadonlyAll904, - NullableAll904, - TypeNames904, - Action904, - AllPerms904, -}; +export type { Entity_09_04, Registry_09_04, CK_0904, EP_0904, EV_0904, DeepMerge_0904 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts index 2cb186cd..c859b1b7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-05.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-05 (seed 905) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-05 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0905 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0905 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord905 { - a905: { x: number; y: string; z: boolean }; - b905: { p: string[]; q: Record }; - c905: { nested: { deep: { deeper: { deepest: string } } } }; - d905: number; - e905: string; - f905: boolean; - g905: null; - h905: undefined; - i905: bigint; - j905: symbol; +interface Entity_09_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_05 | null; children: Entity_09_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x0905: number; y0905: string; z0905: boolean }; } -type PartialBig905 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten905 = T extends Array ? Flatten905 : T; -type Nested905 = number[][][][][][][][][][]; -type Flat905 = Flatten905; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly905 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly905 : T[K]; -}; -type DeepRequired905 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired905 : T[K]; +type Path_0905 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0905}` }[keyof T & string] : never; +type EP_0905 = Path_0905; + +type Val_0905 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0905 } + : T[K] extends object ? { t: 'o'; props: Val_0905 } + : { t: 'u' }; }; -type FR905 = DeepReadonly905>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion905 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha905 = Extract; -type ExcludeZulu905 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA905 { width: number; height: number; depth: number } -interface ShapeB905 { color: string; opacity: number; blend: string } -interface ShapeC905 { x: number; y: number; z: number; w: number } -interface ShapeD905 { label: string; title: string; summary: string } - -type Combined905 = ShapeA905 & ShapeB905 & ShapeC905 & ShapeD905; -type OptionalAll905 = { [K in keyof Combined905]?: Combined905[K] }; -type RequiredAll905 = { [K in keyof Combined905]-?: Combined905[K] }; -type ReadonlyAll905 = { readonly [K in keyof Combined905]: Combined905[K] }; -type NullableAll905 = { [K in keyof Combined905]: Combined905[K] | null }; +type EV_0905 = Val_0905; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString905 = T extends string ? true : false; -type IsNumber905 = T extends number ? true : false; -type TypeName905 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames905 = { - [K in keyof BigRecord905]: TypeName905; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb905 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource905 = "user" | "post" | "comment" | "tag" | "category"; -type Action905 = `${Verb905}_${Resource905}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise905 = T extends Promise ? UnwrapPromise905 : T; -type UnwrapArray905 = T extends (infer U)[] ? UnwrapArray905 : T; -type Head905 = T extends [infer H, ...infer _] ? H : never; -type Tail905 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation905 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation905>] - : never; +interface Registry_09_05 { + entities: Map; + validators: EV_0905; + paths: Set; + merged: DeepMerge_0905; +} -type SmallUnion905 = "a" | "b" | "c" | "d"; -type AllPerms905 = Permutation905; +type CK_0905 = `p09.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig905, - Flat905, - FR905, - BigUnion905, - ExtractAlpha905, - ExcludeZulu905, - OptionalAll905, - RequiredAll905, - ReadonlyAll905, - NullableAll905, - TypeNames905, - Action905, - AllPerms905, -}; +export type { Entity_09_05, Registry_09_05, CK_0905, EP_0905, EV_0905, DeepMerge_0905 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts index ce995533..295f15d1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-06.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-06 (seed 906) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-06 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0906 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0906 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord906 { - a906: { x: number; y: string; z: boolean }; - b906: { p: string[]; q: Record }; - c906: { nested: { deep: { deeper: { deepest: string } } } }; - d906: number; - e906: string; - f906: boolean; - g906: null; - h906: undefined; - i906: bigint; - j906: symbol; +interface Entity_09_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_06 | null; children: Entity_09_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x0906: number; y0906: string; z0906: boolean }; } -type PartialBig906 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten906 = T extends Array ? Flatten906 : T; -type Nested906 = number[][][][][][][][][][]; -type Flat906 = Flatten906; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly906 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly906 : T[K]; -}; -type DeepRequired906 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired906 : T[K]; +type Path_0906 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0906}` }[keyof T & string] : never; +type EP_0906 = Path_0906; + +type Val_0906 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0906 } + : T[K] extends object ? { t: 'o'; props: Val_0906 } + : { t: 'u' }; }; -type FR906 = DeepReadonly906>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion906 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha906 = Extract; -type ExcludeZulu906 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA906 { width: number; height: number; depth: number } -interface ShapeB906 { color: string; opacity: number; blend: string } -interface ShapeC906 { x: number; y: number; z: number; w: number } -interface ShapeD906 { label: string; title: string; summary: string } - -type Combined906 = ShapeA906 & ShapeB906 & ShapeC906 & ShapeD906; -type OptionalAll906 = { [K in keyof Combined906]?: Combined906[K] }; -type RequiredAll906 = { [K in keyof Combined906]-?: Combined906[K] }; -type ReadonlyAll906 = { readonly [K in keyof Combined906]: Combined906[K] }; -type NullableAll906 = { [K in keyof Combined906]: Combined906[K] | null }; +type EV_0906 = Val_0906; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString906 = T extends string ? true : false; -type IsNumber906 = T extends number ? true : false; -type TypeName906 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames906 = { - [K in keyof BigRecord906]: TypeName906; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb906 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource906 = "user" | "post" | "comment" | "tag" | "category"; -type Action906 = `${Verb906}_${Resource906}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise906 = T extends Promise ? UnwrapPromise906 : T; -type UnwrapArray906 = T extends (infer U)[] ? UnwrapArray906 : T; -type Head906 = T extends [infer H, ...infer _] ? H : never; -type Tail906 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation906 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation906>] - : never; +interface Registry_09_06 { + entities: Map; + validators: EV_0906; + paths: Set; + merged: DeepMerge_0906; +} -type SmallUnion906 = "a" | "b" | "c" | "d"; -type AllPerms906 = Permutation906; +type CK_0906 = `p09.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig906, - Flat906, - FR906, - BigUnion906, - ExtractAlpha906, - ExcludeZulu906, - OptionalAll906, - RequiredAll906, - ReadonlyAll906, - NullableAll906, - TypeNames906, - Action906, - AllPerms906, -}; +export type { Entity_09_06, Registry_09_06, CK_0906, EP_0906, EV_0906, DeepMerge_0906 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts index 80c0497d..ec3f9c7a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-07.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-07 (seed 907) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-07 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0907 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0907 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord907 { - a907: { x: number; y: string; z: boolean }; - b907: { p: string[]; q: Record }; - c907: { nested: { deep: { deeper: { deepest: string } } } }; - d907: number; - e907: string; - f907: boolean; - g907: null; - h907: undefined; - i907: bigint; - j907: symbol; +interface Entity_09_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_07 | null; children: Entity_09_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x0907: number; y0907: string; z0907: boolean }; } -type PartialBig907 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten907 = T extends Array ? Flatten907 : T; -type Nested907 = number[][][][][][][][][][]; -type Flat907 = Flatten907; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly907 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly907 : T[K]; -}; -type DeepRequired907 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired907 : T[K]; +type Path_0907 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0907}` }[keyof T & string] : never; +type EP_0907 = Path_0907; + +type Val_0907 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0907 } + : T[K] extends object ? { t: 'o'; props: Val_0907 } + : { t: 'u' }; }; -type FR907 = DeepReadonly907>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion907 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha907 = Extract; -type ExcludeZulu907 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA907 { width: number; height: number; depth: number } -interface ShapeB907 { color: string; opacity: number; blend: string } -interface ShapeC907 { x: number; y: number; z: number; w: number } -interface ShapeD907 { label: string; title: string; summary: string } - -type Combined907 = ShapeA907 & ShapeB907 & ShapeC907 & ShapeD907; -type OptionalAll907 = { [K in keyof Combined907]?: Combined907[K] }; -type RequiredAll907 = { [K in keyof Combined907]-?: Combined907[K] }; -type ReadonlyAll907 = { readonly [K in keyof Combined907]: Combined907[K] }; -type NullableAll907 = { [K in keyof Combined907]: Combined907[K] | null }; +type EV_0907 = Val_0907; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString907 = T extends string ? true : false; -type IsNumber907 = T extends number ? true : false; -type TypeName907 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames907 = { - [K in keyof BigRecord907]: TypeName907; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb907 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource907 = "user" | "post" | "comment" | "tag" | "category"; -type Action907 = `${Verb907}_${Resource907}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise907 = T extends Promise ? UnwrapPromise907 : T; -type UnwrapArray907 = T extends (infer U)[] ? UnwrapArray907 : T; -type Head907 = T extends [infer H, ...infer _] ? H : never; -type Tail907 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation907 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation907>] - : never; +interface Registry_09_07 { + entities: Map; + validators: EV_0907; + paths: Set; + merged: DeepMerge_0907; +} -type SmallUnion907 = "a" | "b" | "c" | "d"; -type AllPerms907 = Permutation907; +type CK_0907 = `p09.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig907, - Flat907, - FR907, - BigUnion907, - ExtractAlpha907, - ExcludeZulu907, - OptionalAll907, - RequiredAll907, - ReadonlyAll907, - NullableAll907, - TypeNames907, - Action907, - AllPerms907, -}; +export type { Entity_09_07, Registry_09_07, CK_0907, EP_0907, EV_0907, DeepMerge_0907 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts index 71a68851..64a513a3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-08.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-08 (seed 908) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-08 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0908 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0908 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord908 { - a908: { x: number; y: string; z: boolean }; - b908: { p: string[]; q: Record }; - c908: { nested: { deep: { deeper: { deepest: string } } } }; - d908: number; - e908: string; - f908: boolean; - g908: null; - h908: undefined; - i908: bigint; - j908: symbol; +interface Entity_09_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_08 | null; children: Entity_09_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x0908: number; y0908: string; z0908: boolean }; } -type PartialBig908 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten908 = T extends Array ? Flatten908 : T; -type Nested908 = number[][][][][][][][][][]; -type Flat908 = Flatten908; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly908 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly908 : T[K]; -}; -type DeepRequired908 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired908 : T[K]; +type Path_0908 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0908}` }[keyof T & string] : never; +type EP_0908 = Path_0908; + +type Val_0908 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0908 } + : T[K] extends object ? { t: 'o'; props: Val_0908 } + : { t: 'u' }; }; -type FR908 = DeepReadonly908>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion908 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha908 = Extract; -type ExcludeZulu908 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA908 { width: number; height: number; depth: number } -interface ShapeB908 { color: string; opacity: number; blend: string } -interface ShapeC908 { x: number; y: number; z: number; w: number } -interface ShapeD908 { label: string; title: string; summary: string } - -type Combined908 = ShapeA908 & ShapeB908 & ShapeC908 & ShapeD908; -type OptionalAll908 = { [K in keyof Combined908]?: Combined908[K] }; -type RequiredAll908 = { [K in keyof Combined908]-?: Combined908[K] }; -type ReadonlyAll908 = { readonly [K in keyof Combined908]: Combined908[K] }; -type NullableAll908 = { [K in keyof Combined908]: Combined908[K] | null }; +type EV_0908 = Val_0908; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString908 = T extends string ? true : false; -type IsNumber908 = T extends number ? true : false; -type TypeName908 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames908 = { - [K in keyof BigRecord908]: TypeName908; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb908 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource908 = "user" | "post" | "comment" | "tag" | "category"; -type Action908 = `${Verb908}_${Resource908}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise908 = T extends Promise ? UnwrapPromise908 : T; -type UnwrapArray908 = T extends (infer U)[] ? UnwrapArray908 : T; -type Head908 = T extends [infer H, ...infer _] ? H : never; -type Tail908 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation908 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation908>] - : never; +interface Registry_09_08 { + entities: Map; + validators: EV_0908; + paths: Set; + merged: DeepMerge_0908; +} -type SmallUnion908 = "a" | "b" | "c" | "d"; -type AllPerms908 = Permutation908; +type CK_0908 = `p09.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig908, - Flat908, - FR908, - BigUnion908, - ExtractAlpha908, - ExcludeZulu908, - OptionalAll908, - RequiredAll908, - ReadonlyAll908, - NullableAll908, - TypeNames908, - Action908, - AllPerms908, -}; +export type { Entity_09_08, Registry_09_08, CK_0908, EP_0908, EV_0908, DeepMerge_0908 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts index 8ed0bc2c..32550ebc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-09.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-09 (seed 909) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-09 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0909 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0909 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord909 { - a909: { x: number; y: string; z: boolean }; - b909: { p: string[]; q: Record }; - c909: { nested: { deep: { deeper: { deepest: string } } } }; - d909: number; - e909: string; - f909: boolean; - g909: null; - h909: undefined; - i909: bigint; - j909: symbol; +interface Entity_09_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_09 | null; children: Entity_09_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x0909: number; y0909: string; z0909: boolean }; } -type PartialBig909 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten909 = T extends Array ? Flatten909 : T; -type Nested909 = number[][][][][][][][][][]; -type Flat909 = Flatten909; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly909 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly909 : T[K]; -}; -type DeepRequired909 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired909 : T[K]; +type Path_0909 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0909}` }[keyof T & string] : never; +type EP_0909 = Path_0909; + +type Val_0909 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0909 } + : T[K] extends object ? { t: 'o'; props: Val_0909 } + : { t: 'u' }; }; -type FR909 = DeepReadonly909>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion909 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha909 = Extract; -type ExcludeZulu909 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA909 { width: number; height: number; depth: number } -interface ShapeB909 { color: string; opacity: number; blend: string } -interface ShapeC909 { x: number; y: number; z: number; w: number } -interface ShapeD909 { label: string; title: string; summary: string } - -type Combined909 = ShapeA909 & ShapeB909 & ShapeC909 & ShapeD909; -type OptionalAll909 = { [K in keyof Combined909]?: Combined909[K] }; -type RequiredAll909 = { [K in keyof Combined909]-?: Combined909[K] }; -type ReadonlyAll909 = { readonly [K in keyof Combined909]: Combined909[K] }; -type NullableAll909 = { [K in keyof Combined909]: Combined909[K] | null }; +type EV_0909 = Val_0909; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString909 = T extends string ? true : false; -type IsNumber909 = T extends number ? true : false; -type TypeName909 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames909 = { - [K in keyof BigRecord909]: TypeName909; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb909 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource909 = "user" | "post" | "comment" | "tag" | "category"; -type Action909 = `${Verb909}_${Resource909}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise909 = T extends Promise ? UnwrapPromise909 : T; -type UnwrapArray909 = T extends (infer U)[] ? UnwrapArray909 : T; -type Head909 = T extends [infer H, ...infer _] ? H : never; -type Tail909 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation909 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation909>] - : never; +interface Registry_09_09 { + entities: Map; + validators: EV_0909; + paths: Set; + merged: DeepMerge_0909; +} -type SmallUnion909 = "a" | "b" | "c" | "d"; -type AllPerms909 = Permutation909; +type CK_0909 = `p09.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig909, - Flat909, - FR909, - BigUnion909, - ExtractAlpha909, - ExcludeZulu909, - OptionalAll909, - RequiredAll909, - ReadonlyAll909, - NullableAll909, - TypeNames909, - Action909, - AllPerms909, -}; +export type { Entity_09_09, Registry_09_09, CK_0909, EP_0909, EV_0909, DeepMerge_0909 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts index 34652703..89e35d48 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-10.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-10 (seed 910) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-10 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0910 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0910 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord910 { - a910: { x: number; y: string; z: boolean }; - b910: { p: string[]; q: Record }; - c910: { nested: { deep: { deeper: { deepest: string } } } }; - d910: number; - e910: string; - f910: boolean; - g910: null; - h910: undefined; - i910: bigint; - j910: symbol; +interface Entity_09_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_10 | null; children: Entity_09_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x0910: number; y0910: string; z0910: boolean }; } -type PartialBig910 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten910 = T extends Array ? Flatten910 : T; -type Nested910 = number[][][][][][][][][][]; -type Flat910 = Flatten910; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly910 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly910 : T[K]; -}; -type DeepRequired910 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired910 : T[K]; +type Path_0910 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0910}` }[keyof T & string] : never; +type EP_0910 = Path_0910; + +type Val_0910 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0910 } + : T[K] extends object ? { t: 'o'; props: Val_0910 } + : { t: 'u' }; }; -type FR910 = DeepReadonly910>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion910 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha910 = Extract; -type ExcludeZulu910 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA910 { width: number; height: number; depth: number } -interface ShapeB910 { color: string; opacity: number; blend: string } -interface ShapeC910 { x: number; y: number; z: number; w: number } -interface ShapeD910 { label: string; title: string; summary: string } - -type Combined910 = ShapeA910 & ShapeB910 & ShapeC910 & ShapeD910; -type OptionalAll910 = { [K in keyof Combined910]?: Combined910[K] }; -type RequiredAll910 = { [K in keyof Combined910]-?: Combined910[K] }; -type ReadonlyAll910 = { readonly [K in keyof Combined910]: Combined910[K] }; -type NullableAll910 = { [K in keyof Combined910]: Combined910[K] | null }; +type EV_0910 = Val_0910; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString910 = T extends string ? true : false; -type IsNumber910 = T extends number ? true : false; -type TypeName910 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames910 = { - [K in keyof BigRecord910]: TypeName910; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb910 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource910 = "user" | "post" | "comment" | "tag" | "category"; -type Action910 = `${Verb910}_${Resource910}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise910 = T extends Promise ? UnwrapPromise910 : T; -type UnwrapArray910 = T extends (infer U)[] ? UnwrapArray910 : T; -type Head910 = T extends [infer H, ...infer _] ? H : never; -type Tail910 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation910 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation910>] - : never; +interface Registry_09_10 { + entities: Map; + validators: EV_0910; + paths: Set; + merged: DeepMerge_0910; +} -type SmallUnion910 = "a" | "b" | "c" | "d"; -type AllPerms910 = Permutation910; +type CK_0910 = `p09.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig910, - Flat910, - FR910, - BigUnion910, - ExtractAlpha910, - ExcludeZulu910, - OptionalAll910, - RequiredAll910, - ReadonlyAll910, - NullableAll910, - TypeNames910, - Action910, - AllPerms910, -}; +export type { Entity_09_10, Registry_09_10, CK_0910, EP_0910, EV_0910, DeepMerge_0910 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts index b7332b1a..bd485d0a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-11.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-11 (seed 911) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-11 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0911 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0911 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord911 { - a911: { x: number; y: string; z: boolean }; - b911: { p: string[]; q: Record }; - c911: { nested: { deep: { deeper: { deepest: string } } } }; - d911: number; - e911: string; - f911: boolean; - g911: null; - h911: undefined; - i911: bigint; - j911: symbol; +interface Entity_09_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_11 | null; children: Entity_09_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x0911: number; y0911: string; z0911: boolean }; } -type PartialBig911 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten911 = T extends Array ? Flatten911 : T; -type Nested911 = number[][][][][][][][][][]; -type Flat911 = Flatten911; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly911 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly911 : T[K]; -}; -type DeepRequired911 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired911 : T[K]; +type Path_0911 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0911}` }[keyof T & string] : never; +type EP_0911 = Path_0911; + +type Val_0911 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0911 } + : T[K] extends object ? { t: 'o'; props: Val_0911 } + : { t: 'u' }; }; -type FR911 = DeepReadonly911>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion911 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha911 = Extract; -type ExcludeZulu911 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA911 { width: number; height: number; depth: number } -interface ShapeB911 { color: string; opacity: number; blend: string } -interface ShapeC911 { x: number; y: number; z: number; w: number } -interface ShapeD911 { label: string; title: string; summary: string } - -type Combined911 = ShapeA911 & ShapeB911 & ShapeC911 & ShapeD911; -type OptionalAll911 = { [K in keyof Combined911]?: Combined911[K] }; -type RequiredAll911 = { [K in keyof Combined911]-?: Combined911[K] }; -type ReadonlyAll911 = { readonly [K in keyof Combined911]: Combined911[K] }; -type NullableAll911 = { [K in keyof Combined911]: Combined911[K] | null }; +type EV_0911 = Val_0911; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString911 = T extends string ? true : false; -type IsNumber911 = T extends number ? true : false; -type TypeName911 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames911 = { - [K in keyof BigRecord911]: TypeName911; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb911 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource911 = "user" | "post" | "comment" | "tag" | "category"; -type Action911 = `${Verb911}_${Resource911}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise911 = T extends Promise ? UnwrapPromise911 : T; -type UnwrapArray911 = T extends (infer U)[] ? UnwrapArray911 : T; -type Head911 = T extends [infer H, ...infer _] ? H : never; -type Tail911 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation911 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation911>] - : never; +interface Registry_09_11 { + entities: Map; + validators: EV_0911; + paths: Set; + merged: DeepMerge_0911; +} -type SmallUnion911 = "a" | "b" | "c" | "d"; -type AllPerms911 = Permutation911; +type CK_0911 = `p09.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig911, - Flat911, - FR911, - BigUnion911, - ExtractAlpha911, - ExcludeZulu911, - OptionalAll911, - RequiredAll911, - ReadonlyAll911, - NullableAll911, - TypeNames911, - Action911, - AllPerms911, -}; +export type { Entity_09_11, Registry_09_11, CK_0911, EP_0911, EV_0911, DeepMerge_0911 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts index bd9dc712..c3835f24 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-12.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-12 (seed 912) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-12 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0912 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0912 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord912 { - a912: { x: number; y: string; z: boolean }; - b912: { p: string[]; q: Record }; - c912: { nested: { deep: { deeper: { deepest: string } } } }; - d912: number; - e912: string; - f912: boolean; - g912: null; - h912: undefined; - i912: bigint; - j912: symbol; +interface Entity_09_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_12 | null; children: Entity_09_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x0912: number; y0912: string; z0912: boolean }; } -type PartialBig912 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten912 = T extends Array ? Flatten912 : T; -type Nested912 = number[][][][][][][][][][]; -type Flat912 = Flatten912; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly912 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly912 : T[K]; -}; -type DeepRequired912 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired912 : T[K]; +type Path_0912 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0912}` }[keyof T & string] : never; +type EP_0912 = Path_0912; + +type Val_0912 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0912 } + : T[K] extends object ? { t: 'o'; props: Val_0912 } + : { t: 'u' }; }; -type FR912 = DeepReadonly912>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion912 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha912 = Extract; -type ExcludeZulu912 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA912 { width: number; height: number; depth: number } -interface ShapeB912 { color: string; opacity: number; blend: string } -interface ShapeC912 { x: number; y: number; z: number; w: number } -interface ShapeD912 { label: string; title: string; summary: string } - -type Combined912 = ShapeA912 & ShapeB912 & ShapeC912 & ShapeD912; -type OptionalAll912 = { [K in keyof Combined912]?: Combined912[K] }; -type RequiredAll912 = { [K in keyof Combined912]-?: Combined912[K] }; -type ReadonlyAll912 = { readonly [K in keyof Combined912]: Combined912[K] }; -type NullableAll912 = { [K in keyof Combined912]: Combined912[K] | null }; +type EV_0912 = Val_0912; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString912 = T extends string ? true : false; -type IsNumber912 = T extends number ? true : false; -type TypeName912 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames912 = { - [K in keyof BigRecord912]: TypeName912; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb912 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource912 = "user" | "post" | "comment" | "tag" | "category"; -type Action912 = `${Verb912}_${Resource912}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise912 = T extends Promise ? UnwrapPromise912 : T; -type UnwrapArray912 = T extends (infer U)[] ? UnwrapArray912 : T; -type Head912 = T extends [infer H, ...infer _] ? H : never; -type Tail912 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation912 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation912>] - : never; +interface Registry_09_12 { + entities: Map; + validators: EV_0912; + paths: Set; + merged: DeepMerge_0912; +} -type SmallUnion912 = "a" | "b" | "c" | "d"; -type AllPerms912 = Permutation912; +type CK_0912 = `p09.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig912, - Flat912, - FR912, - BigUnion912, - ExtractAlpha912, - ExcludeZulu912, - OptionalAll912, - RequiredAll912, - ReadonlyAll912, - NullableAll912, - TypeNames912, - Action912, - AllPerms912, -}; +export type { Entity_09_12, Registry_09_12, CK_0912, EP_0912, EV_0912, DeepMerge_0912 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts index 1eadfd2e..f906b004 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-13.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-13 (seed 913) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-13 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0913 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0913 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord913 { - a913: { x: number; y: string; z: boolean }; - b913: { p: string[]; q: Record }; - c913: { nested: { deep: { deeper: { deepest: string } } } }; - d913: number; - e913: string; - f913: boolean; - g913: null; - h913: undefined; - i913: bigint; - j913: symbol; +interface Entity_09_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_13 | null; children: Entity_09_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x0913: number; y0913: string; z0913: boolean }; } -type PartialBig913 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten913 = T extends Array ? Flatten913 : T; -type Nested913 = number[][][][][][][][][][]; -type Flat913 = Flatten913; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly913 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly913 : T[K]; -}; -type DeepRequired913 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired913 : T[K]; +type Path_0913 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0913}` }[keyof T & string] : never; +type EP_0913 = Path_0913; + +type Val_0913 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0913 } + : T[K] extends object ? { t: 'o'; props: Val_0913 } + : { t: 'u' }; }; -type FR913 = DeepReadonly913>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion913 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha913 = Extract; -type ExcludeZulu913 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA913 { width: number; height: number; depth: number } -interface ShapeB913 { color: string; opacity: number; blend: string } -interface ShapeC913 { x: number; y: number; z: number; w: number } -interface ShapeD913 { label: string; title: string; summary: string } - -type Combined913 = ShapeA913 & ShapeB913 & ShapeC913 & ShapeD913; -type OptionalAll913 = { [K in keyof Combined913]?: Combined913[K] }; -type RequiredAll913 = { [K in keyof Combined913]-?: Combined913[K] }; -type ReadonlyAll913 = { readonly [K in keyof Combined913]: Combined913[K] }; -type NullableAll913 = { [K in keyof Combined913]: Combined913[K] | null }; +type EV_0913 = Val_0913; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString913 = T extends string ? true : false; -type IsNumber913 = T extends number ? true : false; -type TypeName913 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames913 = { - [K in keyof BigRecord913]: TypeName913; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb913 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource913 = "user" | "post" | "comment" | "tag" | "category"; -type Action913 = `${Verb913}_${Resource913}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise913 = T extends Promise ? UnwrapPromise913 : T; -type UnwrapArray913 = T extends (infer U)[] ? UnwrapArray913 : T; -type Head913 = T extends [infer H, ...infer _] ? H : never; -type Tail913 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation913 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation913>] - : never; +interface Registry_09_13 { + entities: Map; + validators: EV_0913; + paths: Set; + merged: DeepMerge_0913; +} -type SmallUnion913 = "a" | "b" | "c" | "d"; -type AllPerms913 = Permutation913; +type CK_0913 = `p09.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig913, - Flat913, - FR913, - BigUnion913, - ExtractAlpha913, - ExcludeZulu913, - OptionalAll913, - RequiredAll913, - ReadonlyAll913, - NullableAll913, - TypeNames913, - Action913, - AllPerms913, -}; +export type { Entity_09_13, Registry_09_13, CK_0913, EP_0913, EV_0913, DeepMerge_0913 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts index 6d1fa02d..dd62e61e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-14.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-14 (seed 914) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-14 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0914 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0914 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord914 { - a914: { x: number; y: string; z: boolean }; - b914: { p: string[]; q: Record }; - c914: { nested: { deep: { deeper: { deepest: string } } } }; - d914: number; - e914: string; - f914: boolean; - g914: null; - h914: undefined; - i914: bigint; - j914: symbol; +interface Entity_09_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_14 | null; children: Entity_09_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x0914: number; y0914: string; z0914: boolean }; } -type PartialBig914 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten914 = T extends Array ? Flatten914 : T; -type Nested914 = number[][][][][][][][][][]; -type Flat914 = Flatten914; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly914 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly914 : T[K]; -}; -type DeepRequired914 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired914 : T[K]; +type Path_0914 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0914}` }[keyof T & string] : never; +type EP_0914 = Path_0914; + +type Val_0914 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0914 } + : T[K] extends object ? { t: 'o'; props: Val_0914 } + : { t: 'u' }; }; -type FR914 = DeepReadonly914>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion914 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha914 = Extract; -type ExcludeZulu914 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA914 { width: number; height: number; depth: number } -interface ShapeB914 { color: string; opacity: number; blend: string } -interface ShapeC914 { x: number; y: number; z: number; w: number } -interface ShapeD914 { label: string; title: string; summary: string } - -type Combined914 = ShapeA914 & ShapeB914 & ShapeC914 & ShapeD914; -type OptionalAll914 = { [K in keyof Combined914]?: Combined914[K] }; -type RequiredAll914 = { [K in keyof Combined914]-?: Combined914[K] }; -type ReadonlyAll914 = { readonly [K in keyof Combined914]: Combined914[K] }; -type NullableAll914 = { [K in keyof Combined914]: Combined914[K] | null }; +type EV_0914 = Val_0914; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString914 = T extends string ? true : false; -type IsNumber914 = T extends number ? true : false; -type TypeName914 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames914 = { - [K in keyof BigRecord914]: TypeName914; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb914 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource914 = "user" | "post" | "comment" | "tag" | "category"; -type Action914 = `${Verb914}_${Resource914}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise914 = T extends Promise ? UnwrapPromise914 : T; -type UnwrapArray914 = T extends (infer U)[] ? UnwrapArray914 : T; -type Head914 = T extends [infer H, ...infer _] ? H : never; -type Tail914 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation914 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation914>] - : never; +interface Registry_09_14 { + entities: Map; + validators: EV_0914; + paths: Set; + merged: DeepMerge_0914; +} -type SmallUnion914 = "a" | "b" | "c" | "d"; -type AllPerms914 = Permutation914; +type CK_0914 = `p09.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig914, - Flat914, - FR914, - BigUnion914, - ExtractAlpha914, - ExcludeZulu914, - OptionalAll914, - RequiredAll914, - ReadonlyAll914, - NullableAll914, - TypeNames914, - Action914, - AllPerms914, -}; +export type { Entity_09_14, Registry_09_14, CK_0914, EP_0914, EV_0914, DeepMerge_0914 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts index 77130383..765afb58 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-15.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-15 (seed 915) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-15 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0915 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0915 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord915 { - a915: { x: number; y: string; z: boolean }; - b915: { p: string[]; q: Record }; - c915: { nested: { deep: { deeper: { deepest: string } } } }; - d915: number; - e915: string; - f915: boolean; - g915: null; - h915: undefined; - i915: bigint; - j915: symbol; +interface Entity_09_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_15 | null; children: Entity_09_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x0915: number; y0915: string; z0915: boolean }; } -type PartialBig915 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten915 = T extends Array ? Flatten915 : T; -type Nested915 = number[][][][][][][][][][]; -type Flat915 = Flatten915; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly915 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly915 : T[K]; -}; -type DeepRequired915 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired915 : T[K]; +type Path_0915 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0915}` }[keyof T & string] : never; +type EP_0915 = Path_0915; + +type Val_0915 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0915 } + : T[K] extends object ? { t: 'o'; props: Val_0915 } + : { t: 'u' }; }; -type FR915 = DeepReadonly915>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion915 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha915 = Extract; -type ExcludeZulu915 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA915 { width: number; height: number; depth: number } -interface ShapeB915 { color: string; opacity: number; blend: string } -interface ShapeC915 { x: number; y: number; z: number; w: number } -interface ShapeD915 { label: string; title: string; summary: string } - -type Combined915 = ShapeA915 & ShapeB915 & ShapeC915 & ShapeD915; -type OptionalAll915 = { [K in keyof Combined915]?: Combined915[K] }; -type RequiredAll915 = { [K in keyof Combined915]-?: Combined915[K] }; -type ReadonlyAll915 = { readonly [K in keyof Combined915]: Combined915[K] }; -type NullableAll915 = { [K in keyof Combined915]: Combined915[K] | null }; +type EV_0915 = Val_0915; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString915 = T extends string ? true : false; -type IsNumber915 = T extends number ? true : false; -type TypeName915 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames915 = { - [K in keyof BigRecord915]: TypeName915; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb915 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource915 = "user" | "post" | "comment" | "tag" | "category"; -type Action915 = `${Verb915}_${Resource915}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise915 = T extends Promise ? UnwrapPromise915 : T; -type UnwrapArray915 = T extends (infer U)[] ? UnwrapArray915 : T; -type Head915 = T extends [infer H, ...infer _] ? H : never; -type Tail915 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation915 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation915>] - : never; +interface Registry_09_15 { + entities: Map; + validators: EV_0915; + paths: Set; + merged: DeepMerge_0915; +} -type SmallUnion915 = "a" | "b" | "c" | "d"; -type AllPerms915 = Permutation915; +type CK_0915 = `p09.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig915, - Flat915, - FR915, - BigUnion915, - ExtractAlpha915, - ExcludeZulu915, - OptionalAll915, - RequiredAll915, - ReadonlyAll915, - NullableAll915, - TypeNames915, - Action915, - AllPerms915, -}; +export type { Entity_09_15, Registry_09_15, CK_0915, EP_0915, EV_0915, DeepMerge_0915 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts index dfc27793..4f164747 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-16.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-16 (seed 916) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-16 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0916 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0916 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord916 { - a916: { x: number; y: string; z: boolean }; - b916: { p: string[]; q: Record }; - c916: { nested: { deep: { deeper: { deepest: string } } } }; - d916: number; - e916: string; - f916: boolean; - g916: null; - h916: undefined; - i916: bigint; - j916: symbol; +interface Entity_09_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_16 | null; children: Entity_09_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x0916: number; y0916: string; z0916: boolean }; } -type PartialBig916 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten916 = T extends Array ? Flatten916 : T; -type Nested916 = number[][][][][][][][][][]; -type Flat916 = Flatten916; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly916 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly916 : T[K]; -}; -type DeepRequired916 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired916 : T[K]; +type Path_0916 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0916}` }[keyof T & string] : never; +type EP_0916 = Path_0916; + +type Val_0916 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0916 } + : T[K] extends object ? { t: 'o'; props: Val_0916 } + : { t: 'u' }; }; -type FR916 = DeepReadonly916>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion916 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha916 = Extract; -type ExcludeZulu916 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA916 { width: number; height: number; depth: number } -interface ShapeB916 { color: string; opacity: number; blend: string } -interface ShapeC916 { x: number; y: number; z: number; w: number } -interface ShapeD916 { label: string; title: string; summary: string } - -type Combined916 = ShapeA916 & ShapeB916 & ShapeC916 & ShapeD916; -type OptionalAll916 = { [K in keyof Combined916]?: Combined916[K] }; -type RequiredAll916 = { [K in keyof Combined916]-?: Combined916[K] }; -type ReadonlyAll916 = { readonly [K in keyof Combined916]: Combined916[K] }; -type NullableAll916 = { [K in keyof Combined916]: Combined916[K] | null }; +type EV_0916 = Val_0916; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString916 = T extends string ? true : false; -type IsNumber916 = T extends number ? true : false; -type TypeName916 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames916 = { - [K in keyof BigRecord916]: TypeName916; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb916 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource916 = "user" | "post" | "comment" | "tag" | "category"; -type Action916 = `${Verb916}_${Resource916}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise916 = T extends Promise ? UnwrapPromise916 : T; -type UnwrapArray916 = T extends (infer U)[] ? UnwrapArray916 : T; -type Head916 = T extends [infer H, ...infer _] ? H : never; -type Tail916 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation916 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation916>] - : never; +interface Registry_09_16 { + entities: Map; + validators: EV_0916; + paths: Set; + merged: DeepMerge_0916; +} -type SmallUnion916 = "a" | "b" | "c" | "d"; -type AllPerms916 = Permutation916; +type CK_0916 = `p09.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig916, - Flat916, - FR916, - BigUnion916, - ExtractAlpha916, - ExcludeZulu916, - OptionalAll916, - RequiredAll916, - ReadonlyAll916, - NullableAll916, - TypeNames916, - Action916, - AllPerms916, -}; +export type { Entity_09_16, Registry_09_16, CK_0916, EP_0916, EV_0916, DeepMerge_0916 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts index a0d83e4c..b0902a82 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-17.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-17 (seed 917) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-17 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0917 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0917 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord917 { - a917: { x: number; y: string; z: boolean }; - b917: { p: string[]; q: Record }; - c917: { nested: { deep: { deeper: { deepest: string } } } }; - d917: number; - e917: string; - f917: boolean; - g917: null; - h917: undefined; - i917: bigint; - j917: symbol; +interface Entity_09_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_17 | null; children: Entity_09_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x0917: number; y0917: string; z0917: boolean }; } -type PartialBig917 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten917 = T extends Array ? Flatten917 : T; -type Nested917 = number[][][][][][][][][][]; -type Flat917 = Flatten917; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly917 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly917 : T[K]; -}; -type DeepRequired917 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired917 : T[K]; +type Path_0917 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0917}` }[keyof T & string] : never; +type EP_0917 = Path_0917; + +type Val_0917 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0917 } + : T[K] extends object ? { t: 'o'; props: Val_0917 } + : { t: 'u' }; }; -type FR917 = DeepReadonly917>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion917 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha917 = Extract; -type ExcludeZulu917 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA917 { width: number; height: number; depth: number } -interface ShapeB917 { color: string; opacity: number; blend: string } -interface ShapeC917 { x: number; y: number; z: number; w: number } -interface ShapeD917 { label: string; title: string; summary: string } - -type Combined917 = ShapeA917 & ShapeB917 & ShapeC917 & ShapeD917; -type OptionalAll917 = { [K in keyof Combined917]?: Combined917[K] }; -type RequiredAll917 = { [K in keyof Combined917]-?: Combined917[K] }; -type ReadonlyAll917 = { readonly [K in keyof Combined917]: Combined917[K] }; -type NullableAll917 = { [K in keyof Combined917]: Combined917[K] | null }; +type EV_0917 = Val_0917; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString917 = T extends string ? true : false; -type IsNumber917 = T extends number ? true : false; -type TypeName917 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames917 = { - [K in keyof BigRecord917]: TypeName917; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb917 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource917 = "user" | "post" | "comment" | "tag" | "category"; -type Action917 = `${Verb917}_${Resource917}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise917 = T extends Promise ? UnwrapPromise917 : T; -type UnwrapArray917 = T extends (infer U)[] ? UnwrapArray917 : T; -type Head917 = T extends [infer H, ...infer _] ? H : never; -type Tail917 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation917 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation917>] - : never; +interface Registry_09_17 { + entities: Map; + validators: EV_0917; + paths: Set; + merged: DeepMerge_0917; +} -type SmallUnion917 = "a" | "b" | "c" | "d"; -type AllPerms917 = Permutation917; +type CK_0917 = `p09.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig917, - Flat917, - FR917, - BigUnion917, - ExtractAlpha917, - ExcludeZulu917, - OptionalAll917, - RequiredAll917, - ReadonlyAll917, - NullableAll917, - TypeNames917, - Action917, - AllPerms917, -}; +export type { Entity_09_17, Registry_09_17, CK_0917, EP_0917, EV_0917, DeepMerge_0917 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts index 10551547..e5b0c550 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-18.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-18 (seed 918) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-18 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0918 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0918 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord918 { - a918: { x: number; y: string; z: boolean }; - b918: { p: string[]; q: Record }; - c918: { nested: { deep: { deeper: { deepest: string } } } }; - d918: number; - e918: string; - f918: boolean; - g918: null; - h918: undefined; - i918: bigint; - j918: symbol; +interface Entity_09_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_18 | null; children: Entity_09_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x0918: number; y0918: string; z0918: boolean }; } -type PartialBig918 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten918 = T extends Array ? Flatten918 : T; -type Nested918 = number[][][][][][][][][][]; -type Flat918 = Flatten918; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly918 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly918 : T[K]; -}; -type DeepRequired918 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired918 : T[K]; +type Path_0918 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0918}` }[keyof T & string] : never; +type EP_0918 = Path_0918; + +type Val_0918 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0918 } + : T[K] extends object ? { t: 'o'; props: Val_0918 } + : { t: 'u' }; }; -type FR918 = DeepReadonly918>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion918 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha918 = Extract; -type ExcludeZulu918 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA918 { width: number; height: number; depth: number } -interface ShapeB918 { color: string; opacity: number; blend: string } -interface ShapeC918 { x: number; y: number; z: number; w: number } -interface ShapeD918 { label: string; title: string; summary: string } - -type Combined918 = ShapeA918 & ShapeB918 & ShapeC918 & ShapeD918; -type OptionalAll918 = { [K in keyof Combined918]?: Combined918[K] }; -type RequiredAll918 = { [K in keyof Combined918]-?: Combined918[K] }; -type ReadonlyAll918 = { readonly [K in keyof Combined918]: Combined918[K] }; -type NullableAll918 = { [K in keyof Combined918]: Combined918[K] | null }; +type EV_0918 = Val_0918; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString918 = T extends string ? true : false; -type IsNumber918 = T extends number ? true : false; -type TypeName918 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames918 = { - [K in keyof BigRecord918]: TypeName918; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb918 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource918 = "user" | "post" | "comment" | "tag" | "category"; -type Action918 = `${Verb918}_${Resource918}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise918 = T extends Promise ? UnwrapPromise918 : T; -type UnwrapArray918 = T extends (infer U)[] ? UnwrapArray918 : T; -type Head918 = T extends [infer H, ...infer _] ? H : never; -type Tail918 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation918 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation918>] - : never; +interface Registry_09_18 { + entities: Map; + validators: EV_0918; + paths: Set; + merged: DeepMerge_0918; +} -type SmallUnion918 = "a" | "b" | "c" | "d"; -type AllPerms918 = Permutation918; +type CK_0918 = `p09.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig918, - Flat918, - FR918, - BigUnion918, - ExtractAlpha918, - ExcludeZulu918, - OptionalAll918, - RequiredAll918, - ReadonlyAll918, - NullableAll918, - TypeNames918, - Action918, - AllPerms918, -}; +export type { Entity_09_18, Registry_09_18, CK_0918, EP_0918, EV_0918, DeepMerge_0918 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts index f2c0ae84..612cae27 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-19.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-19 (seed 919) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-19 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0919 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0919 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord919 { - a919: { x: number; y: string; z: boolean }; - b919: { p: string[]; q: Record }; - c919: { nested: { deep: { deeper: { deepest: string } } } }; - d919: number; - e919: string; - f919: boolean; - g919: null; - h919: undefined; - i919: bigint; - j919: symbol; +interface Entity_09_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_19 | null; children: Entity_09_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x0919: number; y0919: string; z0919: boolean }; } -type PartialBig919 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten919 = T extends Array ? Flatten919 : T; -type Nested919 = number[][][][][][][][][][]; -type Flat919 = Flatten919; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly919 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly919 : T[K]; -}; -type DeepRequired919 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired919 : T[K]; +type Path_0919 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0919}` }[keyof T & string] : never; +type EP_0919 = Path_0919; + +type Val_0919 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0919 } + : T[K] extends object ? { t: 'o'; props: Val_0919 } + : { t: 'u' }; }; -type FR919 = DeepReadonly919>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion919 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha919 = Extract; -type ExcludeZulu919 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA919 { width: number; height: number; depth: number } -interface ShapeB919 { color: string; opacity: number; blend: string } -interface ShapeC919 { x: number; y: number; z: number; w: number } -interface ShapeD919 { label: string; title: string; summary: string } - -type Combined919 = ShapeA919 & ShapeB919 & ShapeC919 & ShapeD919; -type OptionalAll919 = { [K in keyof Combined919]?: Combined919[K] }; -type RequiredAll919 = { [K in keyof Combined919]-?: Combined919[K] }; -type ReadonlyAll919 = { readonly [K in keyof Combined919]: Combined919[K] }; -type NullableAll919 = { [K in keyof Combined919]: Combined919[K] | null }; +type EV_0919 = Val_0919; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString919 = T extends string ? true : false; -type IsNumber919 = T extends number ? true : false; -type TypeName919 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames919 = { - [K in keyof BigRecord919]: TypeName919; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb919 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource919 = "user" | "post" | "comment" | "tag" | "category"; -type Action919 = `${Verb919}_${Resource919}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise919 = T extends Promise ? UnwrapPromise919 : T; -type UnwrapArray919 = T extends (infer U)[] ? UnwrapArray919 : T; -type Head919 = T extends [infer H, ...infer _] ? H : never; -type Tail919 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation919 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation919>] - : never; +interface Registry_09_19 { + entities: Map; + validators: EV_0919; + paths: Set; + merged: DeepMerge_0919; +} -type SmallUnion919 = "a" | "b" | "c" | "d"; -type AllPerms919 = Permutation919; +type CK_0919 = `p09.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig919, - Flat919, - FR919, - BigUnion919, - ExtractAlpha919, - ExcludeZulu919, - OptionalAll919, - RequiredAll919, - ReadonlyAll919, - NullableAll919, - TypeNames919, - Action919, - AllPerms919, -}; +export type { Entity_09_19, Registry_09_19, CK_0919, EP_0919, EV_0919, DeepMerge_0919 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts index b2f6c502..c54737ff 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-20.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-20 (seed 920) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-20 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0920 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0920 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord920 { - a920: { x: number; y: string; z: boolean }; - b920: { p: string[]; q: Record }; - c920: { nested: { deep: { deeper: { deepest: string } } } }; - d920: number; - e920: string; - f920: boolean; - g920: null; - h920: undefined; - i920: bigint; - j920: symbol; +interface Entity_09_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_20 | null; children: Entity_09_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x0920: number; y0920: string; z0920: boolean }; } -type PartialBig920 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten920 = T extends Array ? Flatten920 : T; -type Nested920 = number[][][][][][][][][][]; -type Flat920 = Flatten920; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly920 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly920 : T[K]; -}; -type DeepRequired920 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired920 : T[K]; +type Path_0920 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0920}` }[keyof T & string] : never; +type EP_0920 = Path_0920; + +type Val_0920 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0920 } + : T[K] extends object ? { t: 'o'; props: Val_0920 } + : { t: 'u' }; }; -type FR920 = DeepReadonly920>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion920 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha920 = Extract; -type ExcludeZulu920 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA920 { width: number; height: number; depth: number } -interface ShapeB920 { color: string; opacity: number; blend: string } -interface ShapeC920 { x: number; y: number; z: number; w: number } -interface ShapeD920 { label: string; title: string; summary: string } - -type Combined920 = ShapeA920 & ShapeB920 & ShapeC920 & ShapeD920; -type OptionalAll920 = { [K in keyof Combined920]?: Combined920[K] }; -type RequiredAll920 = { [K in keyof Combined920]-?: Combined920[K] }; -type ReadonlyAll920 = { readonly [K in keyof Combined920]: Combined920[K] }; -type NullableAll920 = { [K in keyof Combined920]: Combined920[K] | null }; +type EV_0920 = Val_0920; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString920 = T extends string ? true : false; -type IsNumber920 = T extends number ? true : false; -type TypeName920 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames920 = { - [K in keyof BigRecord920]: TypeName920; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb920 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource920 = "user" | "post" | "comment" | "tag" | "category"; -type Action920 = `${Verb920}_${Resource920}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise920 = T extends Promise ? UnwrapPromise920 : T; -type UnwrapArray920 = T extends (infer U)[] ? UnwrapArray920 : T; -type Head920 = T extends [infer H, ...infer _] ? H : never; -type Tail920 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation920 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation920>] - : never; +interface Registry_09_20 { + entities: Map; + validators: EV_0920; + paths: Set; + merged: DeepMerge_0920; +} -type SmallUnion920 = "a" | "b" | "c" | "d"; -type AllPerms920 = Permutation920; +type CK_0920 = `p09.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig920, - Flat920, - FR920, - BigUnion920, - ExtractAlpha920, - ExcludeZulu920, - OptionalAll920, - RequiredAll920, - ReadonlyAll920, - NullableAll920, - TypeNames920, - Action920, - AllPerms920, -}; +export type { Entity_09_20, Registry_09_20, CK_0920, EP_0920, EV_0920, DeepMerge_0920 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts index c9176d9d..25bd2283 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-21.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-21 (seed 921) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-21 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0921 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0921 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord921 { - a921: { x: number; y: string; z: boolean }; - b921: { p: string[]; q: Record }; - c921: { nested: { deep: { deeper: { deepest: string } } } }; - d921: number; - e921: string; - f921: boolean; - g921: null; - h921: undefined; - i921: bigint; - j921: symbol; +interface Entity_09_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_21 | null; children: Entity_09_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x0921: number; y0921: string; z0921: boolean }; } -type PartialBig921 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten921 = T extends Array ? Flatten921 : T; -type Nested921 = number[][][][][][][][][][]; -type Flat921 = Flatten921; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly921 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly921 : T[K]; -}; -type DeepRequired921 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired921 : T[K]; +type Path_0921 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0921}` }[keyof T & string] : never; +type EP_0921 = Path_0921; + +type Val_0921 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0921 } + : T[K] extends object ? { t: 'o'; props: Val_0921 } + : { t: 'u' }; }; -type FR921 = DeepReadonly921>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion921 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha921 = Extract; -type ExcludeZulu921 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA921 { width: number; height: number; depth: number } -interface ShapeB921 { color: string; opacity: number; blend: string } -interface ShapeC921 { x: number; y: number; z: number; w: number } -interface ShapeD921 { label: string; title: string; summary: string } - -type Combined921 = ShapeA921 & ShapeB921 & ShapeC921 & ShapeD921; -type OptionalAll921 = { [K in keyof Combined921]?: Combined921[K] }; -type RequiredAll921 = { [K in keyof Combined921]-?: Combined921[K] }; -type ReadonlyAll921 = { readonly [K in keyof Combined921]: Combined921[K] }; -type NullableAll921 = { [K in keyof Combined921]: Combined921[K] | null }; +type EV_0921 = Val_0921; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString921 = T extends string ? true : false; -type IsNumber921 = T extends number ? true : false; -type TypeName921 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames921 = { - [K in keyof BigRecord921]: TypeName921; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb921 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource921 = "user" | "post" | "comment" | "tag" | "category"; -type Action921 = `${Verb921}_${Resource921}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise921 = T extends Promise ? UnwrapPromise921 : T; -type UnwrapArray921 = T extends (infer U)[] ? UnwrapArray921 : T; -type Head921 = T extends [infer H, ...infer _] ? H : never; -type Tail921 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation921 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation921>] - : never; +interface Registry_09_21 { + entities: Map; + validators: EV_0921; + paths: Set; + merged: DeepMerge_0921; +} -type SmallUnion921 = "a" | "b" | "c" | "d"; -type AllPerms921 = Permutation921; +type CK_0921 = `p09.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig921, - Flat921, - FR921, - BigUnion921, - ExtractAlpha921, - ExcludeZulu921, - OptionalAll921, - RequiredAll921, - ReadonlyAll921, - NullableAll921, - TypeNames921, - Action921, - AllPerms921, -}; +export type { Entity_09_21, Registry_09_21, CK_0921, EP_0921, EV_0921, DeepMerge_0921 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts index 86c155b2..9b81b5f4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-22.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-22 (seed 922) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-22 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0922 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0922 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord922 { - a922: { x: number; y: string; z: boolean }; - b922: { p: string[]; q: Record }; - c922: { nested: { deep: { deeper: { deepest: string } } } }; - d922: number; - e922: string; - f922: boolean; - g922: null; - h922: undefined; - i922: bigint; - j922: symbol; +interface Entity_09_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_22 | null; children: Entity_09_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x0922: number; y0922: string; z0922: boolean }; } -type PartialBig922 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten922 = T extends Array ? Flatten922 : T; -type Nested922 = number[][][][][][][][][][]; -type Flat922 = Flatten922; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly922 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly922 : T[K]; -}; -type DeepRequired922 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired922 : T[K]; +type Path_0922 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0922}` }[keyof T & string] : never; +type EP_0922 = Path_0922; + +type Val_0922 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0922 } + : T[K] extends object ? { t: 'o'; props: Val_0922 } + : { t: 'u' }; }; -type FR922 = DeepReadonly922>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion922 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha922 = Extract; -type ExcludeZulu922 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA922 { width: number; height: number; depth: number } -interface ShapeB922 { color: string; opacity: number; blend: string } -interface ShapeC922 { x: number; y: number; z: number; w: number } -interface ShapeD922 { label: string; title: string; summary: string } - -type Combined922 = ShapeA922 & ShapeB922 & ShapeC922 & ShapeD922; -type OptionalAll922 = { [K in keyof Combined922]?: Combined922[K] }; -type RequiredAll922 = { [K in keyof Combined922]-?: Combined922[K] }; -type ReadonlyAll922 = { readonly [K in keyof Combined922]: Combined922[K] }; -type NullableAll922 = { [K in keyof Combined922]: Combined922[K] | null }; +type EV_0922 = Val_0922; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString922 = T extends string ? true : false; -type IsNumber922 = T extends number ? true : false; -type TypeName922 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames922 = { - [K in keyof BigRecord922]: TypeName922; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb922 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource922 = "user" | "post" | "comment" | "tag" | "category"; -type Action922 = `${Verb922}_${Resource922}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise922 = T extends Promise ? UnwrapPromise922 : T; -type UnwrapArray922 = T extends (infer U)[] ? UnwrapArray922 : T; -type Head922 = T extends [infer H, ...infer _] ? H : never; -type Tail922 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation922 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation922>] - : never; +interface Registry_09_22 { + entities: Map; + validators: EV_0922; + paths: Set; + merged: DeepMerge_0922; +} -type SmallUnion922 = "a" | "b" | "c" | "d"; -type AllPerms922 = Permutation922; +type CK_0922 = `p09.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig922, - Flat922, - FR922, - BigUnion922, - ExtractAlpha922, - ExcludeZulu922, - OptionalAll922, - RequiredAll922, - ReadonlyAll922, - NullableAll922, - TypeNames922, - Action922, - AllPerms922, -}; +export type { Entity_09_22, Registry_09_22, CK_0922, EP_0922, EV_0922, DeepMerge_0922 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts index 51bb2181..11899d1e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-23.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-23 (seed 923) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-23 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0923 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0923 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord923 { - a923: { x: number; y: string; z: boolean }; - b923: { p: string[]; q: Record }; - c923: { nested: { deep: { deeper: { deepest: string } } } }; - d923: number; - e923: string; - f923: boolean; - g923: null; - h923: undefined; - i923: bigint; - j923: symbol; +interface Entity_09_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_23 | null; children: Entity_09_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x0923: number; y0923: string; z0923: boolean }; } -type PartialBig923 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten923 = T extends Array ? Flatten923 : T; -type Nested923 = number[][][][][][][][][][]; -type Flat923 = Flatten923; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly923 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly923 : T[K]; -}; -type DeepRequired923 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired923 : T[K]; +type Path_0923 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0923}` }[keyof T & string] : never; +type EP_0923 = Path_0923; + +type Val_0923 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0923 } + : T[K] extends object ? { t: 'o'; props: Val_0923 } + : { t: 'u' }; }; -type FR923 = DeepReadonly923>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion923 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha923 = Extract; -type ExcludeZulu923 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA923 { width: number; height: number; depth: number } -interface ShapeB923 { color: string; opacity: number; blend: string } -interface ShapeC923 { x: number; y: number; z: number; w: number } -interface ShapeD923 { label: string; title: string; summary: string } - -type Combined923 = ShapeA923 & ShapeB923 & ShapeC923 & ShapeD923; -type OptionalAll923 = { [K in keyof Combined923]?: Combined923[K] }; -type RequiredAll923 = { [K in keyof Combined923]-?: Combined923[K] }; -type ReadonlyAll923 = { readonly [K in keyof Combined923]: Combined923[K] }; -type NullableAll923 = { [K in keyof Combined923]: Combined923[K] | null }; +type EV_0923 = Val_0923; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString923 = T extends string ? true : false; -type IsNumber923 = T extends number ? true : false; -type TypeName923 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames923 = { - [K in keyof BigRecord923]: TypeName923; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb923 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource923 = "user" | "post" | "comment" | "tag" | "category"; -type Action923 = `${Verb923}_${Resource923}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise923 = T extends Promise ? UnwrapPromise923 : T; -type UnwrapArray923 = T extends (infer U)[] ? UnwrapArray923 : T; -type Head923 = T extends [infer H, ...infer _] ? H : never; -type Tail923 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation923 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation923>] - : never; +interface Registry_09_23 { + entities: Map; + validators: EV_0923; + paths: Set; + merged: DeepMerge_0923; +} -type SmallUnion923 = "a" | "b" | "c" | "d"; -type AllPerms923 = Permutation923; +type CK_0923 = `p09.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig923, - Flat923, - FR923, - BigUnion923, - ExtractAlpha923, - ExcludeZulu923, - OptionalAll923, - RequiredAll923, - ReadonlyAll923, - NullableAll923, - TypeNames923, - Action923, - AllPerms923, -}; +export type { Entity_09_23, Registry_09_23, CK_0923, EP_0923, EV_0923, DeepMerge_0923 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts index 729f7fd6..36dd6664 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-24.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-24 (seed 924) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-24 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0924 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0924 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord924 { - a924: { x: number; y: string; z: boolean }; - b924: { p: string[]; q: Record }; - c924: { nested: { deep: { deeper: { deepest: string } } } }; - d924: number; - e924: string; - f924: boolean; - g924: null; - h924: undefined; - i924: bigint; - j924: symbol; +interface Entity_09_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_24 | null; children: Entity_09_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x0924: number; y0924: string; z0924: boolean }; } -type PartialBig924 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten924 = T extends Array ? Flatten924 : T; -type Nested924 = number[][][][][][][][][][]; -type Flat924 = Flatten924; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly924 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly924 : T[K]; -}; -type DeepRequired924 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired924 : T[K]; +type Path_0924 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0924}` }[keyof T & string] : never; +type EP_0924 = Path_0924; + +type Val_0924 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0924 } + : T[K] extends object ? { t: 'o'; props: Val_0924 } + : { t: 'u' }; }; -type FR924 = DeepReadonly924>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion924 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha924 = Extract; -type ExcludeZulu924 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA924 { width: number; height: number; depth: number } -interface ShapeB924 { color: string; opacity: number; blend: string } -interface ShapeC924 { x: number; y: number; z: number; w: number } -interface ShapeD924 { label: string; title: string; summary: string } - -type Combined924 = ShapeA924 & ShapeB924 & ShapeC924 & ShapeD924; -type OptionalAll924 = { [K in keyof Combined924]?: Combined924[K] }; -type RequiredAll924 = { [K in keyof Combined924]-?: Combined924[K] }; -type ReadonlyAll924 = { readonly [K in keyof Combined924]: Combined924[K] }; -type NullableAll924 = { [K in keyof Combined924]: Combined924[K] | null }; +type EV_0924 = Val_0924; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString924 = T extends string ? true : false; -type IsNumber924 = T extends number ? true : false; -type TypeName924 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames924 = { - [K in keyof BigRecord924]: TypeName924; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb924 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource924 = "user" | "post" | "comment" | "tag" | "category"; -type Action924 = `${Verb924}_${Resource924}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise924 = T extends Promise ? UnwrapPromise924 : T; -type UnwrapArray924 = T extends (infer U)[] ? UnwrapArray924 : T; -type Head924 = T extends [infer H, ...infer _] ? H : never; -type Tail924 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation924 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation924>] - : never; +interface Registry_09_24 { + entities: Map; + validators: EV_0924; + paths: Set; + merged: DeepMerge_0924; +} -type SmallUnion924 = "a" | "b" | "c" | "d"; -type AllPerms924 = Permutation924; +type CK_0924 = `p09.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig924, - Flat924, - FR924, - BigUnion924, - ExtractAlpha924, - ExcludeZulu924, - OptionalAll924, - RequiredAll924, - ReadonlyAll924, - NullableAll924, - TypeNames924, - Action924, - AllPerms924, -}; +export type { Entity_09_24, Registry_09_24, CK_0924, EP_0924, EV_0924, DeepMerge_0924 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts index 1eb3b4de..d7d40669 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-25.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-25 (seed 925) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-25 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0925 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0925 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord925 { - a925: { x: number; y: string; z: boolean }; - b925: { p: string[]; q: Record }; - c925: { nested: { deep: { deeper: { deepest: string } } } }; - d925: number; - e925: string; - f925: boolean; - g925: null; - h925: undefined; - i925: bigint; - j925: symbol; +interface Entity_09_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_25 | null; children: Entity_09_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x0925: number; y0925: string; z0925: boolean }; } -type PartialBig925 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten925 = T extends Array ? Flatten925 : T; -type Nested925 = number[][][][][][][][][][]; -type Flat925 = Flatten925; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly925 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly925 : T[K]; -}; -type DeepRequired925 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired925 : T[K]; +type Path_0925 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0925}` }[keyof T & string] : never; +type EP_0925 = Path_0925; + +type Val_0925 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0925 } + : T[K] extends object ? { t: 'o'; props: Val_0925 } + : { t: 'u' }; }; -type FR925 = DeepReadonly925>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion925 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha925 = Extract; -type ExcludeZulu925 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA925 { width: number; height: number; depth: number } -interface ShapeB925 { color: string; opacity: number; blend: string } -interface ShapeC925 { x: number; y: number; z: number; w: number } -interface ShapeD925 { label: string; title: string; summary: string } - -type Combined925 = ShapeA925 & ShapeB925 & ShapeC925 & ShapeD925; -type OptionalAll925 = { [K in keyof Combined925]?: Combined925[K] }; -type RequiredAll925 = { [K in keyof Combined925]-?: Combined925[K] }; -type ReadonlyAll925 = { readonly [K in keyof Combined925]: Combined925[K] }; -type NullableAll925 = { [K in keyof Combined925]: Combined925[K] | null }; +type EV_0925 = Val_0925; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString925 = T extends string ? true : false; -type IsNumber925 = T extends number ? true : false; -type TypeName925 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames925 = { - [K in keyof BigRecord925]: TypeName925; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb925 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource925 = "user" | "post" | "comment" | "tag" | "category"; -type Action925 = `${Verb925}_${Resource925}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise925 = T extends Promise ? UnwrapPromise925 : T; -type UnwrapArray925 = T extends (infer U)[] ? UnwrapArray925 : T; -type Head925 = T extends [infer H, ...infer _] ? H : never; -type Tail925 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation925 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation925>] - : never; +interface Registry_09_25 { + entities: Map; + validators: EV_0925; + paths: Set; + merged: DeepMerge_0925; +} -type SmallUnion925 = "a" | "b" | "c" | "d"; -type AllPerms925 = Permutation925; +type CK_0925 = `p09.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig925, - Flat925, - FR925, - BigUnion925, - ExtractAlpha925, - ExcludeZulu925, - OptionalAll925, - RequiredAll925, - ReadonlyAll925, - NullableAll925, - TypeNames925, - Action925, - AllPerms925, -}; +export type { Entity_09_25, Registry_09_25, CK_0925, EP_0925, EV_0925, DeepMerge_0925 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts index 709e4533..c560c752 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-26.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-26 (seed 926) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-26 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0926 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0926 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord926 { - a926: { x: number; y: string; z: boolean }; - b926: { p: string[]; q: Record }; - c926: { nested: { deep: { deeper: { deepest: string } } } }; - d926: number; - e926: string; - f926: boolean; - g926: null; - h926: undefined; - i926: bigint; - j926: symbol; +interface Entity_09_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_26 | null; children: Entity_09_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x0926: number; y0926: string; z0926: boolean }; } -type PartialBig926 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten926 = T extends Array ? Flatten926 : T; -type Nested926 = number[][][][][][][][][][]; -type Flat926 = Flatten926; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly926 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly926 : T[K]; -}; -type DeepRequired926 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired926 : T[K]; +type Path_0926 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0926}` }[keyof T & string] : never; +type EP_0926 = Path_0926; + +type Val_0926 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0926 } + : T[K] extends object ? { t: 'o'; props: Val_0926 } + : { t: 'u' }; }; -type FR926 = DeepReadonly926>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion926 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha926 = Extract; -type ExcludeZulu926 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA926 { width: number; height: number; depth: number } -interface ShapeB926 { color: string; opacity: number; blend: string } -interface ShapeC926 { x: number; y: number; z: number; w: number } -interface ShapeD926 { label: string; title: string; summary: string } - -type Combined926 = ShapeA926 & ShapeB926 & ShapeC926 & ShapeD926; -type OptionalAll926 = { [K in keyof Combined926]?: Combined926[K] }; -type RequiredAll926 = { [K in keyof Combined926]-?: Combined926[K] }; -type ReadonlyAll926 = { readonly [K in keyof Combined926]: Combined926[K] }; -type NullableAll926 = { [K in keyof Combined926]: Combined926[K] | null }; +type EV_0926 = Val_0926; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString926 = T extends string ? true : false; -type IsNumber926 = T extends number ? true : false; -type TypeName926 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames926 = { - [K in keyof BigRecord926]: TypeName926; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb926 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource926 = "user" | "post" | "comment" | "tag" | "category"; -type Action926 = `${Verb926}_${Resource926}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise926 = T extends Promise ? UnwrapPromise926 : T; -type UnwrapArray926 = T extends (infer U)[] ? UnwrapArray926 : T; -type Head926 = T extends [infer H, ...infer _] ? H : never; -type Tail926 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation926 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation926>] - : never; +interface Registry_09_26 { + entities: Map; + validators: EV_0926; + paths: Set; + merged: DeepMerge_0926; +} -type SmallUnion926 = "a" | "b" | "c" | "d"; -type AllPerms926 = Permutation926; +type CK_0926 = `p09.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig926, - Flat926, - FR926, - BigUnion926, - ExtractAlpha926, - ExcludeZulu926, - OptionalAll926, - RequiredAll926, - ReadonlyAll926, - NullableAll926, - TypeNames926, - Action926, - AllPerms926, -}; +export type { Entity_09_26, Registry_09_26, CK_0926, EP_0926, EV_0926, DeepMerge_0926 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts index 276f9d39..d0da43bc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-27.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-27 (seed 927) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-27 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0927 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0927 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord927 { - a927: { x: number; y: string; z: boolean }; - b927: { p: string[]; q: Record }; - c927: { nested: { deep: { deeper: { deepest: string } } } }; - d927: number; - e927: string; - f927: boolean; - g927: null; - h927: undefined; - i927: bigint; - j927: symbol; +interface Entity_09_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_27 | null; children: Entity_09_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x0927: number; y0927: string; z0927: boolean }; } -type PartialBig927 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten927 = T extends Array ? Flatten927 : T; -type Nested927 = number[][][][][][][][][][]; -type Flat927 = Flatten927; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly927 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly927 : T[K]; -}; -type DeepRequired927 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired927 : T[K]; +type Path_0927 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0927}` }[keyof T & string] : never; +type EP_0927 = Path_0927; + +type Val_0927 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0927 } + : T[K] extends object ? { t: 'o'; props: Val_0927 } + : { t: 'u' }; }; -type FR927 = DeepReadonly927>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion927 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha927 = Extract; -type ExcludeZulu927 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA927 { width: number; height: number; depth: number } -interface ShapeB927 { color: string; opacity: number; blend: string } -interface ShapeC927 { x: number; y: number; z: number; w: number } -interface ShapeD927 { label: string; title: string; summary: string } - -type Combined927 = ShapeA927 & ShapeB927 & ShapeC927 & ShapeD927; -type OptionalAll927 = { [K in keyof Combined927]?: Combined927[K] }; -type RequiredAll927 = { [K in keyof Combined927]-?: Combined927[K] }; -type ReadonlyAll927 = { readonly [K in keyof Combined927]: Combined927[K] }; -type NullableAll927 = { [K in keyof Combined927]: Combined927[K] | null }; +type EV_0927 = Val_0927; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString927 = T extends string ? true : false; -type IsNumber927 = T extends number ? true : false; -type TypeName927 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames927 = { - [K in keyof BigRecord927]: TypeName927; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb927 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource927 = "user" | "post" | "comment" | "tag" | "category"; -type Action927 = `${Verb927}_${Resource927}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise927 = T extends Promise ? UnwrapPromise927 : T; -type UnwrapArray927 = T extends (infer U)[] ? UnwrapArray927 : T; -type Head927 = T extends [infer H, ...infer _] ? H : never; -type Tail927 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation927 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation927>] - : never; +interface Registry_09_27 { + entities: Map; + validators: EV_0927; + paths: Set; + merged: DeepMerge_0927; +} -type SmallUnion927 = "a" | "b" | "c" | "d"; -type AllPerms927 = Permutation927; +type CK_0927 = `p09.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig927, - Flat927, - FR927, - BigUnion927, - ExtractAlpha927, - ExcludeZulu927, - OptionalAll927, - RequiredAll927, - ReadonlyAll927, - NullableAll927, - TypeNames927, - Action927, - AllPerms927, -}; +export type { Entity_09_27, Registry_09_27, CK_0927, EP_0927, EV_0927, DeepMerge_0927 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts index bd81f2ec..d6a5efe5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-28.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-28 (seed 928) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-28 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0928 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0928 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord928 { - a928: { x: number; y: string; z: boolean }; - b928: { p: string[]; q: Record }; - c928: { nested: { deep: { deeper: { deepest: string } } } }; - d928: number; - e928: string; - f928: boolean; - g928: null; - h928: undefined; - i928: bigint; - j928: symbol; +interface Entity_09_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_28 | null; children: Entity_09_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x0928: number; y0928: string; z0928: boolean }; } -type PartialBig928 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten928 = T extends Array ? Flatten928 : T; -type Nested928 = number[][][][][][][][][][]; -type Flat928 = Flatten928; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly928 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly928 : T[K]; -}; -type DeepRequired928 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired928 : T[K]; +type Path_0928 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0928}` }[keyof T & string] : never; +type EP_0928 = Path_0928; + +type Val_0928 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0928 } + : T[K] extends object ? { t: 'o'; props: Val_0928 } + : { t: 'u' }; }; -type FR928 = DeepReadonly928>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion928 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha928 = Extract; -type ExcludeZulu928 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA928 { width: number; height: number; depth: number } -interface ShapeB928 { color: string; opacity: number; blend: string } -interface ShapeC928 { x: number; y: number; z: number; w: number } -interface ShapeD928 { label: string; title: string; summary: string } - -type Combined928 = ShapeA928 & ShapeB928 & ShapeC928 & ShapeD928; -type OptionalAll928 = { [K in keyof Combined928]?: Combined928[K] }; -type RequiredAll928 = { [K in keyof Combined928]-?: Combined928[K] }; -type ReadonlyAll928 = { readonly [K in keyof Combined928]: Combined928[K] }; -type NullableAll928 = { [K in keyof Combined928]: Combined928[K] | null }; +type EV_0928 = Val_0928; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString928 = T extends string ? true : false; -type IsNumber928 = T extends number ? true : false; -type TypeName928 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames928 = { - [K in keyof BigRecord928]: TypeName928; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb928 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource928 = "user" | "post" | "comment" | "tag" | "category"; -type Action928 = `${Verb928}_${Resource928}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise928 = T extends Promise ? UnwrapPromise928 : T; -type UnwrapArray928 = T extends (infer U)[] ? UnwrapArray928 : T; -type Head928 = T extends [infer H, ...infer _] ? H : never; -type Tail928 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation928 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation928>] - : never; +interface Registry_09_28 { + entities: Map; + validators: EV_0928; + paths: Set; + merged: DeepMerge_0928; +} -type SmallUnion928 = "a" | "b" | "c" | "d"; -type AllPerms928 = Permutation928; +type CK_0928 = `p09.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig928, - Flat928, - FR928, - BigUnion928, - ExtractAlpha928, - ExcludeZulu928, - OptionalAll928, - RequiredAll928, - ReadonlyAll928, - NullableAll928, - TypeNames928, - Action928, - AllPerms928, -}; +export type { Entity_09_28, Registry_09_28, CK_0928, EP_0928, EV_0928, DeepMerge_0928 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts index e828b801..52d5de0a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-29.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-29 (seed 929) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-29 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0929 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0929 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord929 { - a929: { x: number; y: string; z: boolean }; - b929: { p: string[]; q: Record }; - c929: { nested: { deep: { deeper: { deepest: string } } } }; - d929: number; - e929: string; - f929: boolean; - g929: null; - h929: undefined; - i929: bigint; - j929: symbol; +interface Entity_09_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_29 | null; children: Entity_09_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x0929: number; y0929: string; z0929: boolean }; } -type PartialBig929 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten929 = T extends Array ? Flatten929 : T; -type Nested929 = number[][][][][][][][][][]; -type Flat929 = Flatten929; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly929 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly929 : T[K]; -}; -type DeepRequired929 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired929 : T[K]; +type Path_0929 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0929}` }[keyof T & string] : never; +type EP_0929 = Path_0929; + +type Val_0929 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0929 } + : T[K] extends object ? { t: 'o'; props: Val_0929 } + : { t: 'u' }; }; -type FR929 = DeepReadonly929>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion929 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha929 = Extract; -type ExcludeZulu929 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA929 { width: number; height: number; depth: number } -interface ShapeB929 { color: string; opacity: number; blend: string } -interface ShapeC929 { x: number; y: number; z: number; w: number } -interface ShapeD929 { label: string; title: string; summary: string } - -type Combined929 = ShapeA929 & ShapeB929 & ShapeC929 & ShapeD929; -type OptionalAll929 = { [K in keyof Combined929]?: Combined929[K] }; -type RequiredAll929 = { [K in keyof Combined929]-?: Combined929[K] }; -type ReadonlyAll929 = { readonly [K in keyof Combined929]: Combined929[K] }; -type NullableAll929 = { [K in keyof Combined929]: Combined929[K] | null }; +type EV_0929 = Val_0929; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString929 = T extends string ? true : false; -type IsNumber929 = T extends number ? true : false; -type TypeName929 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames929 = { - [K in keyof BigRecord929]: TypeName929; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb929 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource929 = "user" | "post" | "comment" | "tag" | "category"; -type Action929 = `${Verb929}_${Resource929}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise929 = T extends Promise ? UnwrapPromise929 : T; -type UnwrapArray929 = T extends (infer U)[] ? UnwrapArray929 : T; -type Head929 = T extends [infer H, ...infer _] ? H : never; -type Tail929 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation929 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation929>] - : never; +interface Registry_09_29 { + entities: Map; + validators: EV_0929; + paths: Set; + merged: DeepMerge_0929; +} -type SmallUnion929 = "a" | "b" | "c" | "d"; -type AllPerms929 = Permutation929; +type CK_0929 = `p09.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig929, - Flat929, - FR929, - BigUnion929, - ExtractAlpha929, - ExcludeZulu929, - OptionalAll929, - RequiredAll929, - ReadonlyAll929, - NullableAll929, - TypeNames929, - Action929, - AllPerms929, -}; +export type { Entity_09_29, Registry_09_29, CK_0929, EP_0929, EV_0929, DeepMerge_0929 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts index b5490adb..0b90858d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-30.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-30 (seed 930) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-30 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0930 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0930 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord930 { - a930: { x: number; y: string; z: boolean }; - b930: { p: string[]; q: Record }; - c930: { nested: { deep: { deeper: { deepest: string } } } }; - d930: number; - e930: string; - f930: boolean; - g930: null; - h930: undefined; - i930: bigint; - j930: symbol; +interface Entity_09_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_30 | null; children: Entity_09_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x0930: number; y0930: string; z0930: boolean }; } -type PartialBig930 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten930 = T extends Array ? Flatten930 : T; -type Nested930 = number[][][][][][][][][][]; -type Flat930 = Flatten930; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly930 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly930 : T[K]; -}; -type DeepRequired930 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired930 : T[K]; +type Path_0930 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0930}` }[keyof T & string] : never; +type EP_0930 = Path_0930; + +type Val_0930 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0930 } + : T[K] extends object ? { t: 'o'; props: Val_0930 } + : { t: 'u' }; }; -type FR930 = DeepReadonly930>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion930 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha930 = Extract; -type ExcludeZulu930 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA930 { width: number; height: number; depth: number } -interface ShapeB930 { color: string; opacity: number; blend: string } -interface ShapeC930 { x: number; y: number; z: number; w: number } -interface ShapeD930 { label: string; title: string; summary: string } - -type Combined930 = ShapeA930 & ShapeB930 & ShapeC930 & ShapeD930; -type OptionalAll930 = { [K in keyof Combined930]?: Combined930[K] }; -type RequiredAll930 = { [K in keyof Combined930]-?: Combined930[K] }; -type ReadonlyAll930 = { readonly [K in keyof Combined930]: Combined930[K] }; -type NullableAll930 = { [K in keyof Combined930]: Combined930[K] | null }; +type EV_0930 = Val_0930; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString930 = T extends string ? true : false; -type IsNumber930 = T extends number ? true : false; -type TypeName930 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames930 = { - [K in keyof BigRecord930]: TypeName930; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb930 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource930 = "user" | "post" | "comment" | "tag" | "category"; -type Action930 = `${Verb930}_${Resource930}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise930 = T extends Promise ? UnwrapPromise930 : T; -type UnwrapArray930 = T extends (infer U)[] ? UnwrapArray930 : T; -type Head930 = T extends [infer H, ...infer _] ? H : never; -type Tail930 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation930 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation930>] - : never; +interface Registry_09_30 { + entities: Map; + validators: EV_0930; + paths: Set; + merged: DeepMerge_0930; +} -type SmallUnion930 = "a" | "b" | "c" | "d"; -type AllPerms930 = Permutation930; +type CK_0930 = `p09.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig930, - Flat930, - FR930, - BigUnion930, - ExtractAlpha930, - ExcludeZulu930, - OptionalAll930, - RequiredAll930, - ReadonlyAll930, - NullableAll930, - TypeNames930, - Action930, - AllPerms930, -}; +export type { Entity_09_30, Registry_09_30, CK_0930, EP_0930, EV_0930, DeepMerge_0930 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts index 269b7a24..51615563 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-31.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-31 (seed 931) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-31 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0931 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0931 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord931 { - a931: { x: number; y: string; z: boolean }; - b931: { p: string[]; q: Record }; - c931: { nested: { deep: { deeper: { deepest: string } } } }; - d931: number; - e931: string; - f931: boolean; - g931: null; - h931: undefined; - i931: bigint; - j931: symbol; +interface Entity_09_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_31 | null; children: Entity_09_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x0931: number; y0931: string; z0931: boolean }; } -type PartialBig931 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten931 = T extends Array ? Flatten931 : T; -type Nested931 = number[][][][][][][][][][]; -type Flat931 = Flatten931; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly931 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly931 : T[K]; -}; -type DeepRequired931 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired931 : T[K]; +type Path_0931 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0931}` }[keyof T & string] : never; +type EP_0931 = Path_0931; + +type Val_0931 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0931 } + : T[K] extends object ? { t: 'o'; props: Val_0931 } + : { t: 'u' }; }; -type FR931 = DeepReadonly931>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion931 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha931 = Extract; -type ExcludeZulu931 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA931 { width: number; height: number; depth: number } -interface ShapeB931 { color: string; opacity: number; blend: string } -interface ShapeC931 { x: number; y: number; z: number; w: number } -interface ShapeD931 { label: string; title: string; summary: string } - -type Combined931 = ShapeA931 & ShapeB931 & ShapeC931 & ShapeD931; -type OptionalAll931 = { [K in keyof Combined931]?: Combined931[K] }; -type RequiredAll931 = { [K in keyof Combined931]-?: Combined931[K] }; -type ReadonlyAll931 = { readonly [K in keyof Combined931]: Combined931[K] }; -type NullableAll931 = { [K in keyof Combined931]: Combined931[K] | null }; +type EV_0931 = Val_0931; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString931 = T extends string ? true : false; -type IsNumber931 = T extends number ? true : false; -type TypeName931 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames931 = { - [K in keyof BigRecord931]: TypeName931; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb931 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource931 = "user" | "post" | "comment" | "tag" | "category"; -type Action931 = `${Verb931}_${Resource931}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise931 = T extends Promise ? UnwrapPromise931 : T; -type UnwrapArray931 = T extends (infer U)[] ? UnwrapArray931 : T; -type Head931 = T extends [infer H, ...infer _] ? H : never; -type Tail931 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation931 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation931>] - : never; +interface Registry_09_31 { + entities: Map; + validators: EV_0931; + paths: Set; + merged: DeepMerge_0931; +} -type SmallUnion931 = "a" | "b" | "c" | "d"; -type AllPerms931 = Permutation931; +type CK_0931 = `p09.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig931, - Flat931, - FR931, - BigUnion931, - ExtractAlpha931, - ExcludeZulu931, - OptionalAll931, - RequiredAll931, - ReadonlyAll931, - NullableAll931, - TypeNames931, - Action931, - AllPerms931, -}; +export type { Entity_09_31, Registry_09_31, CK_0931, EP_0931, EV_0931, DeepMerge_0931 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts index 21f9c856..78e70edb 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-32.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-32 (seed 932) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-32 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0932 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0932 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord932 { - a932: { x: number; y: string; z: boolean }; - b932: { p: string[]; q: Record }; - c932: { nested: { deep: { deeper: { deepest: string } } } }; - d932: number; - e932: string; - f932: boolean; - g932: null; - h932: undefined; - i932: bigint; - j932: symbol; +interface Entity_09_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_32 | null; children: Entity_09_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x0932: number; y0932: string; z0932: boolean }; } -type PartialBig932 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten932 = T extends Array ? Flatten932 : T; -type Nested932 = number[][][][][][][][][][]; -type Flat932 = Flatten932; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly932 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly932 : T[K]; -}; -type DeepRequired932 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired932 : T[K]; +type Path_0932 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0932}` }[keyof T & string] : never; +type EP_0932 = Path_0932; + +type Val_0932 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0932 } + : T[K] extends object ? { t: 'o'; props: Val_0932 } + : { t: 'u' }; }; -type FR932 = DeepReadonly932>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion932 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha932 = Extract; -type ExcludeZulu932 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA932 { width: number; height: number; depth: number } -interface ShapeB932 { color: string; opacity: number; blend: string } -interface ShapeC932 { x: number; y: number; z: number; w: number } -interface ShapeD932 { label: string; title: string; summary: string } - -type Combined932 = ShapeA932 & ShapeB932 & ShapeC932 & ShapeD932; -type OptionalAll932 = { [K in keyof Combined932]?: Combined932[K] }; -type RequiredAll932 = { [K in keyof Combined932]-?: Combined932[K] }; -type ReadonlyAll932 = { readonly [K in keyof Combined932]: Combined932[K] }; -type NullableAll932 = { [K in keyof Combined932]: Combined932[K] | null }; +type EV_0932 = Val_0932; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString932 = T extends string ? true : false; -type IsNumber932 = T extends number ? true : false; -type TypeName932 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames932 = { - [K in keyof BigRecord932]: TypeName932; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb932 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource932 = "user" | "post" | "comment" | "tag" | "category"; -type Action932 = `${Verb932}_${Resource932}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise932 = T extends Promise ? UnwrapPromise932 : T; -type UnwrapArray932 = T extends (infer U)[] ? UnwrapArray932 : T; -type Head932 = T extends [infer H, ...infer _] ? H : never; -type Tail932 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation932 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation932>] - : never; +interface Registry_09_32 { + entities: Map; + validators: EV_0932; + paths: Set; + merged: DeepMerge_0932; +} -type SmallUnion932 = "a" | "b" | "c" | "d"; -type AllPerms932 = Permutation932; +type CK_0932 = `p09.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig932, - Flat932, - FR932, - BigUnion932, - ExtractAlpha932, - ExcludeZulu932, - OptionalAll932, - RequiredAll932, - ReadonlyAll932, - NullableAll932, - TypeNames932, - Action932, - AllPerms932, -}; +export type { Entity_09_32, Registry_09_32, CK_0932, EP_0932, EV_0932, DeepMerge_0932 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts index aebf93d8..c43370f3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-33.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-33 (seed 933) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-33 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0933 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0933 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord933 { - a933: { x: number; y: string; z: boolean }; - b933: { p: string[]; q: Record }; - c933: { nested: { deep: { deeper: { deepest: string } } } }; - d933: number; - e933: string; - f933: boolean; - g933: null; - h933: undefined; - i933: bigint; - j933: symbol; +interface Entity_09_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_33 | null; children: Entity_09_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x0933: number; y0933: string; z0933: boolean }; } -type PartialBig933 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten933 = T extends Array ? Flatten933 : T; -type Nested933 = number[][][][][][][][][][]; -type Flat933 = Flatten933; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly933 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly933 : T[K]; -}; -type DeepRequired933 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired933 : T[K]; +type Path_0933 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0933}` }[keyof T & string] : never; +type EP_0933 = Path_0933; + +type Val_0933 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0933 } + : T[K] extends object ? { t: 'o'; props: Val_0933 } + : { t: 'u' }; }; -type FR933 = DeepReadonly933>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion933 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha933 = Extract; -type ExcludeZulu933 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA933 { width: number; height: number; depth: number } -interface ShapeB933 { color: string; opacity: number; blend: string } -interface ShapeC933 { x: number; y: number; z: number; w: number } -interface ShapeD933 { label: string; title: string; summary: string } - -type Combined933 = ShapeA933 & ShapeB933 & ShapeC933 & ShapeD933; -type OptionalAll933 = { [K in keyof Combined933]?: Combined933[K] }; -type RequiredAll933 = { [K in keyof Combined933]-?: Combined933[K] }; -type ReadonlyAll933 = { readonly [K in keyof Combined933]: Combined933[K] }; -type NullableAll933 = { [K in keyof Combined933]: Combined933[K] | null }; +type EV_0933 = Val_0933; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString933 = T extends string ? true : false; -type IsNumber933 = T extends number ? true : false; -type TypeName933 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames933 = { - [K in keyof BigRecord933]: TypeName933; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb933 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource933 = "user" | "post" | "comment" | "tag" | "category"; -type Action933 = `${Verb933}_${Resource933}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise933 = T extends Promise ? UnwrapPromise933 : T; -type UnwrapArray933 = T extends (infer U)[] ? UnwrapArray933 : T; -type Head933 = T extends [infer H, ...infer _] ? H : never; -type Tail933 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation933 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation933>] - : never; +interface Registry_09_33 { + entities: Map; + validators: EV_0933; + paths: Set; + merged: DeepMerge_0933; +} -type SmallUnion933 = "a" | "b" | "c" | "d"; -type AllPerms933 = Permutation933; +type CK_0933 = `p09.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig933, - Flat933, - FR933, - BigUnion933, - ExtractAlpha933, - ExcludeZulu933, - OptionalAll933, - RequiredAll933, - ReadonlyAll933, - NullableAll933, - TypeNames933, - Action933, - AllPerms933, -}; +export type { Entity_09_33, Registry_09_33, CK_0933, EP_0933, EV_0933, DeepMerge_0933 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts index b845e2b6..3167fcfa 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-34.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-34 (seed 934) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-34 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0934 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0934 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord934 { - a934: { x: number; y: string; z: boolean }; - b934: { p: string[]; q: Record }; - c934: { nested: { deep: { deeper: { deepest: string } } } }; - d934: number; - e934: string; - f934: boolean; - g934: null; - h934: undefined; - i934: bigint; - j934: symbol; +interface Entity_09_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_34 | null; children: Entity_09_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x0934: number; y0934: string; z0934: boolean }; } -type PartialBig934 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten934 = T extends Array ? Flatten934 : T; -type Nested934 = number[][][][][][][][][][]; -type Flat934 = Flatten934; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly934 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly934 : T[K]; -}; -type DeepRequired934 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired934 : T[K]; +type Path_0934 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0934}` }[keyof T & string] : never; +type EP_0934 = Path_0934; + +type Val_0934 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0934 } + : T[K] extends object ? { t: 'o'; props: Val_0934 } + : { t: 'u' }; }; -type FR934 = DeepReadonly934>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion934 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha934 = Extract; -type ExcludeZulu934 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA934 { width: number; height: number; depth: number } -interface ShapeB934 { color: string; opacity: number; blend: string } -interface ShapeC934 { x: number; y: number; z: number; w: number } -interface ShapeD934 { label: string; title: string; summary: string } - -type Combined934 = ShapeA934 & ShapeB934 & ShapeC934 & ShapeD934; -type OptionalAll934 = { [K in keyof Combined934]?: Combined934[K] }; -type RequiredAll934 = { [K in keyof Combined934]-?: Combined934[K] }; -type ReadonlyAll934 = { readonly [K in keyof Combined934]: Combined934[K] }; -type NullableAll934 = { [K in keyof Combined934]: Combined934[K] | null }; +type EV_0934 = Val_0934; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString934 = T extends string ? true : false; -type IsNumber934 = T extends number ? true : false; -type TypeName934 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames934 = { - [K in keyof BigRecord934]: TypeName934; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb934 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource934 = "user" | "post" | "comment" | "tag" | "category"; -type Action934 = `${Verb934}_${Resource934}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise934 = T extends Promise ? UnwrapPromise934 : T; -type UnwrapArray934 = T extends (infer U)[] ? UnwrapArray934 : T; -type Head934 = T extends [infer H, ...infer _] ? H : never; -type Tail934 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation934 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation934>] - : never; +interface Registry_09_34 { + entities: Map; + validators: EV_0934; + paths: Set; + merged: DeepMerge_0934; +} -type SmallUnion934 = "a" | "b" | "c" | "d"; -type AllPerms934 = Permutation934; +type CK_0934 = `p09.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig934, - Flat934, - FR934, - BigUnion934, - ExtractAlpha934, - ExcludeZulu934, - OptionalAll934, - RequiredAll934, - ReadonlyAll934, - NullableAll934, - TypeNames934, - Action934, - AllPerms934, -}; +export type { Entity_09_34, Registry_09_34, CK_0934, EP_0934, EV_0934, DeepMerge_0934 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts index b149f823..9dcfcc6d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-35.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-35 (seed 935) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-35 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0935 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0935 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord935 { - a935: { x: number; y: string; z: boolean }; - b935: { p: string[]; q: Record }; - c935: { nested: { deep: { deeper: { deepest: string } } } }; - d935: number; - e935: string; - f935: boolean; - g935: null; - h935: undefined; - i935: bigint; - j935: symbol; +interface Entity_09_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_35 | null; children: Entity_09_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x0935: number; y0935: string; z0935: boolean }; } -type PartialBig935 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten935 = T extends Array ? Flatten935 : T; -type Nested935 = number[][][][][][][][][][]; -type Flat935 = Flatten935; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly935 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly935 : T[K]; -}; -type DeepRequired935 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired935 : T[K]; +type Path_0935 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0935}` }[keyof T & string] : never; +type EP_0935 = Path_0935; + +type Val_0935 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0935 } + : T[K] extends object ? { t: 'o'; props: Val_0935 } + : { t: 'u' }; }; -type FR935 = DeepReadonly935>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion935 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha935 = Extract; -type ExcludeZulu935 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA935 { width: number; height: number; depth: number } -interface ShapeB935 { color: string; opacity: number; blend: string } -interface ShapeC935 { x: number; y: number; z: number; w: number } -interface ShapeD935 { label: string; title: string; summary: string } - -type Combined935 = ShapeA935 & ShapeB935 & ShapeC935 & ShapeD935; -type OptionalAll935 = { [K in keyof Combined935]?: Combined935[K] }; -type RequiredAll935 = { [K in keyof Combined935]-?: Combined935[K] }; -type ReadonlyAll935 = { readonly [K in keyof Combined935]: Combined935[K] }; -type NullableAll935 = { [K in keyof Combined935]: Combined935[K] | null }; +type EV_0935 = Val_0935; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString935 = T extends string ? true : false; -type IsNumber935 = T extends number ? true : false; -type TypeName935 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames935 = { - [K in keyof BigRecord935]: TypeName935; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb935 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource935 = "user" | "post" | "comment" | "tag" | "category"; -type Action935 = `${Verb935}_${Resource935}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise935 = T extends Promise ? UnwrapPromise935 : T; -type UnwrapArray935 = T extends (infer U)[] ? UnwrapArray935 : T; -type Head935 = T extends [infer H, ...infer _] ? H : never; -type Tail935 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation935 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation935>] - : never; +interface Registry_09_35 { + entities: Map; + validators: EV_0935; + paths: Set; + merged: DeepMerge_0935; +} -type SmallUnion935 = "a" | "b" | "c" | "d"; -type AllPerms935 = Permutation935; +type CK_0935 = `p09.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig935, - Flat935, - FR935, - BigUnion935, - ExtractAlpha935, - ExcludeZulu935, - OptionalAll935, - RequiredAll935, - ReadonlyAll935, - NullableAll935, - TypeNames935, - Action935, - AllPerms935, -}; +export type { Entity_09_35, Registry_09_35, CK_0935, EP_0935, EV_0935, DeepMerge_0935 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts index f0e57fbb..7f233196 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-36.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-36 (seed 936) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-36 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0936 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0936 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord936 { - a936: { x: number; y: string; z: boolean }; - b936: { p: string[]; q: Record }; - c936: { nested: { deep: { deeper: { deepest: string } } } }; - d936: number; - e936: string; - f936: boolean; - g936: null; - h936: undefined; - i936: bigint; - j936: symbol; +interface Entity_09_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_36 | null; children: Entity_09_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x0936: number; y0936: string; z0936: boolean }; } -type PartialBig936 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten936 = T extends Array ? Flatten936 : T; -type Nested936 = number[][][][][][][][][][]; -type Flat936 = Flatten936; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly936 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly936 : T[K]; -}; -type DeepRequired936 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired936 : T[K]; +type Path_0936 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0936}` }[keyof T & string] : never; +type EP_0936 = Path_0936; + +type Val_0936 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0936 } + : T[K] extends object ? { t: 'o'; props: Val_0936 } + : { t: 'u' }; }; -type FR936 = DeepReadonly936>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion936 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha936 = Extract; -type ExcludeZulu936 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA936 { width: number; height: number; depth: number } -interface ShapeB936 { color: string; opacity: number; blend: string } -interface ShapeC936 { x: number; y: number; z: number; w: number } -interface ShapeD936 { label: string; title: string; summary: string } - -type Combined936 = ShapeA936 & ShapeB936 & ShapeC936 & ShapeD936; -type OptionalAll936 = { [K in keyof Combined936]?: Combined936[K] }; -type RequiredAll936 = { [K in keyof Combined936]-?: Combined936[K] }; -type ReadonlyAll936 = { readonly [K in keyof Combined936]: Combined936[K] }; -type NullableAll936 = { [K in keyof Combined936]: Combined936[K] | null }; +type EV_0936 = Val_0936; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString936 = T extends string ? true : false; -type IsNumber936 = T extends number ? true : false; -type TypeName936 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames936 = { - [K in keyof BigRecord936]: TypeName936; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb936 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource936 = "user" | "post" | "comment" | "tag" | "category"; -type Action936 = `${Verb936}_${Resource936}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise936 = T extends Promise ? UnwrapPromise936 : T; -type UnwrapArray936 = T extends (infer U)[] ? UnwrapArray936 : T; -type Head936 = T extends [infer H, ...infer _] ? H : never; -type Tail936 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation936 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation936>] - : never; +interface Registry_09_36 { + entities: Map; + validators: EV_0936; + paths: Set; + merged: DeepMerge_0936; +} -type SmallUnion936 = "a" | "b" | "c" | "d"; -type AllPerms936 = Permutation936; +type CK_0936 = `p09.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig936, - Flat936, - FR936, - BigUnion936, - ExtractAlpha936, - ExcludeZulu936, - OptionalAll936, - RequiredAll936, - ReadonlyAll936, - NullableAll936, - TypeNames936, - Action936, - AllPerms936, -}; +export type { Entity_09_36, Registry_09_36, CK_0936, EP_0936, EV_0936, DeepMerge_0936 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts index fada28f1..a6a691a0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-37.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-37 (seed 937) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-37 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0937 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0937 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord937 { - a937: { x: number; y: string; z: boolean }; - b937: { p: string[]; q: Record }; - c937: { nested: { deep: { deeper: { deepest: string } } } }; - d937: number; - e937: string; - f937: boolean; - g937: null; - h937: undefined; - i937: bigint; - j937: symbol; +interface Entity_09_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_37 | null; children: Entity_09_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x0937: number; y0937: string; z0937: boolean }; } -type PartialBig937 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten937 = T extends Array ? Flatten937 : T; -type Nested937 = number[][][][][][][][][][]; -type Flat937 = Flatten937; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly937 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly937 : T[K]; -}; -type DeepRequired937 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired937 : T[K]; +type Path_0937 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0937}` }[keyof T & string] : never; +type EP_0937 = Path_0937; + +type Val_0937 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0937 } + : T[K] extends object ? { t: 'o'; props: Val_0937 } + : { t: 'u' }; }; -type FR937 = DeepReadonly937>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion937 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha937 = Extract; -type ExcludeZulu937 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA937 { width: number; height: number; depth: number } -interface ShapeB937 { color: string; opacity: number; blend: string } -interface ShapeC937 { x: number; y: number; z: number; w: number } -interface ShapeD937 { label: string; title: string; summary: string } - -type Combined937 = ShapeA937 & ShapeB937 & ShapeC937 & ShapeD937; -type OptionalAll937 = { [K in keyof Combined937]?: Combined937[K] }; -type RequiredAll937 = { [K in keyof Combined937]-?: Combined937[K] }; -type ReadonlyAll937 = { readonly [K in keyof Combined937]: Combined937[K] }; -type NullableAll937 = { [K in keyof Combined937]: Combined937[K] | null }; +type EV_0937 = Val_0937; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString937 = T extends string ? true : false; -type IsNumber937 = T extends number ? true : false; -type TypeName937 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames937 = { - [K in keyof BigRecord937]: TypeName937; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb937 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource937 = "user" | "post" | "comment" | "tag" | "category"; -type Action937 = `${Verb937}_${Resource937}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise937 = T extends Promise ? UnwrapPromise937 : T; -type UnwrapArray937 = T extends (infer U)[] ? UnwrapArray937 : T; -type Head937 = T extends [infer H, ...infer _] ? H : never; -type Tail937 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation937 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation937>] - : never; +interface Registry_09_37 { + entities: Map; + validators: EV_0937; + paths: Set; + merged: DeepMerge_0937; +} -type SmallUnion937 = "a" | "b" | "c" | "d"; -type AllPerms937 = Permutation937; +type CK_0937 = `p09.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig937, - Flat937, - FR937, - BigUnion937, - ExtractAlpha937, - ExcludeZulu937, - OptionalAll937, - RequiredAll937, - ReadonlyAll937, - NullableAll937, - TypeNames937, - Action937, - AllPerms937, -}; +export type { Entity_09_37, Registry_09_37, CK_0937, EP_0937, EV_0937, DeepMerge_0937 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts index 293d2da4..9e24dff2 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-38.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-38 (seed 938) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-38 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0938 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0938 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord938 { - a938: { x: number; y: string; z: boolean }; - b938: { p: string[]; q: Record }; - c938: { nested: { deep: { deeper: { deepest: string } } } }; - d938: number; - e938: string; - f938: boolean; - g938: null; - h938: undefined; - i938: bigint; - j938: symbol; +interface Entity_09_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_38 | null; children: Entity_09_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x0938: number; y0938: string; z0938: boolean }; } -type PartialBig938 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten938 = T extends Array ? Flatten938 : T; -type Nested938 = number[][][][][][][][][][]; -type Flat938 = Flatten938; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly938 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly938 : T[K]; -}; -type DeepRequired938 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired938 : T[K]; +type Path_0938 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0938}` }[keyof T & string] : never; +type EP_0938 = Path_0938; + +type Val_0938 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0938 } + : T[K] extends object ? { t: 'o'; props: Val_0938 } + : { t: 'u' }; }; -type FR938 = DeepReadonly938>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion938 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha938 = Extract; -type ExcludeZulu938 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA938 { width: number; height: number; depth: number } -interface ShapeB938 { color: string; opacity: number; blend: string } -interface ShapeC938 { x: number; y: number; z: number; w: number } -interface ShapeD938 { label: string; title: string; summary: string } - -type Combined938 = ShapeA938 & ShapeB938 & ShapeC938 & ShapeD938; -type OptionalAll938 = { [K in keyof Combined938]?: Combined938[K] }; -type RequiredAll938 = { [K in keyof Combined938]-?: Combined938[K] }; -type ReadonlyAll938 = { readonly [K in keyof Combined938]: Combined938[K] }; -type NullableAll938 = { [K in keyof Combined938]: Combined938[K] | null }; +type EV_0938 = Val_0938; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString938 = T extends string ? true : false; -type IsNumber938 = T extends number ? true : false; -type TypeName938 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames938 = { - [K in keyof BigRecord938]: TypeName938; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb938 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource938 = "user" | "post" | "comment" | "tag" | "category"; -type Action938 = `${Verb938}_${Resource938}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise938 = T extends Promise ? UnwrapPromise938 : T; -type UnwrapArray938 = T extends (infer U)[] ? UnwrapArray938 : T; -type Head938 = T extends [infer H, ...infer _] ? H : never; -type Tail938 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation938 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation938>] - : never; +interface Registry_09_38 { + entities: Map; + validators: EV_0938; + paths: Set; + merged: DeepMerge_0938; +} -type SmallUnion938 = "a" | "b" | "c" | "d"; -type AllPerms938 = Permutation938; +type CK_0938 = `p09.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig938, - Flat938, - FR938, - BigUnion938, - ExtractAlpha938, - ExcludeZulu938, - OptionalAll938, - RequiredAll938, - ReadonlyAll938, - NullableAll938, - TypeNames938, - Action938, - AllPerms938, -}; +export type { Entity_09_38, Registry_09_38, CK_0938, EP_0938, EV_0938, DeepMerge_0938 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts index 75f03358..54c6469a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-39.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-39 (seed 939) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-39 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0939 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0939 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord939 { - a939: { x: number; y: string; z: boolean }; - b939: { p: string[]; q: Record }; - c939: { nested: { deep: { deeper: { deepest: string } } } }; - d939: number; - e939: string; - f939: boolean; - g939: null; - h939: undefined; - i939: bigint; - j939: symbol; +interface Entity_09_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_39 | null; children: Entity_09_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x0939: number; y0939: string; z0939: boolean }; } -type PartialBig939 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten939 = T extends Array ? Flatten939 : T; -type Nested939 = number[][][][][][][][][][]; -type Flat939 = Flatten939; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly939 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly939 : T[K]; -}; -type DeepRequired939 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired939 : T[K]; +type Path_0939 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0939}` }[keyof T & string] : never; +type EP_0939 = Path_0939; + +type Val_0939 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0939 } + : T[K] extends object ? { t: 'o'; props: Val_0939 } + : { t: 'u' }; }; -type FR939 = DeepReadonly939>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion939 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha939 = Extract; -type ExcludeZulu939 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA939 { width: number; height: number; depth: number } -interface ShapeB939 { color: string; opacity: number; blend: string } -interface ShapeC939 { x: number; y: number; z: number; w: number } -interface ShapeD939 { label: string; title: string; summary: string } - -type Combined939 = ShapeA939 & ShapeB939 & ShapeC939 & ShapeD939; -type OptionalAll939 = { [K in keyof Combined939]?: Combined939[K] }; -type RequiredAll939 = { [K in keyof Combined939]-?: Combined939[K] }; -type ReadonlyAll939 = { readonly [K in keyof Combined939]: Combined939[K] }; -type NullableAll939 = { [K in keyof Combined939]: Combined939[K] | null }; +type EV_0939 = Val_0939; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString939 = T extends string ? true : false; -type IsNumber939 = T extends number ? true : false; -type TypeName939 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames939 = { - [K in keyof BigRecord939]: TypeName939; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb939 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource939 = "user" | "post" | "comment" | "tag" | "category"; -type Action939 = `${Verb939}_${Resource939}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise939 = T extends Promise ? UnwrapPromise939 : T; -type UnwrapArray939 = T extends (infer U)[] ? UnwrapArray939 : T; -type Head939 = T extends [infer H, ...infer _] ? H : never; -type Tail939 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation939 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation939>] - : never; +interface Registry_09_39 { + entities: Map; + validators: EV_0939; + paths: Set; + merged: DeepMerge_0939; +} -type SmallUnion939 = "a" | "b" | "c" | "d"; -type AllPerms939 = Permutation939; +type CK_0939 = `p09.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig939, - Flat939, - FR939, - BigUnion939, - ExtractAlpha939, - ExcludeZulu939, - OptionalAll939, - RequiredAll939, - ReadonlyAll939, - NullableAll939, - TypeNames939, - Action939, - AllPerms939, -}; +export type { Entity_09_39, Registry_09_39, CK_0939, EP_0939, EV_0939, DeepMerge_0939 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts index 9909ddd3..0331364f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-40.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-40 (seed 940) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-40 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0940 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0940 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord940 { - a940: { x: number; y: string; z: boolean }; - b940: { p: string[]; q: Record }; - c940: { nested: { deep: { deeper: { deepest: string } } } }; - d940: number; - e940: string; - f940: boolean; - g940: null; - h940: undefined; - i940: bigint; - j940: symbol; +interface Entity_09_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_40 | null; children: Entity_09_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x0940: number; y0940: string; z0940: boolean }; } -type PartialBig940 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten940 = T extends Array ? Flatten940 : T; -type Nested940 = number[][][][][][][][][][]; -type Flat940 = Flatten940; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly940 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly940 : T[K]; -}; -type DeepRequired940 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired940 : T[K]; +type Path_0940 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0940}` }[keyof T & string] : never; +type EP_0940 = Path_0940; + +type Val_0940 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0940 } + : T[K] extends object ? { t: 'o'; props: Val_0940 } + : { t: 'u' }; }; -type FR940 = DeepReadonly940>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion940 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha940 = Extract; -type ExcludeZulu940 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA940 { width: number; height: number; depth: number } -interface ShapeB940 { color: string; opacity: number; blend: string } -interface ShapeC940 { x: number; y: number; z: number; w: number } -interface ShapeD940 { label: string; title: string; summary: string } - -type Combined940 = ShapeA940 & ShapeB940 & ShapeC940 & ShapeD940; -type OptionalAll940 = { [K in keyof Combined940]?: Combined940[K] }; -type RequiredAll940 = { [K in keyof Combined940]-?: Combined940[K] }; -type ReadonlyAll940 = { readonly [K in keyof Combined940]: Combined940[K] }; -type NullableAll940 = { [K in keyof Combined940]: Combined940[K] | null }; +type EV_0940 = Val_0940; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString940 = T extends string ? true : false; -type IsNumber940 = T extends number ? true : false; -type TypeName940 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames940 = { - [K in keyof BigRecord940]: TypeName940; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb940 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource940 = "user" | "post" | "comment" | "tag" | "category"; -type Action940 = `${Verb940}_${Resource940}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise940 = T extends Promise ? UnwrapPromise940 : T; -type UnwrapArray940 = T extends (infer U)[] ? UnwrapArray940 : T; -type Head940 = T extends [infer H, ...infer _] ? H : never; -type Tail940 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation940 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation940>] - : never; +interface Registry_09_40 { + entities: Map; + validators: EV_0940; + paths: Set; + merged: DeepMerge_0940; +} -type SmallUnion940 = "a" | "b" | "c" | "d"; -type AllPerms940 = Permutation940; +type CK_0940 = `p09.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig940, - Flat940, - FR940, - BigUnion940, - ExtractAlpha940, - ExcludeZulu940, - OptionalAll940, - RequiredAll940, - ReadonlyAll940, - NullableAll940, - TypeNames940, - Action940, - AllPerms940, -}; +export type { Entity_09_40, Registry_09_40, CK_0940, EP_0940, EV_0940, DeepMerge_0940 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts index 8d748558..0c123840 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-41.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-41 (seed 941) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-41 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0941 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0941 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord941 { - a941: { x: number; y: string; z: boolean }; - b941: { p: string[]; q: Record }; - c941: { nested: { deep: { deeper: { deepest: string } } } }; - d941: number; - e941: string; - f941: boolean; - g941: null; - h941: undefined; - i941: bigint; - j941: symbol; +interface Entity_09_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_41 | null; children: Entity_09_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x0941: number; y0941: string; z0941: boolean }; } -type PartialBig941 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten941 = T extends Array ? Flatten941 : T; -type Nested941 = number[][][][][][][][][][]; -type Flat941 = Flatten941; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly941 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly941 : T[K]; -}; -type DeepRequired941 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired941 : T[K]; +type Path_0941 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0941}` }[keyof T & string] : never; +type EP_0941 = Path_0941; + +type Val_0941 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0941 } + : T[K] extends object ? { t: 'o'; props: Val_0941 } + : { t: 'u' }; }; -type FR941 = DeepReadonly941>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion941 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha941 = Extract; -type ExcludeZulu941 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA941 { width: number; height: number; depth: number } -interface ShapeB941 { color: string; opacity: number; blend: string } -interface ShapeC941 { x: number; y: number; z: number; w: number } -interface ShapeD941 { label: string; title: string; summary: string } - -type Combined941 = ShapeA941 & ShapeB941 & ShapeC941 & ShapeD941; -type OptionalAll941 = { [K in keyof Combined941]?: Combined941[K] }; -type RequiredAll941 = { [K in keyof Combined941]-?: Combined941[K] }; -type ReadonlyAll941 = { readonly [K in keyof Combined941]: Combined941[K] }; -type NullableAll941 = { [K in keyof Combined941]: Combined941[K] | null }; +type EV_0941 = Val_0941; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString941 = T extends string ? true : false; -type IsNumber941 = T extends number ? true : false; -type TypeName941 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames941 = { - [K in keyof BigRecord941]: TypeName941; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb941 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource941 = "user" | "post" | "comment" | "tag" | "category"; -type Action941 = `${Verb941}_${Resource941}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise941 = T extends Promise ? UnwrapPromise941 : T; -type UnwrapArray941 = T extends (infer U)[] ? UnwrapArray941 : T; -type Head941 = T extends [infer H, ...infer _] ? H : never; -type Tail941 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation941 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation941>] - : never; +interface Registry_09_41 { + entities: Map; + validators: EV_0941; + paths: Set; + merged: DeepMerge_0941; +} -type SmallUnion941 = "a" | "b" | "c" | "d"; -type AllPerms941 = Permutation941; +type CK_0941 = `p09.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig941, - Flat941, - FR941, - BigUnion941, - ExtractAlpha941, - ExcludeZulu941, - OptionalAll941, - RequiredAll941, - ReadonlyAll941, - NullableAll941, - TypeNames941, - Action941, - AllPerms941, -}; +export type { Entity_09_41, Registry_09_41, CK_0941, EP_0941, EV_0941, DeepMerge_0941 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts index c66428ed..60281cf1 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-42.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-42 (seed 942) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-42 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0942 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0942 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord942 { - a942: { x: number; y: string; z: boolean }; - b942: { p: string[]; q: Record }; - c942: { nested: { deep: { deeper: { deepest: string } } } }; - d942: number; - e942: string; - f942: boolean; - g942: null; - h942: undefined; - i942: bigint; - j942: symbol; +interface Entity_09_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_42 | null; children: Entity_09_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x0942: number; y0942: string; z0942: boolean }; } -type PartialBig942 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten942 = T extends Array ? Flatten942 : T; -type Nested942 = number[][][][][][][][][][]; -type Flat942 = Flatten942; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly942 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly942 : T[K]; -}; -type DeepRequired942 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired942 : T[K]; +type Path_0942 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0942}` }[keyof T & string] : never; +type EP_0942 = Path_0942; + +type Val_0942 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0942 } + : T[K] extends object ? { t: 'o'; props: Val_0942 } + : { t: 'u' }; }; -type FR942 = DeepReadonly942>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion942 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha942 = Extract; -type ExcludeZulu942 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA942 { width: number; height: number; depth: number } -interface ShapeB942 { color: string; opacity: number; blend: string } -interface ShapeC942 { x: number; y: number; z: number; w: number } -interface ShapeD942 { label: string; title: string; summary: string } - -type Combined942 = ShapeA942 & ShapeB942 & ShapeC942 & ShapeD942; -type OptionalAll942 = { [K in keyof Combined942]?: Combined942[K] }; -type RequiredAll942 = { [K in keyof Combined942]-?: Combined942[K] }; -type ReadonlyAll942 = { readonly [K in keyof Combined942]: Combined942[K] }; -type NullableAll942 = { [K in keyof Combined942]: Combined942[K] | null }; +type EV_0942 = Val_0942; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString942 = T extends string ? true : false; -type IsNumber942 = T extends number ? true : false; -type TypeName942 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames942 = { - [K in keyof BigRecord942]: TypeName942; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb942 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource942 = "user" | "post" | "comment" | "tag" | "category"; -type Action942 = `${Verb942}_${Resource942}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise942 = T extends Promise ? UnwrapPromise942 : T; -type UnwrapArray942 = T extends (infer U)[] ? UnwrapArray942 : T; -type Head942 = T extends [infer H, ...infer _] ? H : never; -type Tail942 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation942 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation942>] - : never; +interface Registry_09_42 { + entities: Map; + validators: EV_0942; + paths: Set; + merged: DeepMerge_0942; +} -type SmallUnion942 = "a" | "b" | "c" | "d"; -type AllPerms942 = Permutation942; +type CK_0942 = `p09.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig942, - Flat942, - FR942, - BigUnion942, - ExtractAlpha942, - ExcludeZulu942, - OptionalAll942, - RequiredAll942, - ReadonlyAll942, - NullableAll942, - TypeNames942, - Action942, - AllPerms942, -}; +export type { Entity_09_42, Registry_09_42, CK_0942, EP_0942, EV_0942, DeepMerge_0942 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts index f476c66d..5c650a2d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-43.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-43 (seed 943) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-43 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0943 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0943 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord943 { - a943: { x: number; y: string; z: boolean }; - b943: { p: string[]; q: Record }; - c943: { nested: { deep: { deeper: { deepest: string } } } }; - d943: number; - e943: string; - f943: boolean; - g943: null; - h943: undefined; - i943: bigint; - j943: symbol; +interface Entity_09_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_43 | null; children: Entity_09_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x0943: number; y0943: string; z0943: boolean }; } -type PartialBig943 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten943 = T extends Array ? Flatten943 : T; -type Nested943 = number[][][][][][][][][][]; -type Flat943 = Flatten943; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly943 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly943 : T[K]; -}; -type DeepRequired943 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired943 : T[K]; +type Path_0943 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0943}` }[keyof T & string] : never; +type EP_0943 = Path_0943; + +type Val_0943 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0943 } + : T[K] extends object ? { t: 'o'; props: Val_0943 } + : { t: 'u' }; }; -type FR943 = DeepReadonly943>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion943 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha943 = Extract; -type ExcludeZulu943 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA943 { width: number; height: number; depth: number } -interface ShapeB943 { color: string; opacity: number; blend: string } -interface ShapeC943 { x: number; y: number; z: number; w: number } -interface ShapeD943 { label: string; title: string; summary: string } - -type Combined943 = ShapeA943 & ShapeB943 & ShapeC943 & ShapeD943; -type OptionalAll943 = { [K in keyof Combined943]?: Combined943[K] }; -type RequiredAll943 = { [K in keyof Combined943]-?: Combined943[K] }; -type ReadonlyAll943 = { readonly [K in keyof Combined943]: Combined943[K] }; -type NullableAll943 = { [K in keyof Combined943]: Combined943[K] | null }; +type EV_0943 = Val_0943; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString943 = T extends string ? true : false; -type IsNumber943 = T extends number ? true : false; -type TypeName943 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames943 = { - [K in keyof BigRecord943]: TypeName943; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb943 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource943 = "user" | "post" | "comment" | "tag" | "category"; -type Action943 = `${Verb943}_${Resource943}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise943 = T extends Promise ? UnwrapPromise943 : T; -type UnwrapArray943 = T extends (infer U)[] ? UnwrapArray943 : T; -type Head943 = T extends [infer H, ...infer _] ? H : never; -type Tail943 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation943 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation943>] - : never; +interface Registry_09_43 { + entities: Map; + validators: EV_0943; + paths: Set; + merged: DeepMerge_0943; +} -type SmallUnion943 = "a" | "b" | "c" | "d"; -type AllPerms943 = Permutation943; +type CK_0943 = `p09.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig943, - Flat943, - FR943, - BigUnion943, - ExtractAlpha943, - ExcludeZulu943, - OptionalAll943, - RequiredAll943, - ReadonlyAll943, - NullableAll943, - TypeNames943, - Action943, - AllPerms943, -}; +export type { Entity_09_43, Registry_09_43, CK_0943, EP_0943, EV_0943, DeepMerge_0943 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts index 96ccdadd..c79b0767 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-44.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-44 (seed 944) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-44 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0944 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0944 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord944 { - a944: { x: number; y: string; z: boolean }; - b944: { p: string[]; q: Record }; - c944: { nested: { deep: { deeper: { deepest: string } } } }; - d944: number; - e944: string; - f944: boolean; - g944: null; - h944: undefined; - i944: bigint; - j944: symbol; +interface Entity_09_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_44 | null; children: Entity_09_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x0944: number; y0944: string; z0944: boolean }; } -type PartialBig944 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten944 = T extends Array ? Flatten944 : T; -type Nested944 = number[][][][][][][][][][]; -type Flat944 = Flatten944; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly944 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly944 : T[K]; -}; -type DeepRequired944 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired944 : T[K]; +type Path_0944 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0944}` }[keyof T & string] : never; +type EP_0944 = Path_0944; + +type Val_0944 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0944 } + : T[K] extends object ? { t: 'o'; props: Val_0944 } + : { t: 'u' }; }; -type FR944 = DeepReadonly944>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion944 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha944 = Extract; -type ExcludeZulu944 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA944 { width: number; height: number; depth: number } -interface ShapeB944 { color: string; opacity: number; blend: string } -interface ShapeC944 { x: number; y: number; z: number; w: number } -interface ShapeD944 { label: string; title: string; summary: string } - -type Combined944 = ShapeA944 & ShapeB944 & ShapeC944 & ShapeD944; -type OptionalAll944 = { [K in keyof Combined944]?: Combined944[K] }; -type RequiredAll944 = { [K in keyof Combined944]-?: Combined944[K] }; -type ReadonlyAll944 = { readonly [K in keyof Combined944]: Combined944[K] }; -type NullableAll944 = { [K in keyof Combined944]: Combined944[K] | null }; +type EV_0944 = Val_0944; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString944 = T extends string ? true : false; -type IsNumber944 = T extends number ? true : false; -type TypeName944 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames944 = { - [K in keyof BigRecord944]: TypeName944; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb944 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource944 = "user" | "post" | "comment" | "tag" | "category"; -type Action944 = `${Verb944}_${Resource944}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise944 = T extends Promise ? UnwrapPromise944 : T; -type UnwrapArray944 = T extends (infer U)[] ? UnwrapArray944 : T; -type Head944 = T extends [infer H, ...infer _] ? H : never; -type Tail944 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation944 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation944>] - : never; +interface Registry_09_44 { + entities: Map; + validators: EV_0944; + paths: Set; + merged: DeepMerge_0944; +} -type SmallUnion944 = "a" | "b" | "c" | "d"; -type AllPerms944 = Permutation944; +type CK_0944 = `p09.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig944, - Flat944, - FR944, - BigUnion944, - ExtractAlpha944, - ExcludeZulu944, - OptionalAll944, - RequiredAll944, - ReadonlyAll944, - NullableAll944, - TypeNames944, - Action944, - AllPerms944, -}; +export type { Entity_09_44, Registry_09_44, CK_0944, EP_0944, EV_0944, DeepMerge_0944 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts index d23946f7..c78e5975 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-45.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-45 (seed 945) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-45 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0945 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0945 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord945 { - a945: { x: number; y: string; z: boolean }; - b945: { p: string[]; q: Record }; - c945: { nested: { deep: { deeper: { deepest: string } } } }; - d945: number; - e945: string; - f945: boolean; - g945: null; - h945: undefined; - i945: bigint; - j945: symbol; +interface Entity_09_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_45 | null; children: Entity_09_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x0945: number; y0945: string; z0945: boolean }; } -type PartialBig945 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten945 = T extends Array ? Flatten945 : T; -type Nested945 = number[][][][][][][][][][]; -type Flat945 = Flatten945; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly945 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly945 : T[K]; -}; -type DeepRequired945 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired945 : T[K]; +type Path_0945 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0945}` }[keyof T & string] : never; +type EP_0945 = Path_0945; + +type Val_0945 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0945 } + : T[K] extends object ? { t: 'o'; props: Val_0945 } + : { t: 'u' }; }; -type FR945 = DeepReadonly945>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion945 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha945 = Extract; -type ExcludeZulu945 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA945 { width: number; height: number; depth: number } -interface ShapeB945 { color: string; opacity: number; blend: string } -interface ShapeC945 { x: number; y: number; z: number; w: number } -interface ShapeD945 { label: string; title: string; summary: string } - -type Combined945 = ShapeA945 & ShapeB945 & ShapeC945 & ShapeD945; -type OptionalAll945 = { [K in keyof Combined945]?: Combined945[K] }; -type RequiredAll945 = { [K in keyof Combined945]-?: Combined945[K] }; -type ReadonlyAll945 = { readonly [K in keyof Combined945]: Combined945[K] }; -type NullableAll945 = { [K in keyof Combined945]: Combined945[K] | null }; +type EV_0945 = Val_0945; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString945 = T extends string ? true : false; -type IsNumber945 = T extends number ? true : false; -type TypeName945 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames945 = { - [K in keyof BigRecord945]: TypeName945; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb945 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource945 = "user" | "post" | "comment" | "tag" | "category"; -type Action945 = `${Verb945}_${Resource945}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise945 = T extends Promise ? UnwrapPromise945 : T; -type UnwrapArray945 = T extends (infer U)[] ? UnwrapArray945 : T; -type Head945 = T extends [infer H, ...infer _] ? H : never; -type Tail945 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation945 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation945>] - : never; +interface Registry_09_45 { + entities: Map; + validators: EV_0945; + paths: Set; + merged: DeepMerge_0945; +} -type SmallUnion945 = "a" | "b" | "c" | "d"; -type AllPerms945 = Permutation945; +type CK_0945 = `p09.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig945, - Flat945, - FR945, - BigUnion945, - ExtractAlpha945, - ExcludeZulu945, - OptionalAll945, - RequiredAll945, - ReadonlyAll945, - NullableAll945, - TypeNames945, - Action945, - AllPerms945, -}; +export type { Entity_09_45, Registry_09_45, CK_0945, EP_0945, EV_0945, DeepMerge_0945 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts index b7335ac3..bf20bd01 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-46.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-46 (seed 946) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-46 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0946 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0946 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord946 { - a946: { x: number; y: string; z: boolean }; - b946: { p: string[]; q: Record }; - c946: { nested: { deep: { deeper: { deepest: string } } } }; - d946: number; - e946: string; - f946: boolean; - g946: null; - h946: undefined; - i946: bigint; - j946: symbol; +interface Entity_09_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_46 | null; children: Entity_09_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x0946: number; y0946: string; z0946: boolean }; } -type PartialBig946 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten946 = T extends Array ? Flatten946 : T; -type Nested946 = number[][][][][][][][][][]; -type Flat946 = Flatten946; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly946 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly946 : T[K]; -}; -type DeepRequired946 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired946 : T[K]; +type Path_0946 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0946}` }[keyof T & string] : never; +type EP_0946 = Path_0946; + +type Val_0946 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0946 } + : T[K] extends object ? { t: 'o'; props: Val_0946 } + : { t: 'u' }; }; -type FR946 = DeepReadonly946>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion946 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha946 = Extract; -type ExcludeZulu946 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA946 { width: number; height: number; depth: number } -interface ShapeB946 { color: string; opacity: number; blend: string } -interface ShapeC946 { x: number; y: number; z: number; w: number } -interface ShapeD946 { label: string; title: string; summary: string } - -type Combined946 = ShapeA946 & ShapeB946 & ShapeC946 & ShapeD946; -type OptionalAll946 = { [K in keyof Combined946]?: Combined946[K] }; -type RequiredAll946 = { [K in keyof Combined946]-?: Combined946[K] }; -type ReadonlyAll946 = { readonly [K in keyof Combined946]: Combined946[K] }; -type NullableAll946 = { [K in keyof Combined946]: Combined946[K] | null }; +type EV_0946 = Val_0946; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString946 = T extends string ? true : false; -type IsNumber946 = T extends number ? true : false; -type TypeName946 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames946 = { - [K in keyof BigRecord946]: TypeName946; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb946 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource946 = "user" | "post" | "comment" | "tag" | "category"; -type Action946 = `${Verb946}_${Resource946}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise946 = T extends Promise ? UnwrapPromise946 : T; -type UnwrapArray946 = T extends (infer U)[] ? UnwrapArray946 : T; -type Head946 = T extends [infer H, ...infer _] ? H : never; -type Tail946 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation946 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation946>] - : never; +interface Registry_09_46 { + entities: Map; + validators: EV_0946; + paths: Set; + merged: DeepMerge_0946; +} -type SmallUnion946 = "a" | "b" | "c" | "d"; -type AllPerms946 = Permutation946; +type CK_0946 = `p09.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig946, - Flat946, - FR946, - BigUnion946, - ExtractAlpha946, - ExcludeZulu946, - OptionalAll946, - RequiredAll946, - ReadonlyAll946, - NullableAll946, - TypeNames946, - Action946, - AllPerms946, -}; +export type { Entity_09_46, Registry_09_46, CK_0946, EP_0946, EV_0946, DeepMerge_0946 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts index 7ecdf8e3..1928920e 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-47.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-47 (seed 947) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-47 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0947 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0947 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord947 { - a947: { x: number; y: string; z: boolean }; - b947: { p: string[]; q: Record }; - c947: { nested: { deep: { deeper: { deepest: string } } } }; - d947: number; - e947: string; - f947: boolean; - g947: null; - h947: undefined; - i947: bigint; - j947: symbol; +interface Entity_09_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_47 | null; children: Entity_09_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x0947: number; y0947: string; z0947: boolean }; } -type PartialBig947 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten947 = T extends Array ? Flatten947 : T; -type Nested947 = number[][][][][][][][][][]; -type Flat947 = Flatten947; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly947 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly947 : T[K]; -}; -type DeepRequired947 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired947 : T[K]; +type Path_0947 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0947}` }[keyof T & string] : never; +type EP_0947 = Path_0947; + +type Val_0947 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0947 } + : T[K] extends object ? { t: 'o'; props: Val_0947 } + : { t: 'u' }; }; -type FR947 = DeepReadonly947>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion947 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha947 = Extract; -type ExcludeZulu947 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA947 { width: number; height: number; depth: number } -interface ShapeB947 { color: string; opacity: number; blend: string } -interface ShapeC947 { x: number; y: number; z: number; w: number } -interface ShapeD947 { label: string; title: string; summary: string } - -type Combined947 = ShapeA947 & ShapeB947 & ShapeC947 & ShapeD947; -type OptionalAll947 = { [K in keyof Combined947]?: Combined947[K] }; -type RequiredAll947 = { [K in keyof Combined947]-?: Combined947[K] }; -type ReadonlyAll947 = { readonly [K in keyof Combined947]: Combined947[K] }; -type NullableAll947 = { [K in keyof Combined947]: Combined947[K] | null }; +type EV_0947 = Val_0947; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString947 = T extends string ? true : false; -type IsNumber947 = T extends number ? true : false; -type TypeName947 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames947 = { - [K in keyof BigRecord947]: TypeName947; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb947 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource947 = "user" | "post" | "comment" | "tag" | "category"; -type Action947 = `${Verb947}_${Resource947}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise947 = T extends Promise ? UnwrapPromise947 : T; -type UnwrapArray947 = T extends (infer U)[] ? UnwrapArray947 : T; -type Head947 = T extends [infer H, ...infer _] ? H : never; -type Tail947 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation947 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation947>] - : never; +interface Registry_09_47 { + entities: Map; + validators: EV_0947; + paths: Set; + merged: DeepMerge_0947; +} -type SmallUnion947 = "a" | "b" | "c" | "d"; -type AllPerms947 = Permutation947; +type CK_0947 = `p09.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig947, - Flat947, - FR947, - BigUnion947, - ExtractAlpha947, - ExcludeZulu947, - OptionalAll947, - RequiredAll947, - ReadonlyAll947, - NullableAll947, - TypeNames947, - Action947, - AllPerms947, -}; +export type { Entity_09_47, Registry_09_47, CK_0947, EP_0947, EV_0947, DeepMerge_0947 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts index 2c6df07a..670dfc84 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-48.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-48 (seed 948) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-48 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0948 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0948 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord948 { - a948: { x: number; y: string; z: boolean }; - b948: { p: string[]; q: Record }; - c948: { nested: { deep: { deeper: { deepest: string } } } }; - d948: number; - e948: string; - f948: boolean; - g948: null; - h948: undefined; - i948: bigint; - j948: symbol; +interface Entity_09_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_48 | null; children: Entity_09_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x0948: number; y0948: string; z0948: boolean }; } -type PartialBig948 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten948 = T extends Array ? Flatten948 : T; -type Nested948 = number[][][][][][][][][][]; -type Flat948 = Flatten948; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly948 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly948 : T[K]; -}; -type DeepRequired948 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired948 : T[K]; +type Path_0948 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0948}` }[keyof T & string] : never; +type EP_0948 = Path_0948; + +type Val_0948 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0948 } + : T[K] extends object ? { t: 'o'; props: Val_0948 } + : { t: 'u' }; }; -type FR948 = DeepReadonly948>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion948 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha948 = Extract; -type ExcludeZulu948 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA948 { width: number; height: number; depth: number } -interface ShapeB948 { color: string; opacity: number; blend: string } -interface ShapeC948 { x: number; y: number; z: number; w: number } -interface ShapeD948 { label: string; title: string; summary: string } - -type Combined948 = ShapeA948 & ShapeB948 & ShapeC948 & ShapeD948; -type OptionalAll948 = { [K in keyof Combined948]?: Combined948[K] }; -type RequiredAll948 = { [K in keyof Combined948]-?: Combined948[K] }; -type ReadonlyAll948 = { readonly [K in keyof Combined948]: Combined948[K] }; -type NullableAll948 = { [K in keyof Combined948]: Combined948[K] | null }; +type EV_0948 = Val_0948; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString948 = T extends string ? true : false; -type IsNumber948 = T extends number ? true : false; -type TypeName948 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames948 = { - [K in keyof BigRecord948]: TypeName948; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb948 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource948 = "user" | "post" | "comment" | "tag" | "category"; -type Action948 = `${Verb948}_${Resource948}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise948 = T extends Promise ? UnwrapPromise948 : T; -type UnwrapArray948 = T extends (infer U)[] ? UnwrapArray948 : T; -type Head948 = T extends [infer H, ...infer _] ? H : never; -type Tail948 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation948 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation948>] - : never; +interface Registry_09_48 { + entities: Map; + validators: EV_0948; + paths: Set; + merged: DeepMerge_0948; +} -type SmallUnion948 = "a" | "b" | "c" | "d"; -type AllPerms948 = Permutation948; +type CK_0948 = `p09.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig948, - Flat948, - FR948, - BigUnion948, - ExtractAlpha948, - ExcludeZulu948, - OptionalAll948, - RequiredAll948, - ReadonlyAll948, - NullableAll948, - TypeNames948, - Action948, - AllPerms948, -}; +export type { Entity_09_48, Registry_09_48, CK_0948, EP_0948, EV_0948, DeepMerge_0948 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts index 1d035d36..7f59a0fe 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-49.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-49 (seed 949) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-49 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0949 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0949 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord949 { - a949: { x: number; y: string; z: boolean }; - b949: { p: string[]; q: Record }; - c949: { nested: { deep: { deeper: { deepest: string } } } }; - d949: number; - e949: string; - f949: boolean; - g949: null; - h949: undefined; - i949: bigint; - j949: symbol; +interface Entity_09_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_49 | null; children: Entity_09_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x0949: number; y0949: string; z0949: boolean }; } -type PartialBig949 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten949 = T extends Array ? Flatten949 : T; -type Nested949 = number[][][][][][][][][][]; -type Flat949 = Flatten949; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly949 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly949 : T[K]; -}; -type DeepRequired949 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired949 : T[K]; +type Path_0949 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0949}` }[keyof T & string] : never; +type EP_0949 = Path_0949; + +type Val_0949 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0949 } + : T[K] extends object ? { t: 'o'; props: Val_0949 } + : { t: 'u' }; }; -type FR949 = DeepReadonly949>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion949 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha949 = Extract; -type ExcludeZulu949 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA949 { width: number; height: number; depth: number } -interface ShapeB949 { color: string; opacity: number; blend: string } -interface ShapeC949 { x: number; y: number; z: number; w: number } -interface ShapeD949 { label: string; title: string; summary: string } - -type Combined949 = ShapeA949 & ShapeB949 & ShapeC949 & ShapeD949; -type OptionalAll949 = { [K in keyof Combined949]?: Combined949[K] }; -type RequiredAll949 = { [K in keyof Combined949]-?: Combined949[K] }; -type ReadonlyAll949 = { readonly [K in keyof Combined949]: Combined949[K] }; -type NullableAll949 = { [K in keyof Combined949]: Combined949[K] | null }; +type EV_0949 = Val_0949; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString949 = T extends string ? true : false; -type IsNumber949 = T extends number ? true : false; -type TypeName949 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames949 = { - [K in keyof BigRecord949]: TypeName949; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb949 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource949 = "user" | "post" | "comment" | "tag" | "category"; -type Action949 = `${Verb949}_${Resource949}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise949 = T extends Promise ? UnwrapPromise949 : T; -type UnwrapArray949 = T extends (infer U)[] ? UnwrapArray949 : T; -type Head949 = T extends [infer H, ...infer _] ? H : never; -type Tail949 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation949 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation949>] - : never; +interface Registry_09_49 { + entities: Map; + validators: EV_0949; + paths: Set; + merged: DeepMerge_0949; +} -type SmallUnion949 = "a" | "b" | "c" | "d"; -type AllPerms949 = Permutation949; +type CK_0949 = `p09.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig949, - Flat949, - FR949, - BigUnion949, - ExtractAlpha949, - ExcludeZulu949, - OptionalAll949, - RequiredAll949, - ReadonlyAll949, - NullableAll949, - TypeNames949, - Action949, - AllPerms949, -}; +export type { Entity_09_49, Registry_09_49, CK_0949, EP_0949, EV_0949, DeepMerge_0949 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts index 2991f534..7689fd79 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-09/types-50.ts @@ -1,125 +1,50 @@ -// pkg-09 / types-50 (seed 950) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-09/types-50 - heavy interconnected types + +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; +import type { Entity_6_01, Registry_6_01 } from '../pkg-06/types-01'; +import type { Entity_6_10, Registry_6_10 } from '../pkg-06/types-10'; +import type { Entity_6_20, Registry_6_20 } from '../pkg-06/types-20'; + +type DeepMerge_0950 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_0950 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord950 { - a950: { x: number; y: string; z: boolean }; - b950: { p: string[]; q: Record }; - c950: { nested: { deep: { deeper: { deepest: string } } } }; - d950: number; - e950: string; - f950: boolean; - g950: null; - h950: undefined; - i950: bigint; - j950: symbol; +interface Entity_09_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_09_50 | null; children: Entity_09_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x0950: number; y0950: string; z0950: boolean }; } -type PartialBig950 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten950 = T extends Array ? Flatten950 : T; -type Nested950 = number[][][][][][][][][][]; -type Flat950 = Flatten950; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly950 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly950 : T[K]; -}; -type DeepRequired950 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired950 : T[K]; +type Path_0950 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_0950}` }[keyof T & string] : never; +type EP_0950 = Path_0950; + +type Val_0950 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_0950 } + : T[K] extends object ? { t: 'o'; props: Val_0950 } + : { t: 'u' }; }; -type FR950 = DeepReadonly950>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion950 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha950 = Extract; -type ExcludeZulu950 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA950 { width: number; height: number; depth: number } -interface ShapeB950 { color: string; opacity: number; blend: string } -interface ShapeC950 { x: number; y: number; z: number; w: number } -interface ShapeD950 { label: string; title: string; summary: string } - -type Combined950 = ShapeA950 & ShapeB950 & ShapeC950 & ShapeD950; -type OptionalAll950 = { [K in keyof Combined950]?: Combined950[K] }; -type RequiredAll950 = { [K in keyof Combined950]-?: Combined950[K] }; -type ReadonlyAll950 = { readonly [K in keyof Combined950]: Combined950[K] }; -type NullableAll950 = { [K in keyof Combined950]: Combined950[K] | null }; +type EV_0950 = Val_0950; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString950 = T extends string ? true : false; -type IsNumber950 = T extends number ? true : false; -type TypeName950 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames950 = { - [K in keyof BigRecord950]: TypeName950; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb950 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource950 = "user" | "post" | "comment" | "tag" | "category"; -type Action950 = `${Verb950}_${Resource950}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise950 = T extends Promise ? UnwrapPromise950 : T; -type UnwrapArray950 = T extends (infer U)[] ? UnwrapArray950 : T; -type Head950 = T extends [infer H, ...infer _] ? H : never; -type Tail950 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation950 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation950>] - : never; +interface Registry_09_50 { + entities: Map; + validators: EV_0950; + paths: Set; + merged: DeepMerge_0950; +} -type SmallUnion950 = "a" | "b" | "c" | "d"; -type AllPerms950 = Permutation950; +type CK_0950 = `p09.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig950, - Flat950, - FR950, - BigUnion950, - ExtractAlpha950, - ExcludeZulu950, - OptionalAll950, - RequiredAll950, - ReadonlyAll950, - NullableAll950, - TypeNames950, - Action950, - AllPerms950, -}; +export type { Entity_09_50, Registry_09_50, CK_0950, EP_0950, EV_0950, DeepMerge_0950 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json index 53faffa7..d3cca803 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/tsconfig.json @@ -1,14 +1,13 @@ { "compilerOptions": { + "composite": true, + "strict": true, "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, "declaration": true, - "outDir": "out" + "outDir": "dist", + "rootDir": "." }, - "include": ["./**/*.ts"] + "include": ["*.ts"] } diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts index 8bc59b4d..ed69f7a4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-01.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-01 (seed 1001) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-01 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1001 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1001 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1001 { - a1001: { x: number; y: string; z: boolean }; - b1001: { p: string[]; q: Record }; - c1001: { nested: { deep: { deeper: { deepest: string } } } }; - d1001: number; - e1001: string; - f1001: boolean; - g1001: null; - h1001: undefined; - i1001: bigint; - j1001: symbol; +interface Entity_10_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_01 | null; children: Entity_10_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1001: number; y1001: string; z1001: boolean }; } -type PartialBig1001 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1001 = T extends Array ? Flatten1001 : T; -type Nested1001 = number[][][][][][][][][][]; -type Flat1001 = Flatten1001; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1001 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1001 : T[K]; -}; -type DeepRequired1001 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1001 : T[K]; +type Path_1001 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1001}` }[keyof T & string] : never; +type EP_1001 = Path_1001; + +type Val_1001 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1001 } + : T[K] extends object ? { t: 'o'; props: Val_1001 } + : { t: 'u' }; }; -type FR1001 = DeepReadonly1001>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1001 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1001 = Extract; -type ExcludeZulu1001 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1001 { width: number; height: number; depth: number } -interface ShapeB1001 { color: string; opacity: number; blend: string } -interface ShapeC1001 { x: number; y: number; z: number; w: number } -interface ShapeD1001 { label: string; title: string; summary: string } - -type Combined1001 = ShapeA1001 & ShapeB1001 & ShapeC1001 & ShapeD1001; -type OptionalAll1001 = { [K in keyof Combined1001]?: Combined1001[K] }; -type RequiredAll1001 = { [K in keyof Combined1001]-?: Combined1001[K] }; -type ReadonlyAll1001 = { readonly [K in keyof Combined1001]: Combined1001[K] }; -type NullableAll1001 = { [K in keyof Combined1001]: Combined1001[K] | null }; +type EV_1001 = Val_1001; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1001 = T extends string ? true : false; -type IsNumber1001 = T extends number ? true : false; -type TypeName1001 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1001 = { - [K in keyof BigRecord1001]: TypeName1001; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1001 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1001 = "user" | "post" | "comment" | "tag" | "category"; -type Action1001 = `${Verb1001}_${Resource1001}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1001 = T extends Promise ? UnwrapPromise1001 : T; -type UnwrapArray1001 = T extends (infer U)[] ? UnwrapArray1001 : T; -type Head1001 = T extends [infer H, ...infer _] ? H : never; -type Tail1001 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1001 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1001>] - : never; +interface Registry_10_01 { + entities: Map; + validators: EV_1001; + paths: Set; + merged: DeepMerge_1001; +} -type SmallUnion1001 = "a" | "b" | "c" | "d"; -type AllPerms1001 = Permutation1001; +type CK_1001 = `p10.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1001, - Flat1001, - FR1001, - BigUnion1001, - ExtractAlpha1001, - ExcludeZulu1001, - OptionalAll1001, - RequiredAll1001, - ReadonlyAll1001, - NullableAll1001, - TypeNames1001, - Action1001, - AllPerms1001, -}; +export type { Entity_10_01, Registry_10_01, CK_1001, EP_1001, EV_1001, DeepMerge_1001 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts index a91bed66..197a9eae 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-02.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-02 (seed 1002) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-02 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1002 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1002 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1002 { - a1002: { x: number; y: string; z: boolean }; - b1002: { p: string[]; q: Record }; - c1002: { nested: { deep: { deeper: { deepest: string } } } }; - d1002: number; - e1002: string; - f1002: boolean; - g1002: null; - h1002: undefined; - i1002: bigint; - j1002: symbol; +interface Entity_10_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_02 | null; children: Entity_10_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1002: number; y1002: string; z1002: boolean }; } -type PartialBig1002 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1002 = T extends Array ? Flatten1002 : T; -type Nested1002 = number[][][][][][][][][][]; -type Flat1002 = Flatten1002; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1002 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1002 : T[K]; -}; -type DeepRequired1002 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1002 : T[K]; +type Path_1002 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1002}` }[keyof T & string] : never; +type EP_1002 = Path_1002; + +type Val_1002 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1002 } + : T[K] extends object ? { t: 'o'; props: Val_1002 } + : { t: 'u' }; }; -type FR1002 = DeepReadonly1002>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1002 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1002 = Extract; -type ExcludeZulu1002 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1002 { width: number; height: number; depth: number } -interface ShapeB1002 { color: string; opacity: number; blend: string } -interface ShapeC1002 { x: number; y: number; z: number; w: number } -interface ShapeD1002 { label: string; title: string; summary: string } - -type Combined1002 = ShapeA1002 & ShapeB1002 & ShapeC1002 & ShapeD1002; -type OptionalAll1002 = { [K in keyof Combined1002]?: Combined1002[K] }; -type RequiredAll1002 = { [K in keyof Combined1002]-?: Combined1002[K] }; -type ReadonlyAll1002 = { readonly [K in keyof Combined1002]: Combined1002[K] }; -type NullableAll1002 = { [K in keyof Combined1002]: Combined1002[K] | null }; +type EV_1002 = Val_1002; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1002 = T extends string ? true : false; -type IsNumber1002 = T extends number ? true : false; -type TypeName1002 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1002 = { - [K in keyof BigRecord1002]: TypeName1002; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1002 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1002 = "user" | "post" | "comment" | "tag" | "category"; -type Action1002 = `${Verb1002}_${Resource1002}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1002 = T extends Promise ? UnwrapPromise1002 : T; -type UnwrapArray1002 = T extends (infer U)[] ? UnwrapArray1002 : T; -type Head1002 = T extends [infer H, ...infer _] ? H : never; -type Tail1002 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1002 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1002>] - : never; +interface Registry_10_02 { + entities: Map; + validators: EV_1002; + paths: Set; + merged: DeepMerge_1002; +} -type SmallUnion1002 = "a" | "b" | "c" | "d"; -type AllPerms1002 = Permutation1002; +type CK_1002 = `p10.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1002, - Flat1002, - FR1002, - BigUnion1002, - ExtractAlpha1002, - ExcludeZulu1002, - OptionalAll1002, - RequiredAll1002, - ReadonlyAll1002, - NullableAll1002, - TypeNames1002, - Action1002, - AllPerms1002, -}; +export type { Entity_10_02, Registry_10_02, CK_1002, EP_1002, EV_1002, DeepMerge_1002 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts index 8d47fc79..b3990fb6 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-03.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-03 (seed 1003) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-03 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1003 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1003 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1003 { - a1003: { x: number; y: string; z: boolean }; - b1003: { p: string[]; q: Record }; - c1003: { nested: { deep: { deeper: { deepest: string } } } }; - d1003: number; - e1003: string; - f1003: boolean; - g1003: null; - h1003: undefined; - i1003: bigint; - j1003: symbol; +interface Entity_10_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_03 | null; children: Entity_10_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1003: number; y1003: string; z1003: boolean }; } -type PartialBig1003 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1003 = T extends Array ? Flatten1003 : T; -type Nested1003 = number[][][][][][][][][][]; -type Flat1003 = Flatten1003; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1003 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1003 : T[K]; -}; -type DeepRequired1003 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1003 : T[K]; +type Path_1003 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1003}` }[keyof T & string] : never; +type EP_1003 = Path_1003; + +type Val_1003 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1003 } + : T[K] extends object ? { t: 'o'; props: Val_1003 } + : { t: 'u' }; }; -type FR1003 = DeepReadonly1003>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1003 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1003 = Extract; -type ExcludeZulu1003 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1003 { width: number; height: number; depth: number } -interface ShapeB1003 { color: string; opacity: number; blend: string } -interface ShapeC1003 { x: number; y: number; z: number; w: number } -interface ShapeD1003 { label: string; title: string; summary: string } - -type Combined1003 = ShapeA1003 & ShapeB1003 & ShapeC1003 & ShapeD1003; -type OptionalAll1003 = { [K in keyof Combined1003]?: Combined1003[K] }; -type RequiredAll1003 = { [K in keyof Combined1003]-?: Combined1003[K] }; -type ReadonlyAll1003 = { readonly [K in keyof Combined1003]: Combined1003[K] }; -type NullableAll1003 = { [K in keyof Combined1003]: Combined1003[K] | null }; +type EV_1003 = Val_1003; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1003 = T extends string ? true : false; -type IsNumber1003 = T extends number ? true : false; -type TypeName1003 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1003 = { - [K in keyof BigRecord1003]: TypeName1003; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1003 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1003 = "user" | "post" | "comment" | "tag" | "category"; -type Action1003 = `${Verb1003}_${Resource1003}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1003 = T extends Promise ? UnwrapPromise1003 : T; -type UnwrapArray1003 = T extends (infer U)[] ? UnwrapArray1003 : T; -type Head1003 = T extends [infer H, ...infer _] ? H : never; -type Tail1003 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1003 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1003>] - : never; +interface Registry_10_03 { + entities: Map; + validators: EV_1003; + paths: Set; + merged: DeepMerge_1003; +} -type SmallUnion1003 = "a" | "b" | "c" | "d"; -type AllPerms1003 = Permutation1003; +type CK_1003 = `p10.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1003, - Flat1003, - FR1003, - BigUnion1003, - ExtractAlpha1003, - ExcludeZulu1003, - OptionalAll1003, - RequiredAll1003, - ReadonlyAll1003, - NullableAll1003, - TypeNames1003, - Action1003, - AllPerms1003, -}; +export type { Entity_10_03, Registry_10_03, CK_1003, EP_1003, EV_1003, DeepMerge_1003 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts index 84f6d65d..ce09d999 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-04.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-04 (seed 1004) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-04 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1004 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1004 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1004 { - a1004: { x: number; y: string; z: boolean }; - b1004: { p: string[]; q: Record }; - c1004: { nested: { deep: { deeper: { deepest: string } } } }; - d1004: number; - e1004: string; - f1004: boolean; - g1004: null; - h1004: undefined; - i1004: bigint; - j1004: symbol; +interface Entity_10_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_04 | null; children: Entity_10_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1004: number; y1004: string; z1004: boolean }; } -type PartialBig1004 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1004 = T extends Array ? Flatten1004 : T; -type Nested1004 = number[][][][][][][][][][]; -type Flat1004 = Flatten1004; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1004 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1004 : T[K]; -}; -type DeepRequired1004 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1004 : T[K]; +type Path_1004 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1004}` }[keyof T & string] : never; +type EP_1004 = Path_1004; + +type Val_1004 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1004 } + : T[K] extends object ? { t: 'o'; props: Val_1004 } + : { t: 'u' }; }; -type FR1004 = DeepReadonly1004>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1004 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1004 = Extract; -type ExcludeZulu1004 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1004 { width: number; height: number; depth: number } -interface ShapeB1004 { color: string; opacity: number; blend: string } -interface ShapeC1004 { x: number; y: number; z: number; w: number } -interface ShapeD1004 { label: string; title: string; summary: string } - -type Combined1004 = ShapeA1004 & ShapeB1004 & ShapeC1004 & ShapeD1004; -type OptionalAll1004 = { [K in keyof Combined1004]?: Combined1004[K] }; -type RequiredAll1004 = { [K in keyof Combined1004]-?: Combined1004[K] }; -type ReadonlyAll1004 = { readonly [K in keyof Combined1004]: Combined1004[K] }; -type NullableAll1004 = { [K in keyof Combined1004]: Combined1004[K] | null }; +type EV_1004 = Val_1004; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1004 = T extends string ? true : false; -type IsNumber1004 = T extends number ? true : false; -type TypeName1004 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1004 = { - [K in keyof BigRecord1004]: TypeName1004; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1004 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1004 = "user" | "post" | "comment" | "tag" | "category"; -type Action1004 = `${Verb1004}_${Resource1004}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1004 = T extends Promise ? UnwrapPromise1004 : T; -type UnwrapArray1004 = T extends (infer U)[] ? UnwrapArray1004 : T; -type Head1004 = T extends [infer H, ...infer _] ? H : never; -type Tail1004 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1004 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1004>] - : never; +interface Registry_10_04 { + entities: Map; + validators: EV_1004; + paths: Set; + merged: DeepMerge_1004; +} -type SmallUnion1004 = "a" | "b" | "c" | "d"; -type AllPerms1004 = Permutation1004; +type CK_1004 = `p10.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1004, - Flat1004, - FR1004, - BigUnion1004, - ExtractAlpha1004, - ExcludeZulu1004, - OptionalAll1004, - RequiredAll1004, - ReadonlyAll1004, - NullableAll1004, - TypeNames1004, - Action1004, - AllPerms1004, -}; +export type { Entity_10_04, Registry_10_04, CK_1004, EP_1004, EV_1004, DeepMerge_1004 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts index cfa8d630..ffabeecc 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-05.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-05 (seed 1005) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-05 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1005 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1005 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1005 { - a1005: { x: number; y: string; z: boolean }; - b1005: { p: string[]; q: Record }; - c1005: { nested: { deep: { deeper: { deepest: string } } } }; - d1005: number; - e1005: string; - f1005: boolean; - g1005: null; - h1005: undefined; - i1005: bigint; - j1005: symbol; +interface Entity_10_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_05 | null; children: Entity_10_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1005: number; y1005: string; z1005: boolean }; } -type PartialBig1005 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1005 = T extends Array ? Flatten1005 : T; -type Nested1005 = number[][][][][][][][][][]; -type Flat1005 = Flatten1005; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1005 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1005 : T[K]; -}; -type DeepRequired1005 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1005 : T[K]; +type Path_1005 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1005}` }[keyof T & string] : never; +type EP_1005 = Path_1005; + +type Val_1005 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1005 } + : T[K] extends object ? { t: 'o'; props: Val_1005 } + : { t: 'u' }; }; -type FR1005 = DeepReadonly1005>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1005 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1005 = Extract; -type ExcludeZulu1005 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1005 { width: number; height: number; depth: number } -interface ShapeB1005 { color: string; opacity: number; blend: string } -interface ShapeC1005 { x: number; y: number; z: number; w: number } -interface ShapeD1005 { label: string; title: string; summary: string } - -type Combined1005 = ShapeA1005 & ShapeB1005 & ShapeC1005 & ShapeD1005; -type OptionalAll1005 = { [K in keyof Combined1005]?: Combined1005[K] }; -type RequiredAll1005 = { [K in keyof Combined1005]-?: Combined1005[K] }; -type ReadonlyAll1005 = { readonly [K in keyof Combined1005]: Combined1005[K] }; -type NullableAll1005 = { [K in keyof Combined1005]: Combined1005[K] | null }; +type EV_1005 = Val_1005; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1005 = T extends string ? true : false; -type IsNumber1005 = T extends number ? true : false; -type TypeName1005 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1005 = { - [K in keyof BigRecord1005]: TypeName1005; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1005 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1005 = "user" | "post" | "comment" | "tag" | "category"; -type Action1005 = `${Verb1005}_${Resource1005}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1005 = T extends Promise ? UnwrapPromise1005 : T; -type UnwrapArray1005 = T extends (infer U)[] ? UnwrapArray1005 : T; -type Head1005 = T extends [infer H, ...infer _] ? H : never; -type Tail1005 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1005 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1005>] - : never; +interface Registry_10_05 { + entities: Map; + validators: EV_1005; + paths: Set; + merged: DeepMerge_1005; +} -type SmallUnion1005 = "a" | "b" | "c" | "d"; -type AllPerms1005 = Permutation1005; +type CK_1005 = `p10.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1005, - Flat1005, - FR1005, - BigUnion1005, - ExtractAlpha1005, - ExcludeZulu1005, - OptionalAll1005, - RequiredAll1005, - ReadonlyAll1005, - NullableAll1005, - TypeNames1005, - Action1005, - AllPerms1005, -}; +export type { Entity_10_05, Registry_10_05, CK_1005, EP_1005, EV_1005, DeepMerge_1005 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts index 1e9d9da7..7f0f2707 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-06.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-06 (seed 1006) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-06 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1006 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1006 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1006 { - a1006: { x: number; y: string; z: boolean }; - b1006: { p: string[]; q: Record }; - c1006: { nested: { deep: { deeper: { deepest: string } } } }; - d1006: number; - e1006: string; - f1006: boolean; - g1006: null; - h1006: undefined; - i1006: bigint; - j1006: symbol; +interface Entity_10_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_06 | null; children: Entity_10_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1006: number; y1006: string; z1006: boolean }; } -type PartialBig1006 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1006 = T extends Array ? Flatten1006 : T; -type Nested1006 = number[][][][][][][][][][]; -type Flat1006 = Flatten1006; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1006 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1006 : T[K]; -}; -type DeepRequired1006 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1006 : T[K]; +type Path_1006 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1006}` }[keyof T & string] : never; +type EP_1006 = Path_1006; + +type Val_1006 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1006 } + : T[K] extends object ? { t: 'o'; props: Val_1006 } + : { t: 'u' }; }; -type FR1006 = DeepReadonly1006>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1006 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1006 = Extract; -type ExcludeZulu1006 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1006 { width: number; height: number; depth: number } -interface ShapeB1006 { color: string; opacity: number; blend: string } -interface ShapeC1006 { x: number; y: number; z: number; w: number } -interface ShapeD1006 { label: string; title: string; summary: string } - -type Combined1006 = ShapeA1006 & ShapeB1006 & ShapeC1006 & ShapeD1006; -type OptionalAll1006 = { [K in keyof Combined1006]?: Combined1006[K] }; -type RequiredAll1006 = { [K in keyof Combined1006]-?: Combined1006[K] }; -type ReadonlyAll1006 = { readonly [K in keyof Combined1006]: Combined1006[K] }; -type NullableAll1006 = { [K in keyof Combined1006]: Combined1006[K] | null }; +type EV_1006 = Val_1006; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1006 = T extends string ? true : false; -type IsNumber1006 = T extends number ? true : false; -type TypeName1006 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1006 = { - [K in keyof BigRecord1006]: TypeName1006; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1006 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1006 = "user" | "post" | "comment" | "tag" | "category"; -type Action1006 = `${Verb1006}_${Resource1006}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1006 = T extends Promise ? UnwrapPromise1006 : T; -type UnwrapArray1006 = T extends (infer U)[] ? UnwrapArray1006 : T; -type Head1006 = T extends [infer H, ...infer _] ? H : never; -type Tail1006 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1006 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1006>] - : never; +interface Registry_10_06 { + entities: Map; + validators: EV_1006; + paths: Set; + merged: DeepMerge_1006; +} -type SmallUnion1006 = "a" | "b" | "c" | "d"; -type AllPerms1006 = Permutation1006; +type CK_1006 = `p10.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1006, - Flat1006, - FR1006, - BigUnion1006, - ExtractAlpha1006, - ExcludeZulu1006, - OptionalAll1006, - RequiredAll1006, - ReadonlyAll1006, - NullableAll1006, - TypeNames1006, - Action1006, - AllPerms1006, -}; +export type { Entity_10_06, Registry_10_06, CK_1006, EP_1006, EV_1006, DeepMerge_1006 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts index 3cf29bf4..04b6f650 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-07.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-07 (seed 1007) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-07 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1007 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1007 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1007 { - a1007: { x: number; y: string; z: boolean }; - b1007: { p: string[]; q: Record }; - c1007: { nested: { deep: { deeper: { deepest: string } } } }; - d1007: number; - e1007: string; - f1007: boolean; - g1007: null; - h1007: undefined; - i1007: bigint; - j1007: symbol; +interface Entity_10_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_07 | null; children: Entity_10_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1007: number; y1007: string; z1007: boolean }; } -type PartialBig1007 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1007 = T extends Array ? Flatten1007 : T; -type Nested1007 = number[][][][][][][][][][]; -type Flat1007 = Flatten1007; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1007 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1007 : T[K]; -}; -type DeepRequired1007 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1007 : T[K]; +type Path_1007 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1007}` }[keyof T & string] : never; +type EP_1007 = Path_1007; + +type Val_1007 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1007 } + : T[K] extends object ? { t: 'o'; props: Val_1007 } + : { t: 'u' }; }; -type FR1007 = DeepReadonly1007>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1007 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1007 = Extract; -type ExcludeZulu1007 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1007 { width: number; height: number; depth: number } -interface ShapeB1007 { color: string; opacity: number; blend: string } -interface ShapeC1007 { x: number; y: number; z: number; w: number } -interface ShapeD1007 { label: string; title: string; summary: string } - -type Combined1007 = ShapeA1007 & ShapeB1007 & ShapeC1007 & ShapeD1007; -type OptionalAll1007 = { [K in keyof Combined1007]?: Combined1007[K] }; -type RequiredAll1007 = { [K in keyof Combined1007]-?: Combined1007[K] }; -type ReadonlyAll1007 = { readonly [K in keyof Combined1007]: Combined1007[K] }; -type NullableAll1007 = { [K in keyof Combined1007]: Combined1007[K] | null }; +type EV_1007 = Val_1007; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1007 = T extends string ? true : false; -type IsNumber1007 = T extends number ? true : false; -type TypeName1007 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1007 = { - [K in keyof BigRecord1007]: TypeName1007; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1007 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1007 = "user" | "post" | "comment" | "tag" | "category"; -type Action1007 = `${Verb1007}_${Resource1007}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1007 = T extends Promise ? UnwrapPromise1007 : T; -type UnwrapArray1007 = T extends (infer U)[] ? UnwrapArray1007 : T; -type Head1007 = T extends [infer H, ...infer _] ? H : never; -type Tail1007 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1007 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1007>] - : never; +interface Registry_10_07 { + entities: Map; + validators: EV_1007; + paths: Set; + merged: DeepMerge_1007; +} -type SmallUnion1007 = "a" | "b" | "c" | "d"; -type AllPerms1007 = Permutation1007; +type CK_1007 = `p10.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1007, - Flat1007, - FR1007, - BigUnion1007, - ExtractAlpha1007, - ExcludeZulu1007, - OptionalAll1007, - RequiredAll1007, - ReadonlyAll1007, - NullableAll1007, - TypeNames1007, - Action1007, - AllPerms1007, -}; +export type { Entity_10_07, Registry_10_07, CK_1007, EP_1007, EV_1007, DeepMerge_1007 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts index 48a75681..7f54cb5b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-08.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-08 (seed 1008) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-08 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1008 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1008 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1008 { - a1008: { x: number; y: string; z: boolean }; - b1008: { p: string[]; q: Record }; - c1008: { nested: { deep: { deeper: { deepest: string } } } }; - d1008: number; - e1008: string; - f1008: boolean; - g1008: null; - h1008: undefined; - i1008: bigint; - j1008: symbol; +interface Entity_10_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_08 | null; children: Entity_10_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1008: number; y1008: string; z1008: boolean }; } -type PartialBig1008 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1008 = T extends Array ? Flatten1008 : T; -type Nested1008 = number[][][][][][][][][][]; -type Flat1008 = Flatten1008; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1008 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1008 : T[K]; -}; -type DeepRequired1008 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1008 : T[K]; +type Path_1008 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1008}` }[keyof T & string] : never; +type EP_1008 = Path_1008; + +type Val_1008 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1008 } + : T[K] extends object ? { t: 'o'; props: Val_1008 } + : { t: 'u' }; }; -type FR1008 = DeepReadonly1008>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1008 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1008 = Extract; -type ExcludeZulu1008 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1008 { width: number; height: number; depth: number } -interface ShapeB1008 { color: string; opacity: number; blend: string } -interface ShapeC1008 { x: number; y: number; z: number; w: number } -interface ShapeD1008 { label: string; title: string; summary: string } - -type Combined1008 = ShapeA1008 & ShapeB1008 & ShapeC1008 & ShapeD1008; -type OptionalAll1008 = { [K in keyof Combined1008]?: Combined1008[K] }; -type RequiredAll1008 = { [K in keyof Combined1008]-?: Combined1008[K] }; -type ReadonlyAll1008 = { readonly [K in keyof Combined1008]: Combined1008[K] }; -type NullableAll1008 = { [K in keyof Combined1008]: Combined1008[K] | null }; +type EV_1008 = Val_1008; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1008 = T extends string ? true : false; -type IsNumber1008 = T extends number ? true : false; -type TypeName1008 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1008 = { - [K in keyof BigRecord1008]: TypeName1008; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1008 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1008 = "user" | "post" | "comment" | "tag" | "category"; -type Action1008 = `${Verb1008}_${Resource1008}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1008 = T extends Promise ? UnwrapPromise1008 : T; -type UnwrapArray1008 = T extends (infer U)[] ? UnwrapArray1008 : T; -type Head1008 = T extends [infer H, ...infer _] ? H : never; -type Tail1008 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1008 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1008>] - : never; +interface Registry_10_08 { + entities: Map; + validators: EV_1008; + paths: Set; + merged: DeepMerge_1008; +} -type SmallUnion1008 = "a" | "b" | "c" | "d"; -type AllPerms1008 = Permutation1008; +type CK_1008 = `p10.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1008, - Flat1008, - FR1008, - BigUnion1008, - ExtractAlpha1008, - ExcludeZulu1008, - OptionalAll1008, - RequiredAll1008, - ReadonlyAll1008, - NullableAll1008, - TypeNames1008, - Action1008, - AllPerms1008, -}; +export type { Entity_10_08, Registry_10_08, CK_1008, EP_1008, EV_1008, DeepMerge_1008 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts index 263cd744..c260765b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-09.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-09 (seed 1009) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-09 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1009 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1009 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1009 { - a1009: { x: number; y: string; z: boolean }; - b1009: { p: string[]; q: Record }; - c1009: { nested: { deep: { deeper: { deepest: string } } } }; - d1009: number; - e1009: string; - f1009: boolean; - g1009: null; - h1009: undefined; - i1009: bigint; - j1009: symbol; +interface Entity_10_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_09 | null; children: Entity_10_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1009: number; y1009: string; z1009: boolean }; } -type PartialBig1009 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1009 = T extends Array ? Flatten1009 : T; -type Nested1009 = number[][][][][][][][][][]; -type Flat1009 = Flatten1009; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1009 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1009 : T[K]; -}; -type DeepRequired1009 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1009 : T[K]; +type Path_1009 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1009}` }[keyof T & string] : never; +type EP_1009 = Path_1009; + +type Val_1009 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1009 } + : T[K] extends object ? { t: 'o'; props: Val_1009 } + : { t: 'u' }; }; -type FR1009 = DeepReadonly1009>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1009 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1009 = Extract; -type ExcludeZulu1009 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1009 { width: number; height: number; depth: number } -interface ShapeB1009 { color: string; opacity: number; blend: string } -interface ShapeC1009 { x: number; y: number; z: number; w: number } -interface ShapeD1009 { label: string; title: string; summary: string } - -type Combined1009 = ShapeA1009 & ShapeB1009 & ShapeC1009 & ShapeD1009; -type OptionalAll1009 = { [K in keyof Combined1009]?: Combined1009[K] }; -type RequiredAll1009 = { [K in keyof Combined1009]-?: Combined1009[K] }; -type ReadonlyAll1009 = { readonly [K in keyof Combined1009]: Combined1009[K] }; -type NullableAll1009 = { [K in keyof Combined1009]: Combined1009[K] | null }; +type EV_1009 = Val_1009; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1009 = T extends string ? true : false; -type IsNumber1009 = T extends number ? true : false; -type TypeName1009 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1009 = { - [K in keyof BigRecord1009]: TypeName1009; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1009 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1009 = "user" | "post" | "comment" | "tag" | "category"; -type Action1009 = `${Verb1009}_${Resource1009}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1009 = T extends Promise ? UnwrapPromise1009 : T; -type UnwrapArray1009 = T extends (infer U)[] ? UnwrapArray1009 : T; -type Head1009 = T extends [infer H, ...infer _] ? H : never; -type Tail1009 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1009 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1009>] - : never; +interface Registry_10_09 { + entities: Map; + validators: EV_1009; + paths: Set; + merged: DeepMerge_1009; +} -type SmallUnion1009 = "a" | "b" | "c" | "d"; -type AllPerms1009 = Permutation1009; +type CK_1009 = `p10.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1009, - Flat1009, - FR1009, - BigUnion1009, - ExtractAlpha1009, - ExcludeZulu1009, - OptionalAll1009, - RequiredAll1009, - ReadonlyAll1009, - NullableAll1009, - TypeNames1009, - Action1009, - AllPerms1009, -}; +export type { Entity_10_09, Registry_10_09, CK_1009, EP_1009, EV_1009, DeepMerge_1009 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts index b8638ceb..0881a9f3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-10.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-10 (seed 1010) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-10 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1010 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1010 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1010 { - a1010: { x: number; y: string; z: boolean }; - b1010: { p: string[]; q: Record }; - c1010: { nested: { deep: { deeper: { deepest: string } } } }; - d1010: number; - e1010: string; - f1010: boolean; - g1010: null; - h1010: undefined; - i1010: bigint; - j1010: symbol; +interface Entity_10_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_10 | null; children: Entity_10_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1010: number; y1010: string; z1010: boolean }; } -type PartialBig1010 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1010 = T extends Array ? Flatten1010 : T; -type Nested1010 = number[][][][][][][][][][]; -type Flat1010 = Flatten1010; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1010 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1010 : T[K]; -}; -type DeepRequired1010 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1010 : T[K]; +type Path_1010 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1010}` }[keyof T & string] : never; +type EP_1010 = Path_1010; + +type Val_1010 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1010 } + : T[K] extends object ? { t: 'o'; props: Val_1010 } + : { t: 'u' }; }; -type FR1010 = DeepReadonly1010>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1010 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1010 = Extract; -type ExcludeZulu1010 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1010 { width: number; height: number; depth: number } -interface ShapeB1010 { color: string; opacity: number; blend: string } -interface ShapeC1010 { x: number; y: number; z: number; w: number } -interface ShapeD1010 { label: string; title: string; summary: string } - -type Combined1010 = ShapeA1010 & ShapeB1010 & ShapeC1010 & ShapeD1010; -type OptionalAll1010 = { [K in keyof Combined1010]?: Combined1010[K] }; -type RequiredAll1010 = { [K in keyof Combined1010]-?: Combined1010[K] }; -type ReadonlyAll1010 = { readonly [K in keyof Combined1010]: Combined1010[K] }; -type NullableAll1010 = { [K in keyof Combined1010]: Combined1010[K] | null }; +type EV_1010 = Val_1010; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1010 = T extends string ? true : false; -type IsNumber1010 = T extends number ? true : false; -type TypeName1010 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1010 = { - [K in keyof BigRecord1010]: TypeName1010; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1010 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1010 = "user" | "post" | "comment" | "tag" | "category"; -type Action1010 = `${Verb1010}_${Resource1010}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1010 = T extends Promise ? UnwrapPromise1010 : T; -type UnwrapArray1010 = T extends (infer U)[] ? UnwrapArray1010 : T; -type Head1010 = T extends [infer H, ...infer _] ? H : never; -type Tail1010 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1010 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1010>] - : never; +interface Registry_10_10 { + entities: Map; + validators: EV_1010; + paths: Set; + merged: DeepMerge_1010; +} -type SmallUnion1010 = "a" | "b" | "c" | "d"; -type AllPerms1010 = Permutation1010; +type CK_1010 = `p10.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1010, - Flat1010, - FR1010, - BigUnion1010, - ExtractAlpha1010, - ExcludeZulu1010, - OptionalAll1010, - RequiredAll1010, - ReadonlyAll1010, - NullableAll1010, - TypeNames1010, - Action1010, - AllPerms1010, -}; +export type { Entity_10_10, Registry_10_10, CK_1010, EP_1010, EV_1010, DeepMerge_1010 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts index d240a2c0..9b225cc7 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-11.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-11 (seed 1011) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-11 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1011 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1011 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1011 { - a1011: { x: number; y: string; z: boolean }; - b1011: { p: string[]; q: Record }; - c1011: { nested: { deep: { deeper: { deepest: string } } } }; - d1011: number; - e1011: string; - f1011: boolean; - g1011: null; - h1011: undefined; - i1011: bigint; - j1011: symbol; +interface Entity_10_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_11 | null; children: Entity_10_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1011: number; y1011: string; z1011: boolean }; } -type PartialBig1011 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1011 = T extends Array ? Flatten1011 : T; -type Nested1011 = number[][][][][][][][][][]; -type Flat1011 = Flatten1011; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1011 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1011 : T[K]; -}; -type DeepRequired1011 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1011 : T[K]; +type Path_1011 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1011}` }[keyof T & string] : never; +type EP_1011 = Path_1011; + +type Val_1011 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1011 } + : T[K] extends object ? { t: 'o'; props: Val_1011 } + : { t: 'u' }; }; -type FR1011 = DeepReadonly1011>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1011 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1011 = Extract; -type ExcludeZulu1011 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1011 { width: number; height: number; depth: number } -interface ShapeB1011 { color: string; opacity: number; blend: string } -interface ShapeC1011 { x: number; y: number; z: number; w: number } -interface ShapeD1011 { label: string; title: string; summary: string } - -type Combined1011 = ShapeA1011 & ShapeB1011 & ShapeC1011 & ShapeD1011; -type OptionalAll1011 = { [K in keyof Combined1011]?: Combined1011[K] }; -type RequiredAll1011 = { [K in keyof Combined1011]-?: Combined1011[K] }; -type ReadonlyAll1011 = { readonly [K in keyof Combined1011]: Combined1011[K] }; -type NullableAll1011 = { [K in keyof Combined1011]: Combined1011[K] | null }; +type EV_1011 = Val_1011; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1011 = T extends string ? true : false; -type IsNumber1011 = T extends number ? true : false; -type TypeName1011 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1011 = { - [K in keyof BigRecord1011]: TypeName1011; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1011 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1011 = "user" | "post" | "comment" | "tag" | "category"; -type Action1011 = `${Verb1011}_${Resource1011}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1011 = T extends Promise ? UnwrapPromise1011 : T; -type UnwrapArray1011 = T extends (infer U)[] ? UnwrapArray1011 : T; -type Head1011 = T extends [infer H, ...infer _] ? H : never; -type Tail1011 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1011 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1011>] - : never; +interface Registry_10_11 { + entities: Map; + validators: EV_1011; + paths: Set; + merged: DeepMerge_1011; +} -type SmallUnion1011 = "a" | "b" | "c" | "d"; -type AllPerms1011 = Permutation1011; +type CK_1011 = `p10.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1011, - Flat1011, - FR1011, - BigUnion1011, - ExtractAlpha1011, - ExcludeZulu1011, - OptionalAll1011, - RequiredAll1011, - ReadonlyAll1011, - NullableAll1011, - TypeNames1011, - Action1011, - AllPerms1011, -}; +export type { Entity_10_11, Registry_10_11, CK_1011, EP_1011, EV_1011, DeepMerge_1011 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts index 361cc5f3..dcbf730f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-12.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-12 (seed 1012) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-12 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1012 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1012 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1012 { - a1012: { x: number; y: string; z: boolean }; - b1012: { p: string[]; q: Record }; - c1012: { nested: { deep: { deeper: { deepest: string } } } }; - d1012: number; - e1012: string; - f1012: boolean; - g1012: null; - h1012: undefined; - i1012: bigint; - j1012: symbol; +interface Entity_10_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_12 | null; children: Entity_10_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1012: number; y1012: string; z1012: boolean }; } -type PartialBig1012 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1012 = T extends Array ? Flatten1012 : T; -type Nested1012 = number[][][][][][][][][][]; -type Flat1012 = Flatten1012; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1012 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1012 : T[K]; -}; -type DeepRequired1012 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1012 : T[K]; +type Path_1012 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1012}` }[keyof T & string] : never; +type EP_1012 = Path_1012; + +type Val_1012 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1012 } + : T[K] extends object ? { t: 'o'; props: Val_1012 } + : { t: 'u' }; }; -type FR1012 = DeepReadonly1012>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1012 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1012 = Extract; -type ExcludeZulu1012 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1012 { width: number; height: number; depth: number } -interface ShapeB1012 { color: string; opacity: number; blend: string } -interface ShapeC1012 { x: number; y: number; z: number; w: number } -interface ShapeD1012 { label: string; title: string; summary: string } - -type Combined1012 = ShapeA1012 & ShapeB1012 & ShapeC1012 & ShapeD1012; -type OptionalAll1012 = { [K in keyof Combined1012]?: Combined1012[K] }; -type RequiredAll1012 = { [K in keyof Combined1012]-?: Combined1012[K] }; -type ReadonlyAll1012 = { readonly [K in keyof Combined1012]: Combined1012[K] }; -type NullableAll1012 = { [K in keyof Combined1012]: Combined1012[K] | null }; +type EV_1012 = Val_1012; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1012 = T extends string ? true : false; -type IsNumber1012 = T extends number ? true : false; -type TypeName1012 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1012 = { - [K in keyof BigRecord1012]: TypeName1012; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1012 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1012 = "user" | "post" | "comment" | "tag" | "category"; -type Action1012 = `${Verb1012}_${Resource1012}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1012 = T extends Promise ? UnwrapPromise1012 : T; -type UnwrapArray1012 = T extends (infer U)[] ? UnwrapArray1012 : T; -type Head1012 = T extends [infer H, ...infer _] ? H : never; -type Tail1012 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1012 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1012>] - : never; +interface Registry_10_12 { + entities: Map; + validators: EV_1012; + paths: Set; + merged: DeepMerge_1012; +} -type SmallUnion1012 = "a" | "b" | "c" | "d"; -type AllPerms1012 = Permutation1012; +type CK_1012 = `p10.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1012, - Flat1012, - FR1012, - BigUnion1012, - ExtractAlpha1012, - ExcludeZulu1012, - OptionalAll1012, - RequiredAll1012, - ReadonlyAll1012, - NullableAll1012, - TypeNames1012, - Action1012, - AllPerms1012, -}; +export type { Entity_10_12, Registry_10_12, CK_1012, EP_1012, EV_1012, DeepMerge_1012 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts index 47273e94..06c22318 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-13.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-13 (seed 1013) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-13 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1013 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1013 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1013 { - a1013: { x: number; y: string; z: boolean }; - b1013: { p: string[]; q: Record }; - c1013: { nested: { deep: { deeper: { deepest: string } } } }; - d1013: number; - e1013: string; - f1013: boolean; - g1013: null; - h1013: undefined; - i1013: bigint; - j1013: symbol; +interface Entity_10_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_13 | null; children: Entity_10_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1013: number; y1013: string; z1013: boolean }; } -type PartialBig1013 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1013 = T extends Array ? Flatten1013 : T; -type Nested1013 = number[][][][][][][][][][]; -type Flat1013 = Flatten1013; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1013 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1013 : T[K]; -}; -type DeepRequired1013 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1013 : T[K]; +type Path_1013 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1013}` }[keyof T & string] : never; +type EP_1013 = Path_1013; + +type Val_1013 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1013 } + : T[K] extends object ? { t: 'o'; props: Val_1013 } + : { t: 'u' }; }; -type FR1013 = DeepReadonly1013>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1013 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1013 = Extract; -type ExcludeZulu1013 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1013 { width: number; height: number; depth: number } -interface ShapeB1013 { color: string; opacity: number; blend: string } -interface ShapeC1013 { x: number; y: number; z: number; w: number } -interface ShapeD1013 { label: string; title: string; summary: string } - -type Combined1013 = ShapeA1013 & ShapeB1013 & ShapeC1013 & ShapeD1013; -type OptionalAll1013 = { [K in keyof Combined1013]?: Combined1013[K] }; -type RequiredAll1013 = { [K in keyof Combined1013]-?: Combined1013[K] }; -type ReadonlyAll1013 = { readonly [K in keyof Combined1013]: Combined1013[K] }; -type NullableAll1013 = { [K in keyof Combined1013]: Combined1013[K] | null }; +type EV_1013 = Val_1013; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1013 = T extends string ? true : false; -type IsNumber1013 = T extends number ? true : false; -type TypeName1013 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1013 = { - [K in keyof BigRecord1013]: TypeName1013; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1013 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1013 = "user" | "post" | "comment" | "tag" | "category"; -type Action1013 = `${Verb1013}_${Resource1013}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1013 = T extends Promise ? UnwrapPromise1013 : T; -type UnwrapArray1013 = T extends (infer U)[] ? UnwrapArray1013 : T; -type Head1013 = T extends [infer H, ...infer _] ? H : never; -type Tail1013 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1013 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1013>] - : never; +interface Registry_10_13 { + entities: Map; + validators: EV_1013; + paths: Set; + merged: DeepMerge_1013; +} -type SmallUnion1013 = "a" | "b" | "c" | "d"; -type AllPerms1013 = Permutation1013; +type CK_1013 = `p10.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1013, - Flat1013, - FR1013, - BigUnion1013, - ExtractAlpha1013, - ExcludeZulu1013, - OptionalAll1013, - RequiredAll1013, - ReadonlyAll1013, - NullableAll1013, - TypeNames1013, - Action1013, - AllPerms1013, -}; +export type { Entity_10_13, Registry_10_13, CK_1013, EP_1013, EV_1013, DeepMerge_1013 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts index 85f7d5ae..7d6ed1fe 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-14.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-14 (seed 1014) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-14 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1014 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1014 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1014 { - a1014: { x: number; y: string; z: boolean }; - b1014: { p: string[]; q: Record }; - c1014: { nested: { deep: { deeper: { deepest: string } } } }; - d1014: number; - e1014: string; - f1014: boolean; - g1014: null; - h1014: undefined; - i1014: bigint; - j1014: symbol; +interface Entity_10_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_14 | null; children: Entity_10_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1014: number; y1014: string; z1014: boolean }; } -type PartialBig1014 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1014 = T extends Array ? Flatten1014 : T; -type Nested1014 = number[][][][][][][][][][]; -type Flat1014 = Flatten1014; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1014 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1014 : T[K]; -}; -type DeepRequired1014 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1014 : T[K]; +type Path_1014 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1014}` }[keyof T & string] : never; +type EP_1014 = Path_1014; + +type Val_1014 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1014 } + : T[K] extends object ? { t: 'o'; props: Val_1014 } + : { t: 'u' }; }; -type FR1014 = DeepReadonly1014>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1014 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1014 = Extract; -type ExcludeZulu1014 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1014 { width: number; height: number; depth: number } -interface ShapeB1014 { color: string; opacity: number; blend: string } -interface ShapeC1014 { x: number; y: number; z: number; w: number } -interface ShapeD1014 { label: string; title: string; summary: string } - -type Combined1014 = ShapeA1014 & ShapeB1014 & ShapeC1014 & ShapeD1014; -type OptionalAll1014 = { [K in keyof Combined1014]?: Combined1014[K] }; -type RequiredAll1014 = { [K in keyof Combined1014]-?: Combined1014[K] }; -type ReadonlyAll1014 = { readonly [K in keyof Combined1014]: Combined1014[K] }; -type NullableAll1014 = { [K in keyof Combined1014]: Combined1014[K] | null }; +type EV_1014 = Val_1014; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1014 = T extends string ? true : false; -type IsNumber1014 = T extends number ? true : false; -type TypeName1014 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1014 = { - [K in keyof BigRecord1014]: TypeName1014; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1014 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1014 = "user" | "post" | "comment" | "tag" | "category"; -type Action1014 = `${Verb1014}_${Resource1014}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1014 = T extends Promise ? UnwrapPromise1014 : T; -type UnwrapArray1014 = T extends (infer U)[] ? UnwrapArray1014 : T; -type Head1014 = T extends [infer H, ...infer _] ? H : never; -type Tail1014 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1014 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1014>] - : never; +interface Registry_10_14 { + entities: Map; + validators: EV_1014; + paths: Set; + merged: DeepMerge_1014; +} -type SmallUnion1014 = "a" | "b" | "c" | "d"; -type AllPerms1014 = Permutation1014; +type CK_1014 = `p10.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1014, - Flat1014, - FR1014, - BigUnion1014, - ExtractAlpha1014, - ExcludeZulu1014, - OptionalAll1014, - RequiredAll1014, - ReadonlyAll1014, - NullableAll1014, - TypeNames1014, - Action1014, - AllPerms1014, -}; +export type { Entity_10_14, Registry_10_14, CK_1014, EP_1014, EV_1014, DeepMerge_1014 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts index 7bbde5be..842146f5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-15.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-15 (seed 1015) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-15 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1015 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1015 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1015 { - a1015: { x: number; y: string; z: boolean }; - b1015: { p: string[]; q: Record }; - c1015: { nested: { deep: { deeper: { deepest: string } } } }; - d1015: number; - e1015: string; - f1015: boolean; - g1015: null; - h1015: undefined; - i1015: bigint; - j1015: symbol; +interface Entity_10_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_15 | null; children: Entity_10_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1015: number; y1015: string; z1015: boolean }; } -type PartialBig1015 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1015 = T extends Array ? Flatten1015 : T; -type Nested1015 = number[][][][][][][][][][]; -type Flat1015 = Flatten1015; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1015 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1015 : T[K]; -}; -type DeepRequired1015 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1015 : T[K]; +type Path_1015 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1015}` }[keyof T & string] : never; +type EP_1015 = Path_1015; + +type Val_1015 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1015 } + : T[K] extends object ? { t: 'o'; props: Val_1015 } + : { t: 'u' }; }; -type FR1015 = DeepReadonly1015>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1015 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1015 = Extract; -type ExcludeZulu1015 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1015 { width: number; height: number; depth: number } -interface ShapeB1015 { color: string; opacity: number; blend: string } -interface ShapeC1015 { x: number; y: number; z: number; w: number } -interface ShapeD1015 { label: string; title: string; summary: string } - -type Combined1015 = ShapeA1015 & ShapeB1015 & ShapeC1015 & ShapeD1015; -type OptionalAll1015 = { [K in keyof Combined1015]?: Combined1015[K] }; -type RequiredAll1015 = { [K in keyof Combined1015]-?: Combined1015[K] }; -type ReadonlyAll1015 = { readonly [K in keyof Combined1015]: Combined1015[K] }; -type NullableAll1015 = { [K in keyof Combined1015]: Combined1015[K] | null }; +type EV_1015 = Val_1015; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1015 = T extends string ? true : false; -type IsNumber1015 = T extends number ? true : false; -type TypeName1015 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1015 = { - [K in keyof BigRecord1015]: TypeName1015; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1015 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1015 = "user" | "post" | "comment" | "tag" | "category"; -type Action1015 = `${Verb1015}_${Resource1015}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1015 = T extends Promise ? UnwrapPromise1015 : T; -type UnwrapArray1015 = T extends (infer U)[] ? UnwrapArray1015 : T; -type Head1015 = T extends [infer H, ...infer _] ? H : never; -type Tail1015 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1015 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1015>] - : never; +interface Registry_10_15 { + entities: Map; + validators: EV_1015; + paths: Set; + merged: DeepMerge_1015; +} -type SmallUnion1015 = "a" | "b" | "c" | "d"; -type AllPerms1015 = Permutation1015; +type CK_1015 = `p10.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1015, - Flat1015, - FR1015, - BigUnion1015, - ExtractAlpha1015, - ExcludeZulu1015, - OptionalAll1015, - RequiredAll1015, - ReadonlyAll1015, - NullableAll1015, - TypeNames1015, - Action1015, - AllPerms1015, -}; +export type { Entity_10_15, Registry_10_15, CK_1015, EP_1015, EV_1015, DeepMerge_1015 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts index 3419bdfc..99a02290 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-16.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-16 (seed 1016) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-16 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1016 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1016 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1016 { - a1016: { x: number; y: string; z: boolean }; - b1016: { p: string[]; q: Record }; - c1016: { nested: { deep: { deeper: { deepest: string } } } }; - d1016: number; - e1016: string; - f1016: boolean; - g1016: null; - h1016: undefined; - i1016: bigint; - j1016: symbol; +interface Entity_10_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_16 | null; children: Entity_10_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1016: number; y1016: string; z1016: boolean }; } -type PartialBig1016 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1016 = T extends Array ? Flatten1016 : T; -type Nested1016 = number[][][][][][][][][][]; -type Flat1016 = Flatten1016; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1016 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1016 : T[K]; -}; -type DeepRequired1016 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1016 : T[K]; +type Path_1016 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1016}` }[keyof T & string] : never; +type EP_1016 = Path_1016; + +type Val_1016 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1016 } + : T[K] extends object ? { t: 'o'; props: Val_1016 } + : { t: 'u' }; }; -type FR1016 = DeepReadonly1016>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1016 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1016 = Extract; -type ExcludeZulu1016 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1016 { width: number; height: number; depth: number } -interface ShapeB1016 { color: string; opacity: number; blend: string } -interface ShapeC1016 { x: number; y: number; z: number; w: number } -interface ShapeD1016 { label: string; title: string; summary: string } - -type Combined1016 = ShapeA1016 & ShapeB1016 & ShapeC1016 & ShapeD1016; -type OptionalAll1016 = { [K in keyof Combined1016]?: Combined1016[K] }; -type RequiredAll1016 = { [K in keyof Combined1016]-?: Combined1016[K] }; -type ReadonlyAll1016 = { readonly [K in keyof Combined1016]: Combined1016[K] }; -type NullableAll1016 = { [K in keyof Combined1016]: Combined1016[K] | null }; +type EV_1016 = Val_1016; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1016 = T extends string ? true : false; -type IsNumber1016 = T extends number ? true : false; -type TypeName1016 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1016 = { - [K in keyof BigRecord1016]: TypeName1016; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1016 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1016 = "user" | "post" | "comment" | "tag" | "category"; -type Action1016 = `${Verb1016}_${Resource1016}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1016 = T extends Promise ? UnwrapPromise1016 : T; -type UnwrapArray1016 = T extends (infer U)[] ? UnwrapArray1016 : T; -type Head1016 = T extends [infer H, ...infer _] ? H : never; -type Tail1016 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1016 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1016>] - : never; +interface Registry_10_16 { + entities: Map; + validators: EV_1016; + paths: Set; + merged: DeepMerge_1016; +} -type SmallUnion1016 = "a" | "b" | "c" | "d"; -type AllPerms1016 = Permutation1016; +type CK_1016 = `p10.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1016, - Flat1016, - FR1016, - BigUnion1016, - ExtractAlpha1016, - ExcludeZulu1016, - OptionalAll1016, - RequiredAll1016, - ReadonlyAll1016, - NullableAll1016, - TypeNames1016, - Action1016, - AllPerms1016, -}; +export type { Entity_10_16, Registry_10_16, CK_1016, EP_1016, EV_1016, DeepMerge_1016 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts index cf7e21de..101e8334 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-17.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-17 (seed 1017) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-17 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1017 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1017 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1017 { - a1017: { x: number; y: string; z: boolean }; - b1017: { p: string[]; q: Record }; - c1017: { nested: { deep: { deeper: { deepest: string } } } }; - d1017: number; - e1017: string; - f1017: boolean; - g1017: null; - h1017: undefined; - i1017: bigint; - j1017: symbol; +interface Entity_10_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_17 | null; children: Entity_10_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1017: number; y1017: string; z1017: boolean }; } -type PartialBig1017 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1017 = T extends Array ? Flatten1017 : T; -type Nested1017 = number[][][][][][][][][][]; -type Flat1017 = Flatten1017; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1017 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1017 : T[K]; -}; -type DeepRequired1017 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1017 : T[K]; +type Path_1017 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1017}` }[keyof T & string] : never; +type EP_1017 = Path_1017; + +type Val_1017 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1017 } + : T[K] extends object ? { t: 'o'; props: Val_1017 } + : { t: 'u' }; }; -type FR1017 = DeepReadonly1017>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1017 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1017 = Extract; -type ExcludeZulu1017 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1017 { width: number; height: number; depth: number } -interface ShapeB1017 { color: string; opacity: number; blend: string } -interface ShapeC1017 { x: number; y: number; z: number; w: number } -interface ShapeD1017 { label: string; title: string; summary: string } - -type Combined1017 = ShapeA1017 & ShapeB1017 & ShapeC1017 & ShapeD1017; -type OptionalAll1017 = { [K in keyof Combined1017]?: Combined1017[K] }; -type RequiredAll1017 = { [K in keyof Combined1017]-?: Combined1017[K] }; -type ReadonlyAll1017 = { readonly [K in keyof Combined1017]: Combined1017[K] }; -type NullableAll1017 = { [K in keyof Combined1017]: Combined1017[K] | null }; +type EV_1017 = Val_1017; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1017 = T extends string ? true : false; -type IsNumber1017 = T extends number ? true : false; -type TypeName1017 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1017 = { - [K in keyof BigRecord1017]: TypeName1017; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1017 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1017 = "user" | "post" | "comment" | "tag" | "category"; -type Action1017 = `${Verb1017}_${Resource1017}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1017 = T extends Promise ? UnwrapPromise1017 : T; -type UnwrapArray1017 = T extends (infer U)[] ? UnwrapArray1017 : T; -type Head1017 = T extends [infer H, ...infer _] ? H : never; -type Tail1017 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1017 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1017>] - : never; +interface Registry_10_17 { + entities: Map; + validators: EV_1017; + paths: Set; + merged: DeepMerge_1017; +} -type SmallUnion1017 = "a" | "b" | "c" | "d"; -type AllPerms1017 = Permutation1017; +type CK_1017 = `p10.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1017, - Flat1017, - FR1017, - BigUnion1017, - ExtractAlpha1017, - ExcludeZulu1017, - OptionalAll1017, - RequiredAll1017, - ReadonlyAll1017, - NullableAll1017, - TypeNames1017, - Action1017, - AllPerms1017, -}; +export type { Entity_10_17, Registry_10_17, CK_1017, EP_1017, EV_1017, DeepMerge_1017 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts index 13cd371b..4c246d84 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-18.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-18 (seed 1018) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-18 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1018 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1018 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1018 { - a1018: { x: number; y: string; z: boolean }; - b1018: { p: string[]; q: Record }; - c1018: { nested: { deep: { deeper: { deepest: string } } } }; - d1018: number; - e1018: string; - f1018: boolean; - g1018: null; - h1018: undefined; - i1018: bigint; - j1018: symbol; +interface Entity_10_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_18 | null; children: Entity_10_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1018: number; y1018: string; z1018: boolean }; } -type PartialBig1018 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1018 = T extends Array ? Flatten1018 : T; -type Nested1018 = number[][][][][][][][][][]; -type Flat1018 = Flatten1018; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1018 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1018 : T[K]; -}; -type DeepRequired1018 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1018 : T[K]; +type Path_1018 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1018}` }[keyof T & string] : never; +type EP_1018 = Path_1018; + +type Val_1018 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1018 } + : T[K] extends object ? { t: 'o'; props: Val_1018 } + : { t: 'u' }; }; -type FR1018 = DeepReadonly1018>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1018 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1018 = Extract; -type ExcludeZulu1018 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1018 { width: number; height: number; depth: number } -interface ShapeB1018 { color: string; opacity: number; blend: string } -interface ShapeC1018 { x: number; y: number; z: number; w: number } -interface ShapeD1018 { label: string; title: string; summary: string } - -type Combined1018 = ShapeA1018 & ShapeB1018 & ShapeC1018 & ShapeD1018; -type OptionalAll1018 = { [K in keyof Combined1018]?: Combined1018[K] }; -type RequiredAll1018 = { [K in keyof Combined1018]-?: Combined1018[K] }; -type ReadonlyAll1018 = { readonly [K in keyof Combined1018]: Combined1018[K] }; -type NullableAll1018 = { [K in keyof Combined1018]: Combined1018[K] | null }; +type EV_1018 = Val_1018; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1018 = T extends string ? true : false; -type IsNumber1018 = T extends number ? true : false; -type TypeName1018 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1018 = { - [K in keyof BigRecord1018]: TypeName1018; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1018 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1018 = "user" | "post" | "comment" | "tag" | "category"; -type Action1018 = `${Verb1018}_${Resource1018}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1018 = T extends Promise ? UnwrapPromise1018 : T; -type UnwrapArray1018 = T extends (infer U)[] ? UnwrapArray1018 : T; -type Head1018 = T extends [infer H, ...infer _] ? H : never; -type Tail1018 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1018 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1018>] - : never; +interface Registry_10_18 { + entities: Map; + validators: EV_1018; + paths: Set; + merged: DeepMerge_1018; +} -type SmallUnion1018 = "a" | "b" | "c" | "d"; -type AllPerms1018 = Permutation1018; +type CK_1018 = `p10.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1018, - Flat1018, - FR1018, - BigUnion1018, - ExtractAlpha1018, - ExcludeZulu1018, - OptionalAll1018, - RequiredAll1018, - ReadonlyAll1018, - NullableAll1018, - TypeNames1018, - Action1018, - AllPerms1018, -}; +export type { Entity_10_18, Registry_10_18, CK_1018, EP_1018, EV_1018, DeepMerge_1018 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts index 03b59b7d..74d7f28f 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-19.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-19 (seed 1019) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-19 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1019 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1019 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1019 { - a1019: { x: number; y: string; z: boolean }; - b1019: { p: string[]; q: Record }; - c1019: { nested: { deep: { deeper: { deepest: string } } } }; - d1019: number; - e1019: string; - f1019: boolean; - g1019: null; - h1019: undefined; - i1019: bigint; - j1019: symbol; +interface Entity_10_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_19 | null; children: Entity_10_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1019: number; y1019: string; z1019: boolean }; } -type PartialBig1019 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1019 = T extends Array ? Flatten1019 : T; -type Nested1019 = number[][][][][][][][][][]; -type Flat1019 = Flatten1019; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1019 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1019 : T[K]; -}; -type DeepRequired1019 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1019 : T[K]; +type Path_1019 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1019}` }[keyof T & string] : never; +type EP_1019 = Path_1019; + +type Val_1019 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1019 } + : T[K] extends object ? { t: 'o'; props: Val_1019 } + : { t: 'u' }; }; -type FR1019 = DeepReadonly1019>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1019 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1019 = Extract; -type ExcludeZulu1019 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1019 { width: number; height: number; depth: number } -interface ShapeB1019 { color: string; opacity: number; blend: string } -interface ShapeC1019 { x: number; y: number; z: number; w: number } -interface ShapeD1019 { label: string; title: string; summary: string } - -type Combined1019 = ShapeA1019 & ShapeB1019 & ShapeC1019 & ShapeD1019; -type OptionalAll1019 = { [K in keyof Combined1019]?: Combined1019[K] }; -type RequiredAll1019 = { [K in keyof Combined1019]-?: Combined1019[K] }; -type ReadonlyAll1019 = { readonly [K in keyof Combined1019]: Combined1019[K] }; -type NullableAll1019 = { [K in keyof Combined1019]: Combined1019[K] | null }; +type EV_1019 = Val_1019; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1019 = T extends string ? true : false; -type IsNumber1019 = T extends number ? true : false; -type TypeName1019 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1019 = { - [K in keyof BigRecord1019]: TypeName1019; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1019 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1019 = "user" | "post" | "comment" | "tag" | "category"; -type Action1019 = `${Verb1019}_${Resource1019}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1019 = T extends Promise ? UnwrapPromise1019 : T; -type UnwrapArray1019 = T extends (infer U)[] ? UnwrapArray1019 : T; -type Head1019 = T extends [infer H, ...infer _] ? H : never; -type Tail1019 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1019 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1019>] - : never; +interface Registry_10_19 { + entities: Map; + validators: EV_1019; + paths: Set; + merged: DeepMerge_1019; +} -type SmallUnion1019 = "a" | "b" | "c" | "d"; -type AllPerms1019 = Permutation1019; +type CK_1019 = `p10.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1019, - Flat1019, - FR1019, - BigUnion1019, - ExtractAlpha1019, - ExcludeZulu1019, - OptionalAll1019, - RequiredAll1019, - ReadonlyAll1019, - NullableAll1019, - TypeNames1019, - Action1019, - AllPerms1019, -}; +export type { Entity_10_19, Registry_10_19, CK_1019, EP_1019, EV_1019, DeepMerge_1019 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts index 7d230a50..48953af0 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-20.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-20 (seed 1020) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-20 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1020 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1020 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1020 { - a1020: { x: number; y: string; z: boolean }; - b1020: { p: string[]; q: Record }; - c1020: { nested: { deep: { deeper: { deepest: string } } } }; - d1020: number; - e1020: string; - f1020: boolean; - g1020: null; - h1020: undefined; - i1020: bigint; - j1020: symbol; +interface Entity_10_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_20 | null; children: Entity_10_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1020: number; y1020: string; z1020: boolean }; } -type PartialBig1020 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1020 = T extends Array ? Flatten1020 : T; -type Nested1020 = number[][][][][][][][][][]; -type Flat1020 = Flatten1020; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1020 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1020 : T[K]; -}; -type DeepRequired1020 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1020 : T[K]; +type Path_1020 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1020}` }[keyof T & string] : never; +type EP_1020 = Path_1020; + +type Val_1020 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1020 } + : T[K] extends object ? { t: 'o'; props: Val_1020 } + : { t: 'u' }; }; -type FR1020 = DeepReadonly1020>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1020 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1020 = Extract; -type ExcludeZulu1020 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1020 { width: number; height: number; depth: number } -interface ShapeB1020 { color: string; opacity: number; blend: string } -interface ShapeC1020 { x: number; y: number; z: number; w: number } -interface ShapeD1020 { label: string; title: string; summary: string } - -type Combined1020 = ShapeA1020 & ShapeB1020 & ShapeC1020 & ShapeD1020; -type OptionalAll1020 = { [K in keyof Combined1020]?: Combined1020[K] }; -type RequiredAll1020 = { [K in keyof Combined1020]-?: Combined1020[K] }; -type ReadonlyAll1020 = { readonly [K in keyof Combined1020]: Combined1020[K] }; -type NullableAll1020 = { [K in keyof Combined1020]: Combined1020[K] | null }; +type EV_1020 = Val_1020; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1020 = T extends string ? true : false; -type IsNumber1020 = T extends number ? true : false; -type TypeName1020 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1020 = { - [K in keyof BigRecord1020]: TypeName1020; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1020 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1020 = "user" | "post" | "comment" | "tag" | "category"; -type Action1020 = `${Verb1020}_${Resource1020}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1020 = T extends Promise ? UnwrapPromise1020 : T; -type UnwrapArray1020 = T extends (infer U)[] ? UnwrapArray1020 : T; -type Head1020 = T extends [infer H, ...infer _] ? H : never; -type Tail1020 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1020 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1020>] - : never; +interface Registry_10_20 { + entities: Map; + validators: EV_1020; + paths: Set; + merged: DeepMerge_1020; +} -type SmallUnion1020 = "a" | "b" | "c" | "d"; -type AllPerms1020 = Permutation1020; +type CK_1020 = `p10.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1020, - Flat1020, - FR1020, - BigUnion1020, - ExtractAlpha1020, - ExcludeZulu1020, - OptionalAll1020, - RequiredAll1020, - ReadonlyAll1020, - NullableAll1020, - TypeNames1020, - Action1020, - AllPerms1020, -}; +export type { Entity_10_20, Registry_10_20, CK_1020, EP_1020, EV_1020, DeepMerge_1020 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts index 077a9269..10929a72 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-21.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-21 (seed 1021) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-21 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1021 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1021 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1021 { - a1021: { x: number; y: string; z: boolean }; - b1021: { p: string[]; q: Record }; - c1021: { nested: { deep: { deeper: { deepest: string } } } }; - d1021: number; - e1021: string; - f1021: boolean; - g1021: null; - h1021: undefined; - i1021: bigint; - j1021: symbol; +interface Entity_10_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_21 | null; children: Entity_10_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1021: number; y1021: string; z1021: boolean }; } -type PartialBig1021 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1021 = T extends Array ? Flatten1021 : T; -type Nested1021 = number[][][][][][][][][][]; -type Flat1021 = Flatten1021; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1021 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1021 : T[K]; -}; -type DeepRequired1021 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1021 : T[K]; +type Path_1021 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1021}` }[keyof T & string] : never; +type EP_1021 = Path_1021; + +type Val_1021 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1021 } + : T[K] extends object ? { t: 'o'; props: Val_1021 } + : { t: 'u' }; }; -type FR1021 = DeepReadonly1021>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1021 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1021 = Extract; -type ExcludeZulu1021 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1021 { width: number; height: number; depth: number } -interface ShapeB1021 { color: string; opacity: number; blend: string } -interface ShapeC1021 { x: number; y: number; z: number; w: number } -interface ShapeD1021 { label: string; title: string; summary: string } - -type Combined1021 = ShapeA1021 & ShapeB1021 & ShapeC1021 & ShapeD1021; -type OptionalAll1021 = { [K in keyof Combined1021]?: Combined1021[K] }; -type RequiredAll1021 = { [K in keyof Combined1021]-?: Combined1021[K] }; -type ReadonlyAll1021 = { readonly [K in keyof Combined1021]: Combined1021[K] }; -type NullableAll1021 = { [K in keyof Combined1021]: Combined1021[K] | null }; +type EV_1021 = Val_1021; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1021 = T extends string ? true : false; -type IsNumber1021 = T extends number ? true : false; -type TypeName1021 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1021 = { - [K in keyof BigRecord1021]: TypeName1021; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1021 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1021 = "user" | "post" | "comment" | "tag" | "category"; -type Action1021 = `${Verb1021}_${Resource1021}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1021 = T extends Promise ? UnwrapPromise1021 : T; -type UnwrapArray1021 = T extends (infer U)[] ? UnwrapArray1021 : T; -type Head1021 = T extends [infer H, ...infer _] ? H : never; -type Tail1021 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1021 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1021>] - : never; +interface Registry_10_21 { + entities: Map; + validators: EV_1021; + paths: Set; + merged: DeepMerge_1021; +} -type SmallUnion1021 = "a" | "b" | "c" | "d"; -type AllPerms1021 = Permutation1021; +type CK_1021 = `p10.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1021, - Flat1021, - FR1021, - BigUnion1021, - ExtractAlpha1021, - ExcludeZulu1021, - OptionalAll1021, - RequiredAll1021, - ReadonlyAll1021, - NullableAll1021, - TypeNames1021, - Action1021, - AllPerms1021, -}; +export type { Entity_10_21, Registry_10_21, CK_1021, EP_1021, EV_1021, DeepMerge_1021 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts index e3072deb..15cbb053 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-22.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-22 (seed 1022) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-22 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1022 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1022 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1022 { - a1022: { x: number; y: string; z: boolean }; - b1022: { p: string[]; q: Record }; - c1022: { nested: { deep: { deeper: { deepest: string } } } }; - d1022: number; - e1022: string; - f1022: boolean; - g1022: null; - h1022: undefined; - i1022: bigint; - j1022: symbol; +interface Entity_10_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_22 | null; children: Entity_10_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1022: number; y1022: string; z1022: boolean }; } -type PartialBig1022 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1022 = T extends Array ? Flatten1022 : T; -type Nested1022 = number[][][][][][][][][][]; -type Flat1022 = Flatten1022; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1022 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1022 : T[K]; -}; -type DeepRequired1022 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1022 : T[K]; +type Path_1022 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1022}` }[keyof T & string] : never; +type EP_1022 = Path_1022; + +type Val_1022 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1022 } + : T[K] extends object ? { t: 'o'; props: Val_1022 } + : { t: 'u' }; }; -type FR1022 = DeepReadonly1022>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1022 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1022 = Extract; -type ExcludeZulu1022 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1022 { width: number; height: number; depth: number } -interface ShapeB1022 { color: string; opacity: number; blend: string } -interface ShapeC1022 { x: number; y: number; z: number; w: number } -interface ShapeD1022 { label: string; title: string; summary: string } - -type Combined1022 = ShapeA1022 & ShapeB1022 & ShapeC1022 & ShapeD1022; -type OptionalAll1022 = { [K in keyof Combined1022]?: Combined1022[K] }; -type RequiredAll1022 = { [K in keyof Combined1022]-?: Combined1022[K] }; -type ReadonlyAll1022 = { readonly [K in keyof Combined1022]: Combined1022[K] }; -type NullableAll1022 = { [K in keyof Combined1022]: Combined1022[K] | null }; +type EV_1022 = Val_1022; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1022 = T extends string ? true : false; -type IsNumber1022 = T extends number ? true : false; -type TypeName1022 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1022 = { - [K in keyof BigRecord1022]: TypeName1022; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1022 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1022 = "user" | "post" | "comment" | "tag" | "category"; -type Action1022 = `${Verb1022}_${Resource1022}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1022 = T extends Promise ? UnwrapPromise1022 : T; -type UnwrapArray1022 = T extends (infer U)[] ? UnwrapArray1022 : T; -type Head1022 = T extends [infer H, ...infer _] ? H : never; -type Tail1022 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1022 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1022>] - : never; +interface Registry_10_22 { + entities: Map; + validators: EV_1022; + paths: Set; + merged: DeepMerge_1022; +} -type SmallUnion1022 = "a" | "b" | "c" | "d"; -type AllPerms1022 = Permutation1022; +type CK_1022 = `p10.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1022, - Flat1022, - FR1022, - BigUnion1022, - ExtractAlpha1022, - ExcludeZulu1022, - OptionalAll1022, - RequiredAll1022, - ReadonlyAll1022, - NullableAll1022, - TypeNames1022, - Action1022, - AllPerms1022, -}; +export type { Entity_10_22, Registry_10_22, CK_1022, EP_1022, EV_1022, DeepMerge_1022 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts index 266a9bff..c9fc6ad4 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-23.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-23 (seed 1023) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-23 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1023 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1023 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1023 { - a1023: { x: number; y: string; z: boolean }; - b1023: { p: string[]; q: Record }; - c1023: { nested: { deep: { deeper: { deepest: string } } } }; - d1023: number; - e1023: string; - f1023: boolean; - g1023: null; - h1023: undefined; - i1023: bigint; - j1023: symbol; +interface Entity_10_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_23 | null; children: Entity_10_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1023: number; y1023: string; z1023: boolean }; } -type PartialBig1023 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1023 = T extends Array ? Flatten1023 : T; -type Nested1023 = number[][][][][][][][][][]; -type Flat1023 = Flatten1023; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1023 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1023 : T[K]; -}; -type DeepRequired1023 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1023 : T[K]; +type Path_1023 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1023}` }[keyof T & string] : never; +type EP_1023 = Path_1023; + +type Val_1023 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1023 } + : T[K] extends object ? { t: 'o'; props: Val_1023 } + : { t: 'u' }; }; -type FR1023 = DeepReadonly1023>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1023 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1023 = Extract; -type ExcludeZulu1023 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1023 { width: number; height: number; depth: number } -interface ShapeB1023 { color: string; opacity: number; blend: string } -interface ShapeC1023 { x: number; y: number; z: number; w: number } -interface ShapeD1023 { label: string; title: string; summary: string } - -type Combined1023 = ShapeA1023 & ShapeB1023 & ShapeC1023 & ShapeD1023; -type OptionalAll1023 = { [K in keyof Combined1023]?: Combined1023[K] }; -type RequiredAll1023 = { [K in keyof Combined1023]-?: Combined1023[K] }; -type ReadonlyAll1023 = { readonly [K in keyof Combined1023]: Combined1023[K] }; -type NullableAll1023 = { [K in keyof Combined1023]: Combined1023[K] | null }; +type EV_1023 = Val_1023; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1023 = T extends string ? true : false; -type IsNumber1023 = T extends number ? true : false; -type TypeName1023 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1023 = { - [K in keyof BigRecord1023]: TypeName1023; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1023 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1023 = "user" | "post" | "comment" | "tag" | "category"; -type Action1023 = `${Verb1023}_${Resource1023}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1023 = T extends Promise ? UnwrapPromise1023 : T; -type UnwrapArray1023 = T extends (infer U)[] ? UnwrapArray1023 : T; -type Head1023 = T extends [infer H, ...infer _] ? H : never; -type Tail1023 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1023 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1023>] - : never; +interface Registry_10_23 { + entities: Map; + validators: EV_1023; + paths: Set; + merged: DeepMerge_1023; +} -type SmallUnion1023 = "a" | "b" | "c" | "d"; -type AllPerms1023 = Permutation1023; +type CK_1023 = `p10.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1023, - Flat1023, - FR1023, - BigUnion1023, - ExtractAlpha1023, - ExcludeZulu1023, - OptionalAll1023, - RequiredAll1023, - ReadonlyAll1023, - NullableAll1023, - TypeNames1023, - Action1023, - AllPerms1023, -}; +export type { Entity_10_23, Registry_10_23, CK_1023, EP_1023, EV_1023, DeepMerge_1023 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts index 30fcfcca..7ed975de 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-24.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-24 (seed 1024) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-24 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1024 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1024 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1024 { - a1024: { x: number; y: string; z: boolean }; - b1024: { p: string[]; q: Record }; - c1024: { nested: { deep: { deeper: { deepest: string } } } }; - d1024: number; - e1024: string; - f1024: boolean; - g1024: null; - h1024: undefined; - i1024: bigint; - j1024: symbol; +interface Entity_10_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_24 | null; children: Entity_10_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1024: number; y1024: string; z1024: boolean }; } -type PartialBig1024 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1024 = T extends Array ? Flatten1024 : T; -type Nested1024 = number[][][][][][][][][][]; -type Flat1024 = Flatten1024; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1024 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1024 : T[K]; -}; -type DeepRequired1024 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1024 : T[K]; +type Path_1024 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1024}` }[keyof T & string] : never; +type EP_1024 = Path_1024; + +type Val_1024 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1024 } + : T[K] extends object ? { t: 'o'; props: Val_1024 } + : { t: 'u' }; }; -type FR1024 = DeepReadonly1024>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1024 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1024 = Extract; -type ExcludeZulu1024 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1024 { width: number; height: number; depth: number } -interface ShapeB1024 { color: string; opacity: number; blend: string } -interface ShapeC1024 { x: number; y: number; z: number; w: number } -interface ShapeD1024 { label: string; title: string; summary: string } - -type Combined1024 = ShapeA1024 & ShapeB1024 & ShapeC1024 & ShapeD1024; -type OptionalAll1024 = { [K in keyof Combined1024]?: Combined1024[K] }; -type RequiredAll1024 = { [K in keyof Combined1024]-?: Combined1024[K] }; -type ReadonlyAll1024 = { readonly [K in keyof Combined1024]: Combined1024[K] }; -type NullableAll1024 = { [K in keyof Combined1024]: Combined1024[K] | null }; +type EV_1024 = Val_1024; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1024 = T extends string ? true : false; -type IsNumber1024 = T extends number ? true : false; -type TypeName1024 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1024 = { - [K in keyof BigRecord1024]: TypeName1024; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1024 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1024 = "user" | "post" | "comment" | "tag" | "category"; -type Action1024 = `${Verb1024}_${Resource1024}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1024 = T extends Promise ? UnwrapPromise1024 : T; -type UnwrapArray1024 = T extends (infer U)[] ? UnwrapArray1024 : T; -type Head1024 = T extends [infer H, ...infer _] ? H : never; -type Tail1024 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1024 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1024>] - : never; +interface Registry_10_24 { + entities: Map; + validators: EV_1024; + paths: Set; + merged: DeepMerge_1024; +} -type SmallUnion1024 = "a" | "b" | "c" | "d"; -type AllPerms1024 = Permutation1024; +type CK_1024 = `p10.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1024, - Flat1024, - FR1024, - BigUnion1024, - ExtractAlpha1024, - ExcludeZulu1024, - OptionalAll1024, - RequiredAll1024, - ReadonlyAll1024, - NullableAll1024, - TypeNames1024, - Action1024, - AllPerms1024, -}; +export type { Entity_10_24, Registry_10_24, CK_1024, EP_1024, EV_1024, DeepMerge_1024 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts index 1f8c7458..fdbaf54b 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-25.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-25 (seed 1025) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-25 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1025 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1025 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1025 { - a1025: { x: number; y: string; z: boolean }; - b1025: { p: string[]; q: Record }; - c1025: { nested: { deep: { deeper: { deepest: string } } } }; - d1025: number; - e1025: string; - f1025: boolean; - g1025: null; - h1025: undefined; - i1025: bigint; - j1025: symbol; +interface Entity_10_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_25 | null; children: Entity_10_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1025: number; y1025: string; z1025: boolean }; } -type PartialBig1025 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1025 = T extends Array ? Flatten1025 : T; -type Nested1025 = number[][][][][][][][][][]; -type Flat1025 = Flatten1025; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1025 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1025 : T[K]; -}; -type DeepRequired1025 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1025 : T[K]; +type Path_1025 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1025}` }[keyof T & string] : never; +type EP_1025 = Path_1025; + +type Val_1025 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1025 } + : T[K] extends object ? { t: 'o'; props: Val_1025 } + : { t: 'u' }; }; -type FR1025 = DeepReadonly1025>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1025 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1025 = Extract; -type ExcludeZulu1025 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1025 { width: number; height: number; depth: number } -interface ShapeB1025 { color: string; opacity: number; blend: string } -interface ShapeC1025 { x: number; y: number; z: number; w: number } -interface ShapeD1025 { label: string; title: string; summary: string } - -type Combined1025 = ShapeA1025 & ShapeB1025 & ShapeC1025 & ShapeD1025; -type OptionalAll1025 = { [K in keyof Combined1025]?: Combined1025[K] }; -type RequiredAll1025 = { [K in keyof Combined1025]-?: Combined1025[K] }; -type ReadonlyAll1025 = { readonly [K in keyof Combined1025]: Combined1025[K] }; -type NullableAll1025 = { [K in keyof Combined1025]: Combined1025[K] | null }; +type EV_1025 = Val_1025; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1025 = T extends string ? true : false; -type IsNumber1025 = T extends number ? true : false; -type TypeName1025 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1025 = { - [K in keyof BigRecord1025]: TypeName1025; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1025 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1025 = "user" | "post" | "comment" | "tag" | "category"; -type Action1025 = `${Verb1025}_${Resource1025}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1025 = T extends Promise ? UnwrapPromise1025 : T; -type UnwrapArray1025 = T extends (infer U)[] ? UnwrapArray1025 : T; -type Head1025 = T extends [infer H, ...infer _] ? H : never; -type Tail1025 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1025 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1025>] - : never; +interface Registry_10_25 { + entities: Map; + validators: EV_1025; + paths: Set; + merged: DeepMerge_1025; +} -type SmallUnion1025 = "a" | "b" | "c" | "d"; -type AllPerms1025 = Permutation1025; +type CK_1025 = `p10.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1025, - Flat1025, - FR1025, - BigUnion1025, - ExtractAlpha1025, - ExcludeZulu1025, - OptionalAll1025, - RequiredAll1025, - ReadonlyAll1025, - NullableAll1025, - TypeNames1025, - Action1025, - AllPerms1025, -}; +export type { Entity_10_25, Registry_10_25, CK_1025, EP_1025, EV_1025, DeepMerge_1025 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts index 9bd47312..85ab1ade 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-26.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-26 (seed 1026) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-26 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1026 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1026 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1026 { - a1026: { x: number; y: string; z: boolean }; - b1026: { p: string[]; q: Record }; - c1026: { nested: { deep: { deeper: { deepest: string } } } }; - d1026: number; - e1026: string; - f1026: boolean; - g1026: null; - h1026: undefined; - i1026: bigint; - j1026: symbol; +interface Entity_10_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_26 | null; children: Entity_10_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1026: number; y1026: string; z1026: boolean }; } -type PartialBig1026 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1026 = T extends Array ? Flatten1026 : T; -type Nested1026 = number[][][][][][][][][][]; -type Flat1026 = Flatten1026; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1026 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1026 : T[K]; -}; -type DeepRequired1026 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1026 : T[K]; +type Path_1026 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1026}` }[keyof T & string] : never; +type EP_1026 = Path_1026; + +type Val_1026 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1026 } + : T[K] extends object ? { t: 'o'; props: Val_1026 } + : { t: 'u' }; }; -type FR1026 = DeepReadonly1026>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1026 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1026 = Extract; -type ExcludeZulu1026 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1026 { width: number; height: number; depth: number } -interface ShapeB1026 { color: string; opacity: number; blend: string } -interface ShapeC1026 { x: number; y: number; z: number; w: number } -interface ShapeD1026 { label: string; title: string; summary: string } - -type Combined1026 = ShapeA1026 & ShapeB1026 & ShapeC1026 & ShapeD1026; -type OptionalAll1026 = { [K in keyof Combined1026]?: Combined1026[K] }; -type RequiredAll1026 = { [K in keyof Combined1026]-?: Combined1026[K] }; -type ReadonlyAll1026 = { readonly [K in keyof Combined1026]: Combined1026[K] }; -type NullableAll1026 = { [K in keyof Combined1026]: Combined1026[K] | null }; +type EV_1026 = Val_1026; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1026 = T extends string ? true : false; -type IsNumber1026 = T extends number ? true : false; -type TypeName1026 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1026 = { - [K in keyof BigRecord1026]: TypeName1026; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1026 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1026 = "user" | "post" | "comment" | "tag" | "category"; -type Action1026 = `${Verb1026}_${Resource1026}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1026 = T extends Promise ? UnwrapPromise1026 : T; -type UnwrapArray1026 = T extends (infer U)[] ? UnwrapArray1026 : T; -type Head1026 = T extends [infer H, ...infer _] ? H : never; -type Tail1026 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1026 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1026>] - : never; +interface Registry_10_26 { + entities: Map; + validators: EV_1026; + paths: Set; + merged: DeepMerge_1026; +} -type SmallUnion1026 = "a" | "b" | "c" | "d"; -type AllPerms1026 = Permutation1026; +type CK_1026 = `p10.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1026, - Flat1026, - FR1026, - BigUnion1026, - ExtractAlpha1026, - ExcludeZulu1026, - OptionalAll1026, - RequiredAll1026, - ReadonlyAll1026, - NullableAll1026, - TypeNames1026, - Action1026, - AllPerms1026, -}; +export type { Entity_10_26, Registry_10_26, CK_1026, EP_1026, EV_1026, DeepMerge_1026 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts index 9fc9b605..1401672c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-27.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-27 (seed 1027) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-27 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1027 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1027 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1027 { - a1027: { x: number; y: string; z: boolean }; - b1027: { p: string[]; q: Record }; - c1027: { nested: { deep: { deeper: { deepest: string } } } }; - d1027: number; - e1027: string; - f1027: boolean; - g1027: null; - h1027: undefined; - i1027: bigint; - j1027: symbol; +interface Entity_10_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_27 | null; children: Entity_10_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1027: number; y1027: string; z1027: boolean }; } -type PartialBig1027 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1027 = T extends Array ? Flatten1027 : T; -type Nested1027 = number[][][][][][][][][][]; -type Flat1027 = Flatten1027; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1027 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1027 : T[K]; -}; -type DeepRequired1027 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1027 : T[K]; +type Path_1027 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1027}` }[keyof T & string] : never; +type EP_1027 = Path_1027; + +type Val_1027 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1027 } + : T[K] extends object ? { t: 'o'; props: Val_1027 } + : { t: 'u' }; }; -type FR1027 = DeepReadonly1027>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1027 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1027 = Extract; -type ExcludeZulu1027 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1027 { width: number; height: number; depth: number } -interface ShapeB1027 { color: string; opacity: number; blend: string } -interface ShapeC1027 { x: number; y: number; z: number; w: number } -interface ShapeD1027 { label: string; title: string; summary: string } - -type Combined1027 = ShapeA1027 & ShapeB1027 & ShapeC1027 & ShapeD1027; -type OptionalAll1027 = { [K in keyof Combined1027]?: Combined1027[K] }; -type RequiredAll1027 = { [K in keyof Combined1027]-?: Combined1027[K] }; -type ReadonlyAll1027 = { readonly [K in keyof Combined1027]: Combined1027[K] }; -type NullableAll1027 = { [K in keyof Combined1027]: Combined1027[K] | null }; +type EV_1027 = Val_1027; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1027 = T extends string ? true : false; -type IsNumber1027 = T extends number ? true : false; -type TypeName1027 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1027 = { - [K in keyof BigRecord1027]: TypeName1027; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1027 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1027 = "user" | "post" | "comment" | "tag" | "category"; -type Action1027 = `${Verb1027}_${Resource1027}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1027 = T extends Promise ? UnwrapPromise1027 : T; -type UnwrapArray1027 = T extends (infer U)[] ? UnwrapArray1027 : T; -type Head1027 = T extends [infer H, ...infer _] ? H : never; -type Tail1027 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1027 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1027>] - : never; +interface Registry_10_27 { + entities: Map; + validators: EV_1027; + paths: Set; + merged: DeepMerge_1027; +} -type SmallUnion1027 = "a" | "b" | "c" | "d"; -type AllPerms1027 = Permutation1027; +type CK_1027 = `p10.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1027, - Flat1027, - FR1027, - BigUnion1027, - ExtractAlpha1027, - ExcludeZulu1027, - OptionalAll1027, - RequiredAll1027, - ReadonlyAll1027, - NullableAll1027, - TypeNames1027, - Action1027, - AllPerms1027, -}; +export type { Entity_10_27, Registry_10_27, CK_1027, EP_1027, EV_1027, DeepMerge_1027 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts index 8cc45889..80e986df 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-28.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-28 (seed 1028) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-28 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1028 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1028 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1028 { - a1028: { x: number; y: string; z: boolean }; - b1028: { p: string[]; q: Record }; - c1028: { nested: { deep: { deeper: { deepest: string } } } }; - d1028: number; - e1028: string; - f1028: boolean; - g1028: null; - h1028: undefined; - i1028: bigint; - j1028: symbol; +interface Entity_10_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_28 | null; children: Entity_10_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1028: number; y1028: string; z1028: boolean }; } -type PartialBig1028 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1028 = T extends Array ? Flatten1028 : T; -type Nested1028 = number[][][][][][][][][][]; -type Flat1028 = Flatten1028; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1028 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1028 : T[K]; -}; -type DeepRequired1028 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1028 : T[K]; +type Path_1028 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1028}` }[keyof T & string] : never; +type EP_1028 = Path_1028; + +type Val_1028 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1028 } + : T[K] extends object ? { t: 'o'; props: Val_1028 } + : { t: 'u' }; }; -type FR1028 = DeepReadonly1028>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1028 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1028 = Extract; -type ExcludeZulu1028 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1028 { width: number; height: number; depth: number } -interface ShapeB1028 { color: string; opacity: number; blend: string } -interface ShapeC1028 { x: number; y: number; z: number; w: number } -interface ShapeD1028 { label: string; title: string; summary: string } - -type Combined1028 = ShapeA1028 & ShapeB1028 & ShapeC1028 & ShapeD1028; -type OptionalAll1028 = { [K in keyof Combined1028]?: Combined1028[K] }; -type RequiredAll1028 = { [K in keyof Combined1028]-?: Combined1028[K] }; -type ReadonlyAll1028 = { readonly [K in keyof Combined1028]: Combined1028[K] }; -type NullableAll1028 = { [K in keyof Combined1028]: Combined1028[K] | null }; +type EV_1028 = Val_1028; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1028 = T extends string ? true : false; -type IsNumber1028 = T extends number ? true : false; -type TypeName1028 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1028 = { - [K in keyof BigRecord1028]: TypeName1028; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1028 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1028 = "user" | "post" | "comment" | "tag" | "category"; -type Action1028 = `${Verb1028}_${Resource1028}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1028 = T extends Promise ? UnwrapPromise1028 : T; -type UnwrapArray1028 = T extends (infer U)[] ? UnwrapArray1028 : T; -type Head1028 = T extends [infer H, ...infer _] ? H : never; -type Tail1028 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1028 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1028>] - : never; +interface Registry_10_28 { + entities: Map; + validators: EV_1028; + paths: Set; + merged: DeepMerge_1028; +} -type SmallUnion1028 = "a" | "b" | "c" | "d"; -type AllPerms1028 = Permutation1028; +type CK_1028 = `p10.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1028, - Flat1028, - FR1028, - BigUnion1028, - ExtractAlpha1028, - ExcludeZulu1028, - OptionalAll1028, - RequiredAll1028, - ReadonlyAll1028, - NullableAll1028, - TypeNames1028, - Action1028, - AllPerms1028, -}; +export type { Entity_10_28, Registry_10_28, CK_1028, EP_1028, EV_1028, DeepMerge_1028 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts index 773b2eba..ad868576 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-29.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-29 (seed 1029) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-29 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1029 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1029 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1029 { - a1029: { x: number; y: string; z: boolean }; - b1029: { p: string[]; q: Record }; - c1029: { nested: { deep: { deeper: { deepest: string } } } }; - d1029: number; - e1029: string; - f1029: boolean; - g1029: null; - h1029: undefined; - i1029: bigint; - j1029: symbol; +interface Entity_10_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_29 | null; children: Entity_10_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1029: number; y1029: string; z1029: boolean }; } -type PartialBig1029 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1029 = T extends Array ? Flatten1029 : T; -type Nested1029 = number[][][][][][][][][][]; -type Flat1029 = Flatten1029; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1029 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1029 : T[K]; -}; -type DeepRequired1029 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1029 : T[K]; +type Path_1029 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1029}` }[keyof T & string] : never; +type EP_1029 = Path_1029; + +type Val_1029 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1029 } + : T[K] extends object ? { t: 'o'; props: Val_1029 } + : { t: 'u' }; }; -type FR1029 = DeepReadonly1029>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1029 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1029 = Extract; -type ExcludeZulu1029 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1029 { width: number; height: number; depth: number } -interface ShapeB1029 { color: string; opacity: number; blend: string } -interface ShapeC1029 { x: number; y: number; z: number; w: number } -interface ShapeD1029 { label: string; title: string; summary: string } - -type Combined1029 = ShapeA1029 & ShapeB1029 & ShapeC1029 & ShapeD1029; -type OptionalAll1029 = { [K in keyof Combined1029]?: Combined1029[K] }; -type RequiredAll1029 = { [K in keyof Combined1029]-?: Combined1029[K] }; -type ReadonlyAll1029 = { readonly [K in keyof Combined1029]: Combined1029[K] }; -type NullableAll1029 = { [K in keyof Combined1029]: Combined1029[K] | null }; +type EV_1029 = Val_1029; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1029 = T extends string ? true : false; -type IsNumber1029 = T extends number ? true : false; -type TypeName1029 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1029 = { - [K in keyof BigRecord1029]: TypeName1029; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1029 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1029 = "user" | "post" | "comment" | "tag" | "category"; -type Action1029 = `${Verb1029}_${Resource1029}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1029 = T extends Promise ? UnwrapPromise1029 : T; -type UnwrapArray1029 = T extends (infer U)[] ? UnwrapArray1029 : T; -type Head1029 = T extends [infer H, ...infer _] ? H : never; -type Tail1029 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1029 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1029>] - : never; +interface Registry_10_29 { + entities: Map; + validators: EV_1029; + paths: Set; + merged: DeepMerge_1029; +} -type SmallUnion1029 = "a" | "b" | "c" | "d"; -type AllPerms1029 = Permutation1029; +type CK_1029 = `p10.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1029, - Flat1029, - FR1029, - BigUnion1029, - ExtractAlpha1029, - ExcludeZulu1029, - OptionalAll1029, - RequiredAll1029, - ReadonlyAll1029, - NullableAll1029, - TypeNames1029, - Action1029, - AllPerms1029, -}; +export type { Entity_10_29, Registry_10_29, CK_1029, EP_1029, EV_1029, DeepMerge_1029 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts index 7dc4e4bf..36287a79 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-30.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-30 (seed 1030) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-30 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1030 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1030 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1030 { - a1030: { x: number; y: string; z: boolean }; - b1030: { p: string[]; q: Record }; - c1030: { nested: { deep: { deeper: { deepest: string } } } }; - d1030: number; - e1030: string; - f1030: boolean; - g1030: null; - h1030: undefined; - i1030: bigint; - j1030: symbol; +interface Entity_10_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_30 | null; children: Entity_10_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1030: number; y1030: string; z1030: boolean }; } -type PartialBig1030 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1030 = T extends Array ? Flatten1030 : T; -type Nested1030 = number[][][][][][][][][][]; -type Flat1030 = Flatten1030; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1030 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1030 : T[K]; -}; -type DeepRequired1030 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1030 : T[K]; +type Path_1030 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1030}` }[keyof T & string] : never; +type EP_1030 = Path_1030; + +type Val_1030 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1030 } + : T[K] extends object ? { t: 'o'; props: Val_1030 } + : { t: 'u' }; }; -type FR1030 = DeepReadonly1030>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1030 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1030 = Extract; -type ExcludeZulu1030 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1030 { width: number; height: number; depth: number } -interface ShapeB1030 { color: string; opacity: number; blend: string } -interface ShapeC1030 { x: number; y: number; z: number; w: number } -interface ShapeD1030 { label: string; title: string; summary: string } - -type Combined1030 = ShapeA1030 & ShapeB1030 & ShapeC1030 & ShapeD1030; -type OptionalAll1030 = { [K in keyof Combined1030]?: Combined1030[K] }; -type RequiredAll1030 = { [K in keyof Combined1030]-?: Combined1030[K] }; -type ReadonlyAll1030 = { readonly [K in keyof Combined1030]: Combined1030[K] }; -type NullableAll1030 = { [K in keyof Combined1030]: Combined1030[K] | null }; +type EV_1030 = Val_1030; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1030 = T extends string ? true : false; -type IsNumber1030 = T extends number ? true : false; -type TypeName1030 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1030 = { - [K in keyof BigRecord1030]: TypeName1030; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1030 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1030 = "user" | "post" | "comment" | "tag" | "category"; -type Action1030 = `${Verb1030}_${Resource1030}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1030 = T extends Promise ? UnwrapPromise1030 : T; -type UnwrapArray1030 = T extends (infer U)[] ? UnwrapArray1030 : T; -type Head1030 = T extends [infer H, ...infer _] ? H : never; -type Tail1030 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1030 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1030>] - : never; +interface Registry_10_30 { + entities: Map; + validators: EV_1030; + paths: Set; + merged: DeepMerge_1030; +} -type SmallUnion1030 = "a" | "b" | "c" | "d"; -type AllPerms1030 = Permutation1030; +type CK_1030 = `p10.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1030, - Flat1030, - FR1030, - BigUnion1030, - ExtractAlpha1030, - ExcludeZulu1030, - OptionalAll1030, - RequiredAll1030, - ReadonlyAll1030, - NullableAll1030, - TypeNames1030, - Action1030, - AllPerms1030, -}; +export type { Entity_10_30, Registry_10_30, CK_1030, EP_1030, EV_1030, DeepMerge_1030 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts index 9aae997c..4ad60300 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-31.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-31 (seed 1031) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-31 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1031 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1031 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1031 { - a1031: { x: number; y: string; z: boolean }; - b1031: { p: string[]; q: Record }; - c1031: { nested: { deep: { deeper: { deepest: string } } } }; - d1031: number; - e1031: string; - f1031: boolean; - g1031: null; - h1031: undefined; - i1031: bigint; - j1031: symbol; +interface Entity_10_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_31 | null; children: Entity_10_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1031: number; y1031: string; z1031: boolean }; } -type PartialBig1031 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1031 = T extends Array ? Flatten1031 : T; -type Nested1031 = number[][][][][][][][][][]; -type Flat1031 = Flatten1031; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1031 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1031 : T[K]; -}; -type DeepRequired1031 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1031 : T[K]; +type Path_1031 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1031}` }[keyof T & string] : never; +type EP_1031 = Path_1031; + +type Val_1031 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1031 } + : T[K] extends object ? { t: 'o'; props: Val_1031 } + : { t: 'u' }; }; -type FR1031 = DeepReadonly1031>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1031 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1031 = Extract; -type ExcludeZulu1031 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1031 { width: number; height: number; depth: number } -interface ShapeB1031 { color: string; opacity: number; blend: string } -interface ShapeC1031 { x: number; y: number; z: number; w: number } -interface ShapeD1031 { label: string; title: string; summary: string } - -type Combined1031 = ShapeA1031 & ShapeB1031 & ShapeC1031 & ShapeD1031; -type OptionalAll1031 = { [K in keyof Combined1031]?: Combined1031[K] }; -type RequiredAll1031 = { [K in keyof Combined1031]-?: Combined1031[K] }; -type ReadonlyAll1031 = { readonly [K in keyof Combined1031]: Combined1031[K] }; -type NullableAll1031 = { [K in keyof Combined1031]: Combined1031[K] | null }; +type EV_1031 = Val_1031; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1031 = T extends string ? true : false; -type IsNumber1031 = T extends number ? true : false; -type TypeName1031 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1031 = { - [K in keyof BigRecord1031]: TypeName1031; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1031 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1031 = "user" | "post" | "comment" | "tag" | "category"; -type Action1031 = `${Verb1031}_${Resource1031}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1031 = T extends Promise ? UnwrapPromise1031 : T; -type UnwrapArray1031 = T extends (infer U)[] ? UnwrapArray1031 : T; -type Head1031 = T extends [infer H, ...infer _] ? H : never; -type Tail1031 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1031 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1031>] - : never; +interface Registry_10_31 { + entities: Map; + validators: EV_1031; + paths: Set; + merged: DeepMerge_1031; +} -type SmallUnion1031 = "a" | "b" | "c" | "d"; -type AllPerms1031 = Permutation1031; +type CK_1031 = `p10.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1031, - Flat1031, - FR1031, - BigUnion1031, - ExtractAlpha1031, - ExcludeZulu1031, - OptionalAll1031, - RequiredAll1031, - ReadonlyAll1031, - NullableAll1031, - TypeNames1031, - Action1031, - AllPerms1031, -}; +export type { Entity_10_31, Registry_10_31, CK_1031, EP_1031, EV_1031, DeepMerge_1031 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts index c90f4e1b..f657e60d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-32.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-32 (seed 1032) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-32 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1032 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1032 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1032 { - a1032: { x: number; y: string; z: boolean }; - b1032: { p: string[]; q: Record }; - c1032: { nested: { deep: { deeper: { deepest: string } } } }; - d1032: number; - e1032: string; - f1032: boolean; - g1032: null; - h1032: undefined; - i1032: bigint; - j1032: symbol; +interface Entity_10_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_32 | null; children: Entity_10_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1032: number; y1032: string; z1032: boolean }; } -type PartialBig1032 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1032 = T extends Array ? Flatten1032 : T; -type Nested1032 = number[][][][][][][][][][]; -type Flat1032 = Flatten1032; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1032 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1032 : T[K]; -}; -type DeepRequired1032 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1032 : T[K]; +type Path_1032 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1032}` }[keyof T & string] : never; +type EP_1032 = Path_1032; + +type Val_1032 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1032 } + : T[K] extends object ? { t: 'o'; props: Val_1032 } + : { t: 'u' }; }; -type FR1032 = DeepReadonly1032>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1032 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1032 = Extract; -type ExcludeZulu1032 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1032 { width: number; height: number; depth: number } -interface ShapeB1032 { color: string; opacity: number; blend: string } -interface ShapeC1032 { x: number; y: number; z: number; w: number } -interface ShapeD1032 { label: string; title: string; summary: string } - -type Combined1032 = ShapeA1032 & ShapeB1032 & ShapeC1032 & ShapeD1032; -type OptionalAll1032 = { [K in keyof Combined1032]?: Combined1032[K] }; -type RequiredAll1032 = { [K in keyof Combined1032]-?: Combined1032[K] }; -type ReadonlyAll1032 = { readonly [K in keyof Combined1032]: Combined1032[K] }; -type NullableAll1032 = { [K in keyof Combined1032]: Combined1032[K] | null }; +type EV_1032 = Val_1032; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1032 = T extends string ? true : false; -type IsNumber1032 = T extends number ? true : false; -type TypeName1032 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1032 = { - [K in keyof BigRecord1032]: TypeName1032; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1032 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1032 = "user" | "post" | "comment" | "tag" | "category"; -type Action1032 = `${Verb1032}_${Resource1032}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1032 = T extends Promise ? UnwrapPromise1032 : T; -type UnwrapArray1032 = T extends (infer U)[] ? UnwrapArray1032 : T; -type Head1032 = T extends [infer H, ...infer _] ? H : never; -type Tail1032 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1032 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1032>] - : never; +interface Registry_10_32 { + entities: Map; + validators: EV_1032; + paths: Set; + merged: DeepMerge_1032; +} -type SmallUnion1032 = "a" | "b" | "c" | "d"; -type AllPerms1032 = Permutation1032; +type CK_1032 = `p10.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1032, - Flat1032, - FR1032, - BigUnion1032, - ExtractAlpha1032, - ExcludeZulu1032, - OptionalAll1032, - RequiredAll1032, - ReadonlyAll1032, - NullableAll1032, - TypeNames1032, - Action1032, - AllPerms1032, -}; +export type { Entity_10_32, Registry_10_32, CK_1032, EP_1032, EV_1032, DeepMerge_1032 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts index 20c880d7..b3ac45ce 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-33.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-33 (seed 1033) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-33 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1033 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1033 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1033 { - a1033: { x: number; y: string; z: boolean }; - b1033: { p: string[]; q: Record }; - c1033: { nested: { deep: { deeper: { deepest: string } } } }; - d1033: number; - e1033: string; - f1033: boolean; - g1033: null; - h1033: undefined; - i1033: bigint; - j1033: symbol; +interface Entity_10_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_33 | null; children: Entity_10_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1033: number; y1033: string; z1033: boolean }; } -type PartialBig1033 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1033 = T extends Array ? Flatten1033 : T; -type Nested1033 = number[][][][][][][][][][]; -type Flat1033 = Flatten1033; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1033 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1033 : T[K]; -}; -type DeepRequired1033 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1033 : T[K]; +type Path_1033 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1033}` }[keyof T & string] : never; +type EP_1033 = Path_1033; + +type Val_1033 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1033 } + : T[K] extends object ? { t: 'o'; props: Val_1033 } + : { t: 'u' }; }; -type FR1033 = DeepReadonly1033>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1033 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1033 = Extract; -type ExcludeZulu1033 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1033 { width: number; height: number; depth: number } -interface ShapeB1033 { color: string; opacity: number; blend: string } -interface ShapeC1033 { x: number; y: number; z: number; w: number } -interface ShapeD1033 { label: string; title: string; summary: string } - -type Combined1033 = ShapeA1033 & ShapeB1033 & ShapeC1033 & ShapeD1033; -type OptionalAll1033 = { [K in keyof Combined1033]?: Combined1033[K] }; -type RequiredAll1033 = { [K in keyof Combined1033]-?: Combined1033[K] }; -type ReadonlyAll1033 = { readonly [K in keyof Combined1033]: Combined1033[K] }; -type NullableAll1033 = { [K in keyof Combined1033]: Combined1033[K] | null }; +type EV_1033 = Val_1033; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1033 = T extends string ? true : false; -type IsNumber1033 = T extends number ? true : false; -type TypeName1033 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1033 = { - [K in keyof BigRecord1033]: TypeName1033; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1033 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1033 = "user" | "post" | "comment" | "tag" | "category"; -type Action1033 = `${Verb1033}_${Resource1033}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1033 = T extends Promise ? UnwrapPromise1033 : T; -type UnwrapArray1033 = T extends (infer U)[] ? UnwrapArray1033 : T; -type Head1033 = T extends [infer H, ...infer _] ? H : never; -type Tail1033 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1033 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1033>] - : never; +interface Registry_10_33 { + entities: Map; + validators: EV_1033; + paths: Set; + merged: DeepMerge_1033; +} -type SmallUnion1033 = "a" | "b" | "c" | "d"; -type AllPerms1033 = Permutation1033; +type CK_1033 = `p10.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1033, - Flat1033, - FR1033, - BigUnion1033, - ExtractAlpha1033, - ExcludeZulu1033, - OptionalAll1033, - RequiredAll1033, - ReadonlyAll1033, - NullableAll1033, - TypeNames1033, - Action1033, - AllPerms1033, -}; +export type { Entity_10_33, Registry_10_33, CK_1033, EP_1033, EV_1033, DeepMerge_1033 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts index a553ca55..a4d8941a 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-34.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-34 (seed 1034) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-34 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1034 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1034 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1034 { - a1034: { x: number; y: string; z: boolean }; - b1034: { p: string[]; q: Record }; - c1034: { nested: { deep: { deeper: { deepest: string } } } }; - d1034: number; - e1034: string; - f1034: boolean; - g1034: null; - h1034: undefined; - i1034: bigint; - j1034: symbol; +interface Entity_10_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_34 | null; children: Entity_10_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1034: number; y1034: string; z1034: boolean }; } -type PartialBig1034 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1034 = T extends Array ? Flatten1034 : T; -type Nested1034 = number[][][][][][][][][][]; -type Flat1034 = Flatten1034; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1034 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1034 : T[K]; -}; -type DeepRequired1034 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1034 : T[K]; +type Path_1034 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1034}` }[keyof T & string] : never; +type EP_1034 = Path_1034; + +type Val_1034 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1034 } + : T[K] extends object ? { t: 'o'; props: Val_1034 } + : { t: 'u' }; }; -type FR1034 = DeepReadonly1034>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1034 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1034 = Extract; -type ExcludeZulu1034 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1034 { width: number; height: number; depth: number } -interface ShapeB1034 { color: string; opacity: number; blend: string } -interface ShapeC1034 { x: number; y: number; z: number; w: number } -interface ShapeD1034 { label: string; title: string; summary: string } - -type Combined1034 = ShapeA1034 & ShapeB1034 & ShapeC1034 & ShapeD1034; -type OptionalAll1034 = { [K in keyof Combined1034]?: Combined1034[K] }; -type RequiredAll1034 = { [K in keyof Combined1034]-?: Combined1034[K] }; -type ReadonlyAll1034 = { readonly [K in keyof Combined1034]: Combined1034[K] }; -type NullableAll1034 = { [K in keyof Combined1034]: Combined1034[K] | null }; +type EV_1034 = Val_1034; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1034 = T extends string ? true : false; -type IsNumber1034 = T extends number ? true : false; -type TypeName1034 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1034 = { - [K in keyof BigRecord1034]: TypeName1034; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1034 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1034 = "user" | "post" | "comment" | "tag" | "category"; -type Action1034 = `${Verb1034}_${Resource1034}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1034 = T extends Promise ? UnwrapPromise1034 : T; -type UnwrapArray1034 = T extends (infer U)[] ? UnwrapArray1034 : T; -type Head1034 = T extends [infer H, ...infer _] ? H : never; -type Tail1034 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1034 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1034>] - : never; +interface Registry_10_34 { + entities: Map; + validators: EV_1034; + paths: Set; + merged: DeepMerge_1034; +} -type SmallUnion1034 = "a" | "b" | "c" | "d"; -type AllPerms1034 = Permutation1034; +type CK_1034 = `p10.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1034, - Flat1034, - FR1034, - BigUnion1034, - ExtractAlpha1034, - ExcludeZulu1034, - OptionalAll1034, - RequiredAll1034, - ReadonlyAll1034, - NullableAll1034, - TypeNames1034, - Action1034, - AllPerms1034, -}; +export type { Entity_10_34, Registry_10_34, CK_1034, EP_1034, EV_1034, DeepMerge_1034 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts index bbae1e43..7579594d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-35.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-35 (seed 1035) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-35 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1035 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1035 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1035 { - a1035: { x: number; y: string; z: boolean }; - b1035: { p: string[]; q: Record }; - c1035: { nested: { deep: { deeper: { deepest: string } } } }; - d1035: number; - e1035: string; - f1035: boolean; - g1035: null; - h1035: undefined; - i1035: bigint; - j1035: symbol; +interface Entity_10_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_35 | null; children: Entity_10_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1035: number; y1035: string; z1035: boolean }; } -type PartialBig1035 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1035 = T extends Array ? Flatten1035 : T; -type Nested1035 = number[][][][][][][][][][]; -type Flat1035 = Flatten1035; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1035 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1035 : T[K]; -}; -type DeepRequired1035 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1035 : T[K]; +type Path_1035 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1035}` }[keyof T & string] : never; +type EP_1035 = Path_1035; + +type Val_1035 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1035 } + : T[K] extends object ? { t: 'o'; props: Val_1035 } + : { t: 'u' }; }; -type FR1035 = DeepReadonly1035>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1035 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1035 = Extract; -type ExcludeZulu1035 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1035 { width: number; height: number; depth: number } -interface ShapeB1035 { color: string; opacity: number; blend: string } -interface ShapeC1035 { x: number; y: number; z: number; w: number } -interface ShapeD1035 { label: string; title: string; summary: string } - -type Combined1035 = ShapeA1035 & ShapeB1035 & ShapeC1035 & ShapeD1035; -type OptionalAll1035 = { [K in keyof Combined1035]?: Combined1035[K] }; -type RequiredAll1035 = { [K in keyof Combined1035]-?: Combined1035[K] }; -type ReadonlyAll1035 = { readonly [K in keyof Combined1035]: Combined1035[K] }; -type NullableAll1035 = { [K in keyof Combined1035]: Combined1035[K] | null }; +type EV_1035 = Val_1035; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1035 = T extends string ? true : false; -type IsNumber1035 = T extends number ? true : false; -type TypeName1035 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1035 = { - [K in keyof BigRecord1035]: TypeName1035; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1035 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1035 = "user" | "post" | "comment" | "tag" | "category"; -type Action1035 = `${Verb1035}_${Resource1035}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1035 = T extends Promise ? UnwrapPromise1035 : T; -type UnwrapArray1035 = T extends (infer U)[] ? UnwrapArray1035 : T; -type Head1035 = T extends [infer H, ...infer _] ? H : never; -type Tail1035 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1035 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1035>] - : never; +interface Registry_10_35 { + entities: Map; + validators: EV_1035; + paths: Set; + merged: DeepMerge_1035; +} -type SmallUnion1035 = "a" | "b" | "c" | "d"; -type AllPerms1035 = Permutation1035; +type CK_1035 = `p10.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1035, - Flat1035, - FR1035, - BigUnion1035, - ExtractAlpha1035, - ExcludeZulu1035, - OptionalAll1035, - RequiredAll1035, - ReadonlyAll1035, - NullableAll1035, - TypeNames1035, - Action1035, - AllPerms1035, -}; +export type { Entity_10_35, Registry_10_35, CK_1035, EP_1035, EV_1035, DeepMerge_1035 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts index 5b947d9f..cd81b4da 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-36.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-36 (seed 1036) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-36 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1036 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1036 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1036 { - a1036: { x: number; y: string; z: boolean }; - b1036: { p: string[]; q: Record }; - c1036: { nested: { deep: { deeper: { deepest: string } } } }; - d1036: number; - e1036: string; - f1036: boolean; - g1036: null; - h1036: undefined; - i1036: bigint; - j1036: symbol; +interface Entity_10_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_36 | null; children: Entity_10_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1036: number; y1036: string; z1036: boolean }; } -type PartialBig1036 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1036 = T extends Array ? Flatten1036 : T; -type Nested1036 = number[][][][][][][][][][]; -type Flat1036 = Flatten1036; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1036 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1036 : T[K]; -}; -type DeepRequired1036 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1036 : T[K]; +type Path_1036 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1036}` }[keyof T & string] : never; +type EP_1036 = Path_1036; + +type Val_1036 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1036 } + : T[K] extends object ? { t: 'o'; props: Val_1036 } + : { t: 'u' }; }; -type FR1036 = DeepReadonly1036>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1036 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1036 = Extract; -type ExcludeZulu1036 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1036 { width: number; height: number; depth: number } -interface ShapeB1036 { color: string; opacity: number; blend: string } -interface ShapeC1036 { x: number; y: number; z: number; w: number } -interface ShapeD1036 { label: string; title: string; summary: string } - -type Combined1036 = ShapeA1036 & ShapeB1036 & ShapeC1036 & ShapeD1036; -type OptionalAll1036 = { [K in keyof Combined1036]?: Combined1036[K] }; -type RequiredAll1036 = { [K in keyof Combined1036]-?: Combined1036[K] }; -type ReadonlyAll1036 = { readonly [K in keyof Combined1036]: Combined1036[K] }; -type NullableAll1036 = { [K in keyof Combined1036]: Combined1036[K] | null }; +type EV_1036 = Val_1036; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1036 = T extends string ? true : false; -type IsNumber1036 = T extends number ? true : false; -type TypeName1036 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1036 = { - [K in keyof BigRecord1036]: TypeName1036; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1036 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1036 = "user" | "post" | "comment" | "tag" | "category"; -type Action1036 = `${Verb1036}_${Resource1036}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1036 = T extends Promise ? UnwrapPromise1036 : T; -type UnwrapArray1036 = T extends (infer U)[] ? UnwrapArray1036 : T; -type Head1036 = T extends [infer H, ...infer _] ? H : never; -type Tail1036 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1036 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1036>] - : never; +interface Registry_10_36 { + entities: Map; + validators: EV_1036; + paths: Set; + merged: DeepMerge_1036; +} -type SmallUnion1036 = "a" | "b" | "c" | "d"; -type AllPerms1036 = Permutation1036; +type CK_1036 = `p10.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1036, - Flat1036, - FR1036, - BigUnion1036, - ExtractAlpha1036, - ExcludeZulu1036, - OptionalAll1036, - RequiredAll1036, - ReadonlyAll1036, - NullableAll1036, - TypeNames1036, - Action1036, - AllPerms1036, -}; +export type { Entity_10_36, Registry_10_36, CK_1036, EP_1036, EV_1036, DeepMerge_1036 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts index 3d20ded1..438b7b08 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-37.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-37 (seed 1037) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-37 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1037 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1037 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1037 { - a1037: { x: number; y: string; z: boolean }; - b1037: { p: string[]; q: Record }; - c1037: { nested: { deep: { deeper: { deepest: string } } } }; - d1037: number; - e1037: string; - f1037: boolean; - g1037: null; - h1037: undefined; - i1037: bigint; - j1037: symbol; +interface Entity_10_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_37 | null; children: Entity_10_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1037: number; y1037: string; z1037: boolean }; } -type PartialBig1037 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1037 = T extends Array ? Flatten1037 : T; -type Nested1037 = number[][][][][][][][][][]; -type Flat1037 = Flatten1037; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1037 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1037 : T[K]; -}; -type DeepRequired1037 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1037 : T[K]; +type Path_1037 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1037}` }[keyof T & string] : never; +type EP_1037 = Path_1037; + +type Val_1037 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1037 } + : T[K] extends object ? { t: 'o'; props: Val_1037 } + : { t: 'u' }; }; -type FR1037 = DeepReadonly1037>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1037 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1037 = Extract; -type ExcludeZulu1037 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1037 { width: number; height: number; depth: number } -interface ShapeB1037 { color: string; opacity: number; blend: string } -interface ShapeC1037 { x: number; y: number; z: number; w: number } -interface ShapeD1037 { label: string; title: string; summary: string } - -type Combined1037 = ShapeA1037 & ShapeB1037 & ShapeC1037 & ShapeD1037; -type OptionalAll1037 = { [K in keyof Combined1037]?: Combined1037[K] }; -type RequiredAll1037 = { [K in keyof Combined1037]-?: Combined1037[K] }; -type ReadonlyAll1037 = { readonly [K in keyof Combined1037]: Combined1037[K] }; -type NullableAll1037 = { [K in keyof Combined1037]: Combined1037[K] | null }; +type EV_1037 = Val_1037; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1037 = T extends string ? true : false; -type IsNumber1037 = T extends number ? true : false; -type TypeName1037 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1037 = { - [K in keyof BigRecord1037]: TypeName1037; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1037 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1037 = "user" | "post" | "comment" | "tag" | "category"; -type Action1037 = `${Verb1037}_${Resource1037}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1037 = T extends Promise ? UnwrapPromise1037 : T; -type UnwrapArray1037 = T extends (infer U)[] ? UnwrapArray1037 : T; -type Head1037 = T extends [infer H, ...infer _] ? H : never; -type Tail1037 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1037 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1037>] - : never; +interface Registry_10_37 { + entities: Map; + validators: EV_1037; + paths: Set; + merged: DeepMerge_1037; +} -type SmallUnion1037 = "a" | "b" | "c" | "d"; -type AllPerms1037 = Permutation1037; +type CK_1037 = `p10.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1037, - Flat1037, - FR1037, - BigUnion1037, - ExtractAlpha1037, - ExcludeZulu1037, - OptionalAll1037, - RequiredAll1037, - ReadonlyAll1037, - NullableAll1037, - TypeNames1037, - Action1037, - AllPerms1037, -}; +export type { Entity_10_37, Registry_10_37, CK_1037, EP_1037, EV_1037, DeepMerge_1037 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts index 23447763..614da5fe 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-38.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-38 (seed 1038) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-38 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1038 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1038 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1038 { - a1038: { x: number; y: string; z: boolean }; - b1038: { p: string[]; q: Record }; - c1038: { nested: { deep: { deeper: { deepest: string } } } }; - d1038: number; - e1038: string; - f1038: boolean; - g1038: null; - h1038: undefined; - i1038: bigint; - j1038: symbol; +interface Entity_10_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_38 | null; children: Entity_10_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1038: number; y1038: string; z1038: boolean }; } -type PartialBig1038 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1038 = T extends Array ? Flatten1038 : T; -type Nested1038 = number[][][][][][][][][][]; -type Flat1038 = Flatten1038; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1038 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1038 : T[K]; -}; -type DeepRequired1038 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1038 : T[K]; +type Path_1038 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1038}` }[keyof T & string] : never; +type EP_1038 = Path_1038; + +type Val_1038 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1038 } + : T[K] extends object ? { t: 'o'; props: Val_1038 } + : { t: 'u' }; }; -type FR1038 = DeepReadonly1038>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1038 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1038 = Extract; -type ExcludeZulu1038 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1038 { width: number; height: number; depth: number } -interface ShapeB1038 { color: string; opacity: number; blend: string } -interface ShapeC1038 { x: number; y: number; z: number; w: number } -interface ShapeD1038 { label: string; title: string; summary: string } - -type Combined1038 = ShapeA1038 & ShapeB1038 & ShapeC1038 & ShapeD1038; -type OptionalAll1038 = { [K in keyof Combined1038]?: Combined1038[K] }; -type RequiredAll1038 = { [K in keyof Combined1038]-?: Combined1038[K] }; -type ReadonlyAll1038 = { readonly [K in keyof Combined1038]: Combined1038[K] }; -type NullableAll1038 = { [K in keyof Combined1038]: Combined1038[K] | null }; +type EV_1038 = Val_1038; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1038 = T extends string ? true : false; -type IsNumber1038 = T extends number ? true : false; -type TypeName1038 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1038 = { - [K in keyof BigRecord1038]: TypeName1038; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1038 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1038 = "user" | "post" | "comment" | "tag" | "category"; -type Action1038 = `${Verb1038}_${Resource1038}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1038 = T extends Promise ? UnwrapPromise1038 : T; -type UnwrapArray1038 = T extends (infer U)[] ? UnwrapArray1038 : T; -type Head1038 = T extends [infer H, ...infer _] ? H : never; -type Tail1038 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1038 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1038>] - : never; +interface Registry_10_38 { + entities: Map; + validators: EV_1038; + paths: Set; + merged: DeepMerge_1038; +} -type SmallUnion1038 = "a" | "b" | "c" | "d"; -type AllPerms1038 = Permutation1038; +type CK_1038 = `p10.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1038, - Flat1038, - FR1038, - BigUnion1038, - ExtractAlpha1038, - ExcludeZulu1038, - OptionalAll1038, - RequiredAll1038, - ReadonlyAll1038, - NullableAll1038, - TypeNames1038, - Action1038, - AllPerms1038, -}; +export type { Entity_10_38, Registry_10_38, CK_1038, EP_1038, EV_1038, DeepMerge_1038 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts index a930b032..f765107d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-39.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-39 (seed 1039) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-39 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1039 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1039 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1039 { - a1039: { x: number; y: string; z: boolean }; - b1039: { p: string[]; q: Record }; - c1039: { nested: { deep: { deeper: { deepest: string } } } }; - d1039: number; - e1039: string; - f1039: boolean; - g1039: null; - h1039: undefined; - i1039: bigint; - j1039: symbol; +interface Entity_10_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_39 | null; children: Entity_10_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1039: number; y1039: string; z1039: boolean }; } -type PartialBig1039 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1039 = T extends Array ? Flatten1039 : T; -type Nested1039 = number[][][][][][][][][][]; -type Flat1039 = Flatten1039; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1039 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1039 : T[K]; -}; -type DeepRequired1039 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1039 : T[K]; +type Path_1039 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1039}` }[keyof T & string] : never; +type EP_1039 = Path_1039; + +type Val_1039 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1039 } + : T[K] extends object ? { t: 'o'; props: Val_1039 } + : { t: 'u' }; }; -type FR1039 = DeepReadonly1039>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1039 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1039 = Extract; -type ExcludeZulu1039 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1039 { width: number; height: number; depth: number } -interface ShapeB1039 { color: string; opacity: number; blend: string } -interface ShapeC1039 { x: number; y: number; z: number; w: number } -interface ShapeD1039 { label: string; title: string; summary: string } - -type Combined1039 = ShapeA1039 & ShapeB1039 & ShapeC1039 & ShapeD1039; -type OptionalAll1039 = { [K in keyof Combined1039]?: Combined1039[K] }; -type RequiredAll1039 = { [K in keyof Combined1039]-?: Combined1039[K] }; -type ReadonlyAll1039 = { readonly [K in keyof Combined1039]: Combined1039[K] }; -type NullableAll1039 = { [K in keyof Combined1039]: Combined1039[K] | null }; +type EV_1039 = Val_1039; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1039 = T extends string ? true : false; -type IsNumber1039 = T extends number ? true : false; -type TypeName1039 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1039 = { - [K in keyof BigRecord1039]: TypeName1039; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1039 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1039 = "user" | "post" | "comment" | "tag" | "category"; -type Action1039 = `${Verb1039}_${Resource1039}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1039 = T extends Promise ? UnwrapPromise1039 : T; -type UnwrapArray1039 = T extends (infer U)[] ? UnwrapArray1039 : T; -type Head1039 = T extends [infer H, ...infer _] ? H : never; -type Tail1039 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1039 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1039>] - : never; +interface Registry_10_39 { + entities: Map; + validators: EV_1039; + paths: Set; + merged: DeepMerge_1039; +} -type SmallUnion1039 = "a" | "b" | "c" | "d"; -type AllPerms1039 = Permutation1039; +type CK_1039 = `p10.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1039, - Flat1039, - FR1039, - BigUnion1039, - ExtractAlpha1039, - ExcludeZulu1039, - OptionalAll1039, - RequiredAll1039, - ReadonlyAll1039, - NullableAll1039, - TypeNames1039, - Action1039, - AllPerms1039, -}; +export type { Entity_10_39, Registry_10_39, CK_1039, EP_1039, EV_1039, DeepMerge_1039 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts index 0a0e501b..e0b07a1d 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-40.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-40 (seed 1040) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-40 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1040 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1040 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1040 { - a1040: { x: number; y: string; z: boolean }; - b1040: { p: string[]; q: Record }; - c1040: { nested: { deep: { deeper: { deepest: string } } } }; - d1040: number; - e1040: string; - f1040: boolean; - g1040: null; - h1040: undefined; - i1040: bigint; - j1040: symbol; +interface Entity_10_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_40 | null; children: Entity_10_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1040: number; y1040: string; z1040: boolean }; } -type PartialBig1040 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1040 = T extends Array ? Flatten1040 : T; -type Nested1040 = number[][][][][][][][][][]; -type Flat1040 = Flatten1040; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1040 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1040 : T[K]; -}; -type DeepRequired1040 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1040 : T[K]; +type Path_1040 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1040}` }[keyof T & string] : never; +type EP_1040 = Path_1040; + +type Val_1040 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1040 } + : T[K] extends object ? { t: 'o'; props: Val_1040 } + : { t: 'u' }; }; -type FR1040 = DeepReadonly1040>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1040 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1040 = Extract; -type ExcludeZulu1040 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1040 { width: number; height: number; depth: number } -interface ShapeB1040 { color: string; opacity: number; blend: string } -interface ShapeC1040 { x: number; y: number; z: number; w: number } -interface ShapeD1040 { label: string; title: string; summary: string } - -type Combined1040 = ShapeA1040 & ShapeB1040 & ShapeC1040 & ShapeD1040; -type OptionalAll1040 = { [K in keyof Combined1040]?: Combined1040[K] }; -type RequiredAll1040 = { [K in keyof Combined1040]-?: Combined1040[K] }; -type ReadonlyAll1040 = { readonly [K in keyof Combined1040]: Combined1040[K] }; -type NullableAll1040 = { [K in keyof Combined1040]: Combined1040[K] | null }; +type EV_1040 = Val_1040; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1040 = T extends string ? true : false; -type IsNumber1040 = T extends number ? true : false; -type TypeName1040 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1040 = { - [K in keyof BigRecord1040]: TypeName1040; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1040 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1040 = "user" | "post" | "comment" | "tag" | "category"; -type Action1040 = `${Verb1040}_${Resource1040}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1040 = T extends Promise ? UnwrapPromise1040 : T; -type UnwrapArray1040 = T extends (infer U)[] ? UnwrapArray1040 : T; -type Head1040 = T extends [infer H, ...infer _] ? H : never; -type Tail1040 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1040 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1040>] - : never; +interface Registry_10_40 { + entities: Map; + validators: EV_1040; + paths: Set; + merged: DeepMerge_1040; +} -type SmallUnion1040 = "a" | "b" | "c" | "d"; -type AllPerms1040 = Permutation1040; +type CK_1040 = `p10.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1040, - Flat1040, - FR1040, - BigUnion1040, - ExtractAlpha1040, - ExcludeZulu1040, - OptionalAll1040, - RequiredAll1040, - ReadonlyAll1040, - NullableAll1040, - TypeNames1040, - Action1040, - AllPerms1040, -}; +export type { Entity_10_40, Registry_10_40, CK_1040, EP_1040, EV_1040, DeepMerge_1040 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts index 7395abaa..22a477a3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-41.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-41 (seed 1041) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-41 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1041 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1041 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1041 { - a1041: { x: number; y: string; z: boolean }; - b1041: { p: string[]; q: Record }; - c1041: { nested: { deep: { deeper: { deepest: string } } } }; - d1041: number; - e1041: string; - f1041: boolean; - g1041: null; - h1041: undefined; - i1041: bigint; - j1041: symbol; +interface Entity_10_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_41 | null; children: Entity_10_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1041: number; y1041: string; z1041: boolean }; } -type PartialBig1041 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1041 = T extends Array ? Flatten1041 : T; -type Nested1041 = number[][][][][][][][][][]; -type Flat1041 = Flatten1041; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1041 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1041 : T[K]; -}; -type DeepRequired1041 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1041 : T[K]; +type Path_1041 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1041}` }[keyof T & string] : never; +type EP_1041 = Path_1041; + +type Val_1041 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1041 } + : T[K] extends object ? { t: 'o'; props: Val_1041 } + : { t: 'u' }; }; -type FR1041 = DeepReadonly1041>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1041 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1041 = Extract; -type ExcludeZulu1041 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1041 { width: number; height: number; depth: number } -interface ShapeB1041 { color: string; opacity: number; blend: string } -interface ShapeC1041 { x: number; y: number; z: number; w: number } -interface ShapeD1041 { label: string; title: string; summary: string } - -type Combined1041 = ShapeA1041 & ShapeB1041 & ShapeC1041 & ShapeD1041; -type OptionalAll1041 = { [K in keyof Combined1041]?: Combined1041[K] }; -type RequiredAll1041 = { [K in keyof Combined1041]-?: Combined1041[K] }; -type ReadonlyAll1041 = { readonly [K in keyof Combined1041]: Combined1041[K] }; -type NullableAll1041 = { [K in keyof Combined1041]: Combined1041[K] | null }; +type EV_1041 = Val_1041; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1041 = T extends string ? true : false; -type IsNumber1041 = T extends number ? true : false; -type TypeName1041 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1041 = { - [K in keyof BigRecord1041]: TypeName1041; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1041 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1041 = "user" | "post" | "comment" | "tag" | "category"; -type Action1041 = `${Verb1041}_${Resource1041}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1041 = T extends Promise ? UnwrapPromise1041 : T; -type UnwrapArray1041 = T extends (infer U)[] ? UnwrapArray1041 : T; -type Head1041 = T extends [infer H, ...infer _] ? H : never; -type Tail1041 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1041 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1041>] - : never; +interface Registry_10_41 { + entities: Map; + validators: EV_1041; + paths: Set; + merged: DeepMerge_1041; +} -type SmallUnion1041 = "a" | "b" | "c" | "d"; -type AllPerms1041 = Permutation1041; +type CK_1041 = `p10.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1041, - Flat1041, - FR1041, - BigUnion1041, - ExtractAlpha1041, - ExcludeZulu1041, - OptionalAll1041, - RequiredAll1041, - ReadonlyAll1041, - NullableAll1041, - TypeNames1041, - Action1041, - AllPerms1041, -}; +export type { Entity_10_41, Registry_10_41, CK_1041, EP_1041, EV_1041, DeepMerge_1041 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts index 25db4b0c..9704dab8 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-42.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-42 (seed 1042) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-42 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1042 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1042 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1042 { - a1042: { x: number; y: string; z: boolean }; - b1042: { p: string[]; q: Record }; - c1042: { nested: { deep: { deeper: { deepest: string } } } }; - d1042: number; - e1042: string; - f1042: boolean; - g1042: null; - h1042: undefined; - i1042: bigint; - j1042: symbol; +interface Entity_10_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_42 | null; children: Entity_10_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1042: number; y1042: string; z1042: boolean }; } -type PartialBig1042 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1042 = T extends Array ? Flatten1042 : T; -type Nested1042 = number[][][][][][][][][][]; -type Flat1042 = Flatten1042; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1042 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1042 : T[K]; -}; -type DeepRequired1042 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1042 : T[K]; +type Path_1042 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1042}` }[keyof T & string] : never; +type EP_1042 = Path_1042; + +type Val_1042 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1042 } + : T[K] extends object ? { t: 'o'; props: Val_1042 } + : { t: 'u' }; }; -type FR1042 = DeepReadonly1042>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1042 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1042 = Extract; -type ExcludeZulu1042 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1042 { width: number; height: number; depth: number } -interface ShapeB1042 { color: string; opacity: number; blend: string } -interface ShapeC1042 { x: number; y: number; z: number; w: number } -interface ShapeD1042 { label: string; title: string; summary: string } - -type Combined1042 = ShapeA1042 & ShapeB1042 & ShapeC1042 & ShapeD1042; -type OptionalAll1042 = { [K in keyof Combined1042]?: Combined1042[K] }; -type RequiredAll1042 = { [K in keyof Combined1042]-?: Combined1042[K] }; -type ReadonlyAll1042 = { readonly [K in keyof Combined1042]: Combined1042[K] }; -type NullableAll1042 = { [K in keyof Combined1042]: Combined1042[K] | null }; +type EV_1042 = Val_1042; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1042 = T extends string ? true : false; -type IsNumber1042 = T extends number ? true : false; -type TypeName1042 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1042 = { - [K in keyof BigRecord1042]: TypeName1042; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1042 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1042 = "user" | "post" | "comment" | "tag" | "category"; -type Action1042 = `${Verb1042}_${Resource1042}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1042 = T extends Promise ? UnwrapPromise1042 : T; -type UnwrapArray1042 = T extends (infer U)[] ? UnwrapArray1042 : T; -type Head1042 = T extends [infer H, ...infer _] ? H : never; -type Tail1042 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1042 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1042>] - : never; +interface Registry_10_42 { + entities: Map; + validators: EV_1042; + paths: Set; + merged: DeepMerge_1042; +} -type SmallUnion1042 = "a" | "b" | "c" | "d"; -type AllPerms1042 = Permutation1042; +type CK_1042 = `p10.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1042, - Flat1042, - FR1042, - BigUnion1042, - ExtractAlpha1042, - ExcludeZulu1042, - OptionalAll1042, - RequiredAll1042, - ReadonlyAll1042, - NullableAll1042, - TypeNames1042, - Action1042, - AllPerms1042, -}; +export type { Entity_10_42, Registry_10_42, CK_1042, EP_1042, EV_1042, DeepMerge_1042 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts index 75852a5a..e485dd05 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-43.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-43 (seed 1043) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-43 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1043 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1043 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1043 { - a1043: { x: number; y: string; z: boolean }; - b1043: { p: string[]; q: Record }; - c1043: { nested: { deep: { deeper: { deepest: string } } } }; - d1043: number; - e1043: string; - f1043: boolean; - g1043: null; - h1043: undefined; - i1043: bigint; - j1043: symbol; +interface Entity_10_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_43 | null; children: Entity_10_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1043: number; y1043: string; z1043: boolean }; } -type PartialBig1043 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1043 = T extends Array ? Flatten1043 : T; -type Nested1043 = number[][][][][][][][][][]; -type Flat1043 = Flatten1043; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1043 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1043 : T[K]; -}; -type DeepRequired1043 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1043 : T[K]; +type Path_1043 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1043}` }[keyof T & string] : never; +type EP_1043 = Path_1043; + +type Val_1043 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1043 } + : T[K] extends object ? { t: 'o'; props: Val_1043 } + : { t: 'u' }; }; -type FR1043 = DeepReadonly1043>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1043 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1043 = Extract; -type ExcludeZulu1043 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1043 { width: number; height: number; depth: number } -interface ShapeB1043 { color: string; opacity: number; blend: string } -interface ShapeC1043 { x: number; y: number; z: number; w: number } -interface ShapeD1043 { label: string; title: string; summary: string } - -type Combined1043 = ShapeA1043 & ShapeB1043 & ShapeC1043 & ShapeD1043; -type OptionalAll1043 = { [K in keyof Combined1043]?: Combined1043[K] }; -type RequiredAll1043 = { [K in keyof Combined1043]-?: Combined1043[K] }; -type ReadonlyAll1043 = { readonly [K in keyof Combined1043]: Combined1043[K] }; -type NullableAll1043 = { [K in keyof Combined1043]: Combined1043[K] | null }; +type EV_1043 = Val_1043; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1043 = T extends string ? true : false; -type IsNumber1043 = T extends number ? true : false; -type TypeName1043 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1043 = { - [K in keyof BigRecord1043]: TypeName1043; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1043 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1043 = "user" | "post" | "comment" | "tag" | "category"; -type Action1043 = `${Verb1043}_${Resource1043}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1043 = T extends Promise ? UnwrapPromise1043 : T; -type UnwrapArray1043 = T extends (infer U)[] ? UnwrapArray1043 : T; -type Head1043 = T extends [infer H, ...infer _] ? H : never; -type Tail1043 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1043 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1043>] - : never; +interface Registry_10_43 { + entities: Map; + validators: EV_1043; + paths: Set; + merged: DeepMerge_1043; +} -type SmallUnion1043 = "a" | "b" | "c" | "d"; -type AllPerms1043 = Permutation1043; +type CK_1043 = `p10.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1043, - Flat1043, - FR1043, - BigUnion1043, - ExtractAlpha1043, - ExcludeZulu1043, - OptionalAll1043, - RequiredAll1043, - ReadonlyAll1043, - NullableAll1043, - TypeNames1043, - Action1043, - AllPerms1043, -}; +export type { Entity_10_43, Registry_10_43, CK_1043, EP_1043, EV_1043, DeepMerge_1043 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts index c4a1b69b..92d67f17 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-44.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-44 (seed 1044) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-44 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1044 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1044 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1044 { - a1044: { x: number; y: string; z: boolean }; - b1044: { p: string[]; q: Record }; - c1044: { nested: { deep: { deeper: { deepest: string } } } }; - d1044: number; - e1044: string; - f1044: boolean; - g1044: null; - h1044: undefined; - i1044: bigint; - j1044: symbol; +interface Entity_10_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_44 | null; children: Entity_10_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1044: number; y1044: string; z1044: boolean }; } -type PartialBig1044 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1044 = T extends Array ? Flatten1044 : T; -type Nested1044 = number[][][][][][][][][][]; -type Flat1044 = Flatten1044; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1044 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1044 : T[K]; -}; -type DeepRequired1044 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1044 : T[K]; +type Path_1044 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1044}` }[keyof T & string] : never; +type EP_1044 = Path_1044; + +type Val_1044 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1044 } + : T[K] extends object ? { t: 'o'; props: Val_1044 } + : { t: 'u' }; }; -type FR1044 = DeepReadonly1044>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1044 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1044 = Extract; -type ExcludeZulu1044 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1044 { width: number; height: number; depth: number } -interface ShapeB1044 { color: string; opacity: number; blend: string } -interface ShapeC1044 { x: number; y: number; z: number; w: number } -interface ShapeD1044 { label: string; title: string; summary: string } - -type Combined1044 = ShapeA1044 & ShapeB1044 & ShapeC1044 & ShapeD1044; -type OptionalAll1044 = { [K in keyof Combined1044]?: Combined1044[K] }; -type RequiredAll1044 = { [K in keyof Combined1044]-?: Combined1044[K] }; -type ReadonlyAll1044 = { readonly [K in keyof Combined1044]: Combined1044[K] }; -type NullableAll1044 = { [K in keyof Combined1044]: Combined1044[K] | null }; +type EV_1044 = Val_1044; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1044 = T extends string ? true : false; -type IsNumber1044 = T extends number ? true : false; -type TypeName1044 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1044 = { - [K in keyof BigRecord1044]: TypeName1044; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1044 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1044 = "user" | "post" | "comment" | "tag" | "category"; -type Action1044 = `${Verb1044}_${Resource1044}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1044 = T extends Promise ? UnwrapPromise1044 : T; -type UnwrapArray1044 = T extends (infer U)[] ? UnwrapArray1044 : T; -type Head1044 = T extends [infer H, ...infer _] ? H : never; -type Tail1044 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1044 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1044>] - : never; +interface Registry_10_44 { + entities: Map; + validators: EV_1044; + paths: Set; + merged: DeepMerge_1044; +} -type SmallUnion1044 = "a" | "b" | "c" | "d"; -type AllPerms1044 = Permutation1044; +type CK_1044 = `p10.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1044, - Flat1044, - FR1044, - BigUnion1044, - ExtractAlpha1044, - ExcludeZulu1044, - OptionalAll1044, - RequiredAll1044, - ReadonlyAll1044, - NullableAll1044, - TypeNames1044, - Action1044, - AllPerms1044, -}; +export type { Entity_10_44, Registry_10_44, CK_1044, EP_1044, EV_1044, DeepMerge_1044 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts index f4e89fb3..21d162f5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-45.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-45 (seed 1045) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-45 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1045 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1045 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1045 { - a1045: { x: number; y: string; z: boolean }; - b1045: { p: string[]; q: Record }; - c1045: { nested: { deep: { deeper: { deepest: string } } } }; - d1045: number; - e1045: string; - f1045: boolean; - g1045: null; - h1045: undefined; - i1045: bigint; - j1045: symbol; +interface Entity_10_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_45 | null; children: Entity_10_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1045: number; y1045: string; z1045: boolean }; } -type PartialBig1045 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1045 = T extends Array ? Flatten1045 : T; -type Nested1045 = number[][][][][][][][][][]; -type Flat1045 = Flatten1045; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1045 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1045 : T[K]; -}; -type DeepRequired1045 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1045 : T[K]; +type Path_1045 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1045}` }[keyof T & string] : never; +type EP_1045 = Path_1045; + +type Val_1045 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1045 } + : T[K] extends object ? { t: 'o'; props: Val_1045 } + : { t: 'u' }; }; -type FR1045 = DeepReadonly1045>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1045 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1045 = Extract; -type ExcludeZulu1045 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1045 { width: number; height: number; depth: number } -interface ShapeB1045 { color: string; opacity: number; blend: string } -interface ShapeC1045 { x: number; y: number; z: number; w: number } -interface ShapeD1045 { label: string; title: string; summary: string } - -type Combined1045 = ShapeA1045 & ShapeB1045 & ShapeC1045 & ShapeD1045; -type OptionalAll1045 = { [K in keyof Combined1045]?: Combined1045[K] }; -type RequiredAll1045 = { [K in keyof Combined1045]-?: Combined1045[K] }; -type ReadonlyAll1045 = { readonly [K in keyof Combined1045]: Combined1045[K] }; -type NullableAll1045 = { [K in keyof Combined1045]: Combined1045[K] | null }; +type EV_1045 = Val_1045; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1045 = T extends string ? true : false; -type IsNumber1045 = T extends number ? true : false; -type TypeName1045 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1045 = { - [K in keyof BigRecord1045]: TypeName1045; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1045 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1045 = "user" | "post" | "comment" | "tag" | "category"; -type Action1045 = `${Verb1045}_${Resource1045}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1045 = T extends Promise ? UnwrapPromise1045 : T; -type UnwrapArray1045 = T extends (infer U)[] ? UnwrapArray1045 : T; -type Head1045 = T extends [infer H, ...infer _] ? H : never; -type Tail1045 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1045 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1045>] - : never; +interface Registry_10_45 { + entities: Map; + validators: EV_1045; + paths: Set; + merged: DeepMerge_1045; +} -type SmallUnion1045 = "a" | "b" | "c" | "d"; -type AllPerms1045 = Permutation1045; +type CK_1045 = `p10.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1045, - Flat1045, - FR1045, - BigUnion1045, - ExtractAlpha1045, - ExcludeZulu1045, - OptionalAll1045, - RequiredAll1045, - ReadonlyAll1045, - NullableAll1045, - TypeNames1045, - Action1045, - AllPerms1045, -}; +export type { Entity_10_45, Registry_10_45, CK_1045, EP_1045, EV_1045, DeepMerge_1045 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts index 9b6b2f62..503bffe5 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-46.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-46 (seed 1046) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-46 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1046 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1046 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1046 { - a1046: { x: number; y: string; z: boolean }; - b1046: { p: string[]; q: Record }; - c1046: { nested: { deep: { deeper: { deepest: string } } } }; - d1046: number; - e1046: string; - f1046: boolean; - g1046: null; - h1046: undefined; - i1046: bigint; - j1046: symbol; +interface Entity_10_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_46 | null; children: Entity_10_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1046: number; y1046: string; z1046: boolean }; } -type PartialBig1046 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1046 = T extends Array ? Flatten1046 : T; -type Nested1046 = number[][][][][][][][][][]; -type Flat1046 = Flatten1046; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1046 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1046 : T[K]; -}; -type DeepRequired1046 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1046 : T[K]; +type Path_1046 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1046}` }[keyof T & string] : never; +type EP_1046 = Path_1046; + +type Val_1046 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1046 } + : T[K] extends object ? { t: 'o'; props: Val_1046 } + : { t: 'u' }; }; -type FR1046 = DeepReadonly1046>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1046 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1046 = Extract; -type ExcludeZulu1046 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1046 { width: number; height: number; depth: number } -interface ShapeB1046 { color: string; opacity: number; blend: string } -interface ShapeC1046 { x: number; y: number; z: number; w: number } -interface ShapeD1046 { label: string; title: string; summary: string } - -type Combined1046 = ShapeA1046 & ShapeB1046 & ShapeC1046 & ShapeD1046; -type OptionalAll1046 = { [K in keyof Combined1046]?: Combined1046[K] }; -type RequiredAll1046 = { [K in keyof Combined1046]-?: Combined1046[K] }; -type ReadonlyAll1046 = { readonly [K in keyof Combined1046]: Combined1046[K] }; -type NullableAll1046 = { [K in keyof Combined1046]: Combined1046[K] | null }; +type EV_1046 = Val_1046; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1046 = T extends string ? true : false; -type IsNumber1046 = T extends number ? true : false; -type TypeName1046 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1046 = { - [K in keyof BigRecord1046]: TypeName1046; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1046 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1046 = "user" | "post" | "comment" | "tag" | "category"; -type Action1046 = `${Verb1046}_${Resource1046}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1046 = T extends Promise ? UnwrapPromise1046 : T; -type UnwrapArray1046 = T extends (infer U)[] ? UnwrapArray1046 : T; -type Head1046 = T extends [infer H, ...infer _] ? H : never; -type Tail1046 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1046 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1046>] - : never; +interface Registry_10_46 { + entities: Map; + validators: EV_1046; + paths: Set; + merged: DeepMerge_1046; +} -type SmallUnion1046 = "a" | "b" | "c" | "d"; -type AllPerms1046 = Permutation1046; +type CK_1046 = `p10.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1046, - Flat1046, - FR1046, - BigUnion1046, - ExtractAlpha1046, - ExcludeZulu1046, - OptionalAll1046, - RequiredAll1046, - ReadonlyAll1046, - NullableAll1046, - TypeNames1046, - Action1046, - AllPerms1046, -}; +export type { Entity_10_46, Registry_10_46, CK_1046, EP_1046, EV_1046, DeepMerge_1046 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts index 3c215fd7..de065696 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-47.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-47 (seed 1047) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-47 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1047 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1047 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1047 { - a1047: { x: number; y: string; z: boolean }; - b1047: { p: string[]; q: Record }; - c1047: { nested: { deep: { deeper: { deepest: string } } } }; - d1047: number; - e1047: string; - f1047: boolean; - g1047: null; - h1047: undefined; - i1047: bigint; - j1047: symbol; +interface Entity_10_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_47 | null; children: Entity_10_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1047: number; y1047: string; z1047: boolean }; } -type PartialBig1047 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1047 = T extends Array ? Flatten1047 : T; -type Nested1047 = number[][][][][][][][][][]; -type Flat1047 = Flatten1047; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1047 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1047 : T[K]; -}; -type DeepRequired1047 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1047 : T[K]; +type Path_1047 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1047}` }[keyof T & string] : never; +type EP_1047 = Path_1047; + +type Val_1047 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1047 } + : T[K] extends object ? { t: 'o'; props: Val_1047 } + : { t: 'u' }; }; -type FR1047 = DeepReadonly1047>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1047 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1047 = Extract; -type ExcludeZulu1047 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1047 { width: number; height: number; depth: number } -interface ShapeB1047 { color: string; opacity: number; blend: string } -interface ShapeC1047 { x: number; y: number; z: number; w: number } -interface ShapeD1047 { label: string; title: string; summary: string } - -type Combined1047 = ShapeA1047 & ShapeB1047 & ShapeC1047 & ShapeD1047; -type OptionalAll1047 = { [K in keyof Combined1047]?: Combined1047[K] }; -type RequiredAll1047 = { [K in keyof Combined1047]-?: Combined1047[K] }; -type ReadonlyAll1047 = { readonly [K in keyof Combined1047]: Combined1047[K] }; -type NullableAll1047 = { [K in keyof Combined1047]: Combined1047[K] | null }; +type EV_1047 = Val_1047; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1047 = T extends string ? true : false; -type IsNumber1047 = T extends number ? true : false; -type TypeName1047 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1047 = { - [K in keyof BigRecord1047]: TypeName1047; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1047 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1047 = "user" | "post" | "comment" | "tag" | "category"; -type Action1047 = `${Verb1047}_${Resource1047}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1047 = T extends Promise ? UnwrapPromise1047 : T; -type UnwrapArray1047 = T extends (infer U)[] ? UnwrapArray1047 : T; -type Head1047 = T extends [infer H, ...infer _] ? H : never; -type Tail1047 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1047 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1047>] - : never; +interface Registry_10_47 { + entities: Map; + validators: EV_1047; + paths: Set; + merged: DeepMerge_1047; +} -type SmallUnion1047 = "a" | "b" | "c" | "d"; -type AllPerms1047 = Permutation1047; +type CK_1047 = `p10.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1047, - Flat1047, - FR1047, - BigUnion1047, - ExtractAlpha1047, - ExcludeZulu1047, - OptionalAll1047, - RequiredAll1047, - ReadonlyAll1047, - NullableAll1047, - TypeNames1047, - Action1047, - AllPerms1047, -}; +export type { Entity_10_47, Registry_10_47, CK_1047, EP_1047, EV_1047, DeepMerge_1047 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts index aba7988e..860a6fe3 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-48.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-48 (seed 1048) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-48 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1048 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1048 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1048 { - a1048: { x: number; y: string; z: boolean }; - b1048: { p: string[]; q: Record }; - c1048: { nested: { deep: { deeper: { deepest: string } } } }; - d1048: number; - e1048: string; - f1048: boolean; - g1048: null; - h1048: undefined; - i1048: bigint; - j1048: symbol; +interface Entity_10_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_48 | null; children: Entity_10_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1048: number; y1048: string; z1048: boolean }; } -type PartialBig1048 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1048 = T extends Array ? Flatten1048 : T; -type Nested1048 = number[][][][][][][][][][]; -type Flat1048 = Flatten1048; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1048 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1048 : T[K]; -}; -type DeepRequired1048 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1048 : T[K]; +type Path_1048 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1048}` }[keyof T & string] : never; +type EP_1048 = Path_1048; + +type Val_1048 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1048 } + : T[K] extends object ? { t: 'o'; props: Val_1048 } + : { t: 'u' }; }; -type FR1048 = DeepReadonly1048>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1048 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1048 = Extract; -type ExcludeZulu1048 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1048 { width: number; height: number; depth: number } -interface ShapeB1048 { color: string; opacity: number; blend: string } -interface ShapeC1048 { x: number; y: number; z: number; w: number } -interface ShapeD1048 { label: string; title: string; summary: string } - -type Combined1048 = ShapeA1048 & ShapeB1048 & ShapeC1048 & ShapeD1048; -type OptionalAll1048 = { [K in keyof Combined1048]?: Combined1048[K] }; -type RequiredAll1048 = { [K in keyof Combined1048]-?: Combined1048[K] }; -type ReadonlyAll1048 = { readonly [K in keyof Combined1048]: Combined1048[K] }; -type NullableAll1048 = { [K in keyof Combined1048]: Combined1048[K] | null }; +type EV_1048 = Val_1048; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1048 = T extends string ? true : false; -type IsNumber1048 = T extends number ? true : false; -type TypeName1048 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1048 = { - [K in keyof BigRecord1048]: TypeName1048; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1048 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1048 = "user" | "post" | "comment" | "tag" | "category"; -type Action1048 = `${Verb1048}_${Resource1048}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1048 = T extends Promise ? UnwrapPromise1048 : T; -type UnwrapArray1048 = T extends (infer U)[] ? UnwrapArray1048 : T; -type Head1048 = T extends [infer H, ...infer _] ? H : never; -type Tail1048 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1048 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1048>] - : never; +interface Registry_10_48 { + entities: Map; + validators: EV_1048; + paths: Set; + merged: DeepMerge_1048; +} -type SmallUnion1048 = "a" | "b" | "c" | "d"; -type AllPerms1048 = Permutation1048; +type CK_1048 = `p10.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1048, - Flat1048, - FR1048, - BigUnion1048, - ExtractAlpha1048, - ExcludeZulu1048, - OptionalAll1048, - RequiredAll1048, - ReadonlyAll1048, - NullableAll1048, - TypeNames1048, - Action1048, - AllPerms1048, -}; +export type { Entity_10_48, Registry_10_48, CK_1048, EP_1048, EV_1048, DeepMerge_1048 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts index 7b4804ed..113b33aa 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-49.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-49 (seed 1049) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-49 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1049 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1049 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1049 { - a1049: { x: number; y: string; z: boolean }; - b1049: { p: string[]; q: Record }; - c1049: { nested: { deep: { deeper: { deepest: string } } } }; - d1049: number; - e1049: string; - f1049: boolean; - g1049: null; - h1049: undefined; - i1049: bigint; - j1049: symbol; +interface Entity_10_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_49 | null; children: Entity_10_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1049: number; y1049: string; z1049: boolean }; } -type PartialBig1049 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1049 = T extends Array ? Flatten1049 : T; -type Nested1049 = number[][][][][][][][][][]; -type Flat1049 = Flatten1049; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1049 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1049 : T[K]; -}; -type DeepRequired1049 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1049 : T[K]; +type Path_1049 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1049}` }[keyof T & string] : never; +type EP_1049 = Path_1049; + +type Val_1049 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1049 } + : T[K] extends object ? { t: 'o'; props: Val_1049 } + : { t: 'u' }; }; -type FR1049 = DeepReadonly1049>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1049 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1049 = Extract; -type ExcludeZulu1049 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1049 { width: number; height: number; depth: number } -interface ShapeB1049 { color: string; opacity: number; blend: string } -interface ShapeC1049 { x: number; y: number; z: number; w: number } -interface ShapeD1049 { label: string; title: string; summary: string } - -type Combined1049 = ShapeA1049 & ShapeB1049 & ShapeC1049 & ShapeD1049; -type OptionalAll1049 = { [K in keyof Combined1049]?: Combined1049[K] }; -type RequiredAll1049 = { [K in keyof Combined1049]-?: Combined1049[K] }; -type ReadonlyAll1049 = { readonly [K in keyof Combined1049]: Combined1049[K] }; -type NullableAll1049 = { [K in keyof Combined1049]: Combined1049[K] | null }; +type EV_1049 = Val_1049; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1049 = T extends string ? true : false; -type IsNumber1049 = T extends number ? true : false; -type TypeName1049 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1049 = { - [K in keyof BigRecord1049]: TypeName1049; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1049 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1049 = "user" | "post" | "comment" | "tag" | "category"; -type Action1049 = `${Verb1049}_${Resource1049}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1049 = T extends Promise ? UnwrapPromise1049 : T; -type UnwrapArray1049 = T extends (infer U)[] ? UnwrapArray1049 : T; -type Head1049 = T extends [infer H, ...infer _] ? H : never; -type Tail1049 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1049 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1049>] - : never; +interface Registry_10_49 { + entities: Map; + validators: EV_1049; + paths: Set; + merged: DeepMerge_1049; +} -type SmallUnion1049 = "a" | "b" | "c" | "d"; -type AllPerms1049 = Permutation1049; +type CK_1049 = `p10.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1049, - Flat1049, - FR1049, - BigUnion1049, - ExtractAlpha1049, - ExcludeZulu1049, - OptionalAll1049, - RequiredAll1049, - ReadonlyAll1049, - NullableAll1049, - TypeNames1049, - Action1049, - AllPerms1049, -}; +export type { Entity_10_49, Registry_10_49, CK_1049, EP_1049, EV_1049, DeepMerge_1049 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts index 7f90db32..f2a8cc3c 100644 --- a/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts +++ b/tests/benchmarks/synthetic-monorepo/pkg-10/types-50.ts @@ -1,125 +1,50 @@ -// pkg-10 / types-50 (seed 1050) - expensive recursive & mapped types - -// ── 1. DeepPartial over a large interface ──────────────────────────────────── -type DeepPartial = { - [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; +// pkg-10/types-50 - heavy interconnected types + +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; +import type { Entity_7_01, Registry_7_01 } from '../pkg-07/types-01'; +import type { Entity_7_10, Registry_7_10 } from '../pkg-07/types-10'; +import type { Entity_7_20, Registry_7_20 } from '../pkg-07/types-20'; + +type DeepMerge_1050 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1050 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; }; -interface BigRecord1050 { - a1050: { x: number; y: string; z: boolean }; - b1050: { p: string[]; q: Record }; - c1050: { nested: { deep: { deeper: { deepest: string } } } }; - d1050: number; - e1050: string; - f1050: boolean; - g1050: null; - h1050: undefined; - i1050: bigint; - j1050: symbol; +interface Entity_10_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_10_50 | null; children: Entity_10_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1050: number; y1050: string; z1050: boolean }; } -type PartialBig1050 = DeepPartial; - -// ── 2. Recursive Flatten ───────────────────────────────────────────────────── -type Flatten1050 = T extends Array ? Flatten1050 : T; -type Nested1050 = number[][][][][][][][][][]; -type Flat1050 = Flatten1050; - -// ── 3. Deep readonly + required ────────────────────────────────────────────── -type DeepReadonly1050 = { - readonly [K in keyof T]: T[K] extends object ? DeepReadonly1050 : T[K]; -}; -type DeepRequired1050 = { - [K in keyof T]-?: T[K] extends object ? DeepRequired1050 : T[K]; +type Path_1050 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1050}` }[keyof T & string] : never; +type EP_1050 = Path_1050; + +type Val_1050 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1050 } + : T[K] extends object ? { t: 'o'; props: Val_1050 } + : { t: 'u' }; }; -type FR1050 = DeepReadonly1050>; - -// ── 4. Large union type (50 members) ───────────────────────────────────────── -type BigUnion1050 = - | "alpha" | "bravo" | "charlie" | "delta" | "echo" - | "foxtrot" | "golf" | "hotel" | "india" | "juliet" - | "kilo" | "lima" | "mike" | "november" | "oscar" - | "papa" | "quebec" | "romeo" | "sierra" | "tango" - | "uniform" | "victor" | "whiskey" | "xray" | "yankee" - | "zulu" | "one" | "two" | "three" | "four" - | "five" | "six" | "seven" | "eight" | "nine" - | "ten" | "eleven" | "twelve" | "thirteen" | "fourteen" - | "fifteen" | "sixteen" | "seventeen" | "eighteen" | "nineteen" - | "twenty" | "twentyone" | "twentytwo" | "twentythree" | "twentyfour" - | "twentyfive"; - -type ExtractAlpha1050 = Extract; -type ExcludeZulu1050 = Exclude; - -// ── 5. Mapped type over intersection of interfaces ─────────────────────────── -interface ShapeA1050 { width: number; height: number; depth: number } -interface ShapeB1050 { color: string; opacity: number; blend: string } -interface ShapeC1050 { x: number; y: number; z: number; w: number } -interface ShapeD1050 { label: string; title: string; summary: string } - -type Combined1050 = ShapeA1050 & ShapeB1050 & ShapeC1050 & ShapeD1050; -type OptionalAll1050 = { [K in keyof Combined1050]?: Combined1050[K] }; -type RequiredAll1050 = { [K in keyof Combined1050]-?: Combined1050[K] }; -type ReadonlyAll1050 = { readonly [K in keyof Combined1050]: Combined1050[K] }; -type NullableAll1050 = { [K in keyof Combined1050]: Combined1050[K] | null }; +type EV_1050 = Val_1050; -// ── 6. Conditional type chains ─────────────────────────────────────────────── -type IsString1050 = T extends string ? true : false; -type IsNumber1050 = T extends number ? true : false; -type TypeName1050 = T extends string - ? "string" - : T extends number - ? "number" - : T extends boolean - ? "boolean" - : T extends null - ? "null" - : T extends undefined - ? "undefined" - : T extends symbol - ? "symbol" - : T extends bigint - ? "bigint" - : "object"; - -type TypeNames1050 = { - [K in keyof BigRecord1050]: TypeName1050; -}; - -// ── 7. Template literal type combinations ──────────────────────────────────── -type Verb1050 = "get" | "set" | "delete" | "update" | "create" | "list"; -type Resource1050 = "user" | "post" | "comment" | "tag" | "category"; -type Action1050 = `${Verb1050}_${Resource1050}`; - -// ── 8. Infer in conditional types ──────────────────────────────────────────── -type UnwrapPromise1050 = T extends Promise ? UnwrapPromise1050 : T; -type UnwrapArray1050 = T extends (infer U)[] ? UnwrapArray1050 : T; -type Head1050 = T extends [infer H, ...infer _] ? H : never; -type Tail1050 = T extends [infer _, ...infer R] ? R : never; - -// ── 9. Permutation of union ─────────────────────────────────────────────────── -type Permutation1050 = [T] extends [never] - ? [] - : K extends K - ? [K, ...Permutation1050>] - : never; +interface Registry_10_50 { + entities: Map; + validators: EV_1050; + paths: Set; + merged: DeepMerge_1050; +} -type SmallUnion1050 = "a" | "b" | "c" | "d"; -type AllPerms1050 = Permutation1050; +type CK_1050 = `p10.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; -// ── 10. Re-export to force inclusion ───────────────────────────────────────── -export type { - PartialBig1050, - Flat1050, - FR1050, - BigUnion1050, - ExtractAlpha1050, - ExcludeZulu1050, - OptionalAll1050, - RequiredAll1050, - ReadonlyAll1050, - NullableAll1050, - TypeNames1050, - Action1050, - AllPerms1050, -}; +export type { Entity_10_50, Registry_10_50, CK_1050, EP_1050, EV_1050, DeepMerge_1050 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-11/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-01.ts new file mode 100644 index 00000000..f3cc61ef --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-01.ts @@ -0,0 +1,50 @@ +// pkg-11/types-01 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1101 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1101 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_01 | null; children: Entity_11_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1101: number; y1101: string; z1101: boolean }; +} + +type Path_1101 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1101}` }[keyof T & string] : never; +type EP_1101 = Path_1101; + +type Val_1101 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1101 } + : T[K] extends object ? { t: 'o'; props: Val_1101 } + : { t: 'u' }; +}; +type EV_1101 = Val_1101; + +interface Registry_11_01 { + entities: Map; + validators: EV_1101; + paths: Set; + merged: DeepMerge_1101; +} + +type CK_1101 = `p11.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_01, Registry_11_01, CK_1101, EP_1101, EV_1101, DeepMerge_1101 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-02.ts new file mode 100644 index 00000000..a688e684 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-02.ts @@ -0,0 +1,50 @@ +// pkg-11/types-02 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1102 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1102 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_02 | null; children: Entity_11_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1102: number; y1102: string; z1102: boolean }; +} + +type Path_1102 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1102}` }[keyof T & string] : never; +type EP_1102 = Path_1102; + +type Val_1102 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1102 } + : T[K] extends object ? { t: 'o'; props: Val_1102 } + : { t: 'u' }; +}; +type EV_1102 = Val_1102; + +interface Registry_11_02 { + entities: Map; + validators: EV_1102; + paths: Set; + merged: DeepMerge_1102; +} + +type CK_1102 = `p11.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_02, Registry_11_02, CK_1102, EP_1102, EV_1102, DeepMerge_1102 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-03.ts new file mode 100644 index 00000000..b41c3035 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-03.ts @@ -0,0 +1,50 @@ +// pkg-11/types-03 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1103 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1103 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_03 | null; children: Entity_11_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1103: number; y1103: string; z1103: boolean }; +} + +type Path_1103 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1103}` }[keyof T & string] : never; +type EP_1103 = Path_1103; + +type Val_1103 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1103 } + : T[K] extends object ? { t: 'o'; props: Val_1103 } + : { t: 'u' }; +}; +type EV_1103 = Val_1103; + +interface Registry_11_03 { + entities: Map; + validators: EV_1103; + paths: Set; + merged: DeepMerge_1103; +} + +type CK_1103 = `p11.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_03, Registry_11_03, CK_1103, EP_1103, EV_1103, DeepMerge_1103 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-04.ts new file mode 100644 index 00000000..5a692427 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-04.ts @@ -0,0 +1,50 @@ +// pkg-11/types-04 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1104 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1104 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_04 | null; children: Entity_11_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1104: number; y1104: string; z1104: boolean }; +} + +type Path_1104 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1104}` }[keyof T & string] : never; +type EP_1104 = Path_1104; + +type Val_1104 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1104 } + : T[K] extends object ? { t: 'o'; props: Val_1104 } + : { t: 'u' }; +}; +type EV_1104 = Val_1104; + +interface Registry_11_04 { + entities: Map; + validators: EV_1104; + paths: Set; + merged: DeepMerge_1104; +} + +type CK_1104 = `p11.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_04, Registry_11_04, CK_1104, EP_1104, EV_1104, DeepMerge_1104 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-05.ts new file mode 100644 index 00000000..522283aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-05.ts @@ -0,0 +1,50 @@ +// pkg-11/types-05 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1105 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1105 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_05 | null; children: Entity_11_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1105: number; y1105: string; z1105: boolean }; +} + +type Path_1105 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1105}` }[keyof T & string] : never; +type EP_1105 = Path_1105; + +type Val_1105 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1105 } + : T[K] extends object ? { t: 'o'; props: Val_1105 } + : { t: 'u' }; +}; +type EV_1105 = Val_1105; + +interface Registry_11_05 { + entities: Map; + validators: EV_1105; + paths: Set; + merged: DeepMerge_1105; +} + +type CK_1105 = `p11.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_05, Registry_11_05, CK_1105, EP_1105, EV_1105, DeepMerge_1105 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-06.ts new file mode 100644 index 00000000..f281e263 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-06.ts @@ -0,0 +1,50 @@ +// pkg-11/types-06 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1106 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1106 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_06 | null; children: Entity_11_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1106: number; y1106: string; z1106: boolean }; +} + +type Path_1106 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1106}` }[keyof T & string] : never; +type EP_1106 = Path_1106; + +type Val_1106 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1106 } + : T[K] extends object ? { t: 'o'; props: Val_1106 } + : { t: 'u' }; +}; +type EV_1106 = Val_1106; + +interface Registry_11_06 { + entities: Map; + validators: EV_1106; + paths: Set; + merged: DeepMerge_1106; +} + +type CK_1106 = `p11.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_06, Registry_11_06, CK_1106, EP_1106, EV_1106, DeepMerge_1106 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-07.ts new file mode 100644 index 00000000..4d172e12 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-07.ts @@ -0,0 +1,50 @@ +// pkg-11/types-07 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1107 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1107 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_07 | null; children: Entity_11_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1107: number; y1107: string; z1107: boolean }; +} + +type Path_1107 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1107}` }[keyof T & string] : never; +type EP_1107 = Path_1107; + +type Val_1107 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1107 } + : T[K] extends object ? { t: 'o'; props: Val_1107 } + : { t: 'u' }; +}; +type EV_1107 = Val_1107; + +interface Registry_11_07 { + entities: Map; + validators: EV_1107; + paths: Set; + merged: DeepMerge_1107; +} + +type CK_1107 = `p11.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_07, Registry_11_07, CK_1107, EP_1107, EV_1107, DeepMerge_1107 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-08.ts new file mode 100644 index 00000000..8a4a214b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-08.ts @@ -0,0 +1,50 @@ +// pkg-11/types-08 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1108 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1108 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_08 | null; children: Entity_11_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1108: number; y1108: string; z1108: boolean }; +} + +type Path_1108 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1108}` }[keyof T & string] : never; +type EP_1108 = Path_1108; + +type Val_1108 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1108 } + : T[K] extends object ? { t: 'o'; props: Val_1108 } + : { t: 'u' }; +}; +type EV_1108 = Val_1108; + +interface Registry_11_08 { + entities: Map; + validators: EV_1108; + paths: Set; + merged: DeepMerge_1108; +} + +type CK_1108 = `p11.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_08, Registry_11_08, CK_1108, EP_1108, EV_1108, DeepMerge_1108 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-09.ts new file mode 100644 index 00000000..d50e6033 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-09.ts @@ -0,0 +1,50 @@ +// pkg-11/types-09 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1109 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1109 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_09 | null; children: Entity_11_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1109: number; y1109: string; z1109: boolean }; +} + +type Path_1109 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1109}` }[keyof T & string] : never; +type EP_1109 = Path_1109; + +type Val_1109 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1109 } + : T[K] extends object ? { t: 'o'; props: Val_1109 } + : { t: 'u' }; +}; +type EV_1109 = Val_1109; + +interface Registry_11_09 { + entities: Map; + validators: EV_1109; + paths: Set; + merged: DeepMerge_1109; +} + +type CK_1109 = `p11.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_09, Registry_11_09, CK_1109, EP_1109, EV_1109, DeepMerge_1109 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-10.ts new file mode 100644 index 00000000..ca0f8f16 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-10.ts @@ -0,0 +1,50 @@ +// pkg-11/types-10 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1110 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1110 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_10 | null; children: Entity_11_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1110: number; y1110: string; z1110: boolean }; +} + +type Path_1110 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1110}` }[keyof T & string] : never; +type EP_1110 = Path_1110; + +type Val_1110 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1110 } + : T[K] extends object ? { t: 'o'; props: Val_1110 } + : { t: 'u' }; +}; +type EV_1110 = Val_1110; + +interface Registry_11_10 { + entities: Map; + validators: EV_1110; + paths: Set; + merged: DeepMerge_1110; +} + +type CK_1110 = `p11.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_10, Registry_11_10, CK_1110, EP_1110, EV_1110, DeepMerge_1110 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-11.ts new file mode 100644 index 00000000..ae388eba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-11.ts @@ -0,0 +1,50 @@ +// pkg-11/types-11 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1111 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1111 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_11 | null; children: Entity_11_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1111: number; y1111: string; z1111: boolean }; +} + +type Path_1111 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1111}` }[keyof T & string] : never; +type EP_1111 = Path_1111; + +type Val_1111 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1111 } + : T[K] extends object ? { t: 'o'; props: Val_1111 } + : { t: 'u' }; +}; +type EV_1111 = Val_1111; + +interface Registry_11_11 { + entities: Map; + validators: EV_1111; + paths: Set; + merged: DeepMerge_1111; +} + +type CK_1111 = `p11.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_11, Registry_11_11, CK_1111, EP_1111, EV_1111, DeepMerge_1111 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-12.ts new file mode 100644 index 00000000..8038cf28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-12.ts @@ -0,0 +1,50 @@ +// pkg-11/types-12 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1112 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1112 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_12 | null; children: Entity_11_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1112: number; y1112: string; z1112: boolean }; +} + +type Path_1112 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1112}` }[keyof T & string] : never; +type EP_1112 = Path_1112; + +type Val_1112 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1112 } + : T[K] extends object ? { t: 'o'; props: Val_1112 } + : { t: 'u' }; +}; +type EV_1112 = Val_1112; + +interface Registry_11_12 { + entities: Map; + validators: EV_1112; + paths: Set; + merged: DeepMerge_1112; +} + +type CK_1112 = `p11.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_12, Registry_11_12, CK_1112, EP_1112, EV_1112, DeepMerge_1112 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-13.ts new file mode 100644 index 00000000..6463f655 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-13.ts @@ -0,0 +1,50 @@ +// pkg-11/types-13 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1113 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1113 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_13 | null; children: Entity_11_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1113: number; y1113: string; z1113: boolean }; +} + +type Path_1113 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1113}` }[keyof T & string] : never; +type EP_1113 = Path_1113; + +type Val_1113 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1113 } + : T[K] extends object ? { t: 'o'; props: Val_1113 } + : { t: 'u' }; +}; +type EV_1113 = Val_1113; + +interface Registry_11_13 { + entities: Map; + validators: EV_1113; + paths: Set; + merged: DeepMerge_1113; +} + +type CK_1113 = `p11.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_13, Registry_11_13, CK_1113, EP_1113, EV_1113, DeepMerge_1113 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-14.ts new file mode 100644 index 00000000..6ec61a71 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-14.ts @@ -0,0 +1,50 @@ +// pkg-11/types-14 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1114 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1114 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_14 | null; children: Entity_11_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1114: number; y1114: string; z1114: boolean }; +} + +type Path_1114 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1114}` }[keyof T & string] : never; +type EP_1114 = Path_1114; + +type Val_1114 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1114 } + : T[K] extends object ? { t: 'o'; props: Val_1114 } + : { t: 'u' }; +}; +type EV_1114 = Val_1114; + +interface Registry_11_14 { + entities: Map; + validators: EV_1114; + paths: Set; + merged: DeepMerge_1114; +} + +type CK_1114 = `p11.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_14, Registry_11_14, CK_1114, EP_1114, EV_1114, DeepMerge_1114 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-15.ts new file mode 100644 index 00000000..a055652e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-15.ts @@ -0,0 +1,50 @@ +// pkg-11/types-15 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1115 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1115 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_15 | null; children: Entity_11_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1115: number; y1115: string; z1115: boolean }; +} + +type Path_1115 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1115}` }[keyof T & string] : never; +type EP_1115 = Path_1115; + +type Val_1115 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1115 } + : T[K] extends object ? { t: 'o'; props: Val_1115 } + : { t: 'u' }; +}; +type EV_1115 = Val_1115; + +interface Registry_11_15 { + entities: Map; + validators: EV_1115; + paths: Set; + merged: DeepMerge_1115; +} + +type CK_1115 = `p11.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_15, Registry_11_15, CK_1115, EP_1115, EV_1115, DeepMerge_1115 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-16.ts new file mode 100644 index 00000000..a32284a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-16.ts @@ -0,0 +1,50 @@ +// pkg-11/types-16 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1116 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1116 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_16 | null; children: Entity_11_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1116: number; y1116: string; z1116: boolean }; +} + +type Path_1116 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1116}` }[keyof T & string] : never; +type EP_1116 = Path_1116; + +type Val_1116 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1116 } + : T[K] extends object ? { t: 'o'; props: Val_1116 } + : { t: 'u' }; +}; +type EV_1116 = Val_1116; + +interface Registry_11_16 { + entities: Map; + validators: EV_1116; + paths: Set; + merged: DeepMerge_1116; +} + +type CK_1116 = `p11.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_16, Registry_11_16, CK_1116, EP_1116, EV_1116, DeepMerge_1116 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-17.ts new file mode 100644 index 00000000..1eb75447 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-17.ts @@ -0,0 +1,50 @@ +// pkg-11/types-17 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1117 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1117 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_17 | null; children: Entity_11_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1117: number; y1117: string; z1117: boolean }; +} + +type Path_1117 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1117}` }[keyof T & string] : never; +type EP_1117 = Path_1117; + +type Val_1117 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1117 } + : T[K] extends object ? { t: 'o'; props: Val_1117 } + : { t: 'u' }; +}; +type EV_1117 = Val_1117; + +interface Registry_11_17 { + entities: Map; + validators: EV_1117; + paths: Set; + merged: DeepMerge_1117; +} + +type CK_1117 = `p11.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_17, Registry_11_17, CK_1117, EP_1117, EV_1117, DeepMerge_1117 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-18.ts new file mode 100644 index 00000000..5665c179 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-18.ts @@ -0,0 +1,50 @@ +// pkg-11/types-18 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1118 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1118 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_18 | null; children: Entity_11_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1118: number; y1118: string; z1118: boolean }; +} + +type Path_1118 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1118}` }[keyof T & string] : never; +type EP_1118 = Path_1118; + +type Val_1118 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1118 } + : T[K] extends object ? { t: 'o'; props: Val_1118 } + : { t: 'u' }; +}; +type EV_1118 = Val_1118; + +interface Registry_11_18 { + entities: Map; + validators: EV_1118; + paths: Set; + merged: DeepMerge_1118; +} + +type CK_1118 = `p11.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_18, Registry_11_18, CK_1118, EP_1118, EV_1118, DeepMerge_1118 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-19.ts new file mode 100644 index 00000000..04f598de --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-19.ts @@ -0,0 +1,50 @@ +// pkg-11/types-19 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1119 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1119 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_19 | null; children: Entity_11_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1119: number; y1119: string; z1119: boolean }; +} + +type Path_1119 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1119}` }[keyof T & string] : never; +type EP_1119 = Path_1119; + +type Val_1119 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1119 } + : T[K] extends object ? { t: 'o'; props: Val_1119 } + : { t: 'u' }; +}; +type EV_1119 = Val_1119; + +interface Registry_11_19 { + entities: Map; + validators: EV_1119; + paths: Set; + merged: DeepMerge_1119; +} + +type CK_1119 = `p11.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_19, Registry_11_19, CK_1119, EP_1119, EV_1119, DeepMerge_1119 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-20.ts new file mode 100644 index 00000000..3caca64b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-20.ts @@ -0,0 +1,50 @@ +// pkg-11/types-20 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1120 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1120 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_20 | null; children: Entity_11_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1120: number; y1120: string; z1120: boolean }; +} + +type Path_1120 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1120}` }[keyof T & string] : never; +type EP_1120 = Path_1120; + +type Val_1120 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1120 } + : T[K] extends object ? { t: 'o'; props: Val_1120 } + : { t: 'u' }; +}; +type EV_1120 = Val_1120; + +interface Registry_11_20 { + entities: Map; + validators: EV_1120; + paths: Set; + merged: DeepMerge_1120; +} + +type CK_1120 = `p11.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_20, Registry_11_20, CK_1120, EP_1120, EV_1120, DeepMerge_1120 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-21.ts new file mode 100644 index 00000000..b583f2c0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-21.ts @@ -0,0 +1,50 @@ +// pkg-11/types-21 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1121 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1121 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_21 | null; children: Entity_11_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1121: number; y1121: string; z1121: boolean }; +} + +type Path_1121 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1121}` }[keyof T & string] : never; +type EP_1121 = Path_1121; + +type Val_1121 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1121 } + : T[K] extends object ? { t: 'o'; props: Val_1121 } + : { t: 'u' }; +}; +type EV_1121 = Val_1121; + +interface Registry_11_21 { + entities: Map; + validators: EV_1121; + paths: Set; + merged: DeepMerge_1121; +} + +type CK_1121 = `p11.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_21, Registry_11_21, CK_1121, EP_1121, EV_1121, DeepMerge_1121 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-22.ts new file mode 100644 index 00000000..067243d5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-22.ts @@ -0,0 +1,50 @@ +// pkg-11/types-22 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1122 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1122 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_22 | null; children: Entity_11_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1122: number; y1122: string; z1122: boolean }; +} + +type Path_1122 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1122}` }[keyof T & string] : never; +type EP_1122 = Path_1122; + +type Val_1122 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1122 } + : T[K] extends object ? { t: 'o'; props: Val_1122 } + : { t: 'u' }; +}; +type EV_1122 = Val_1122; + +interface Registry_11_22 { + entities: Map; + validators: EV_1122; + paths: Set; + merged: DeepMerge_1122; +} + +type CK_1122 = `p11.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_22, Registry_11_22, CK_1122, EP_1122, EV_1122, DeepMerge_1122 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-23.ts new file mode 100644 index 00000000..fc0ebd62 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-23.ts @@ -0,0 +1,50 @@ +// pkg-11/types-23 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1123 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1123 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_23 | null; children: Entity_11_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1123: number; y1123: string; z1123: boolean }; +} + +type Path_1123 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1123}` }[keyof T & string] : never; +type EP_1123 = Path_1123; + +type Val_1123 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1123 } + : T[K] extends object ? { t: 'o'; props: Val_1123 } + : { t: 'u' }; +}; +type EV_1123 = Val_1123; + +interface Registry_11_23 { + entities: Map; + validators: EV_1123; + paths: Set; + merged: DeepMerge_1123; +} + +type CK_1123 = `p11.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_23, Registry_11_23, CK_1123, EP_1123, EV_1123, DeepMerge_1123 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-24.ts new file mode 100644 index 00000000..59ca4dae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-24.ts @@ -0,0 +1,50 @@ +// pkg-11/types-24 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1124 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1124 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_24 | null; children: Entity_11_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1124: number; y1124: string; z1124: boolean }; +} + +type Path_1124 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1124}` }[keyof T & string] : never; +type EP_1124 = Path_1124; + +type Val_1124 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1124 } + : T[K] extends object ? { t: 'o'; props: Val_1124 } + : { t: 'u' }; +}; +type EV_1124 = Val_1124; + +interface Registry_11_24 { + entities: Map; + validators: EV_1124; + paths: Set; + merged: DeepMerge_1124; +} + +type CK_1124 = `p11.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_24, Registry_11_24, CK_1124, EP_1124, EV_1124, DeepMerge_1124 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-25.ts new file mode 100644 index 00000000..77f94120 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-25.ts @@ -0,0 +1,50 @@ +// pkg-11/types-25 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1125 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1125 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_25 | null; children: Entity_11_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1125: number; y1125: string; z1125: boolean }; +} + +type Path_1125 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1125}` }[keyof T & string] : never; +type EP_1125 = Path_1125; + +type Val_1125 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1125 } + : T[K] extends object ? { t: 'o'; props: Val_1125 } + : { t: 'u' }; +}; +type EV_1125 = Val_1125; + +interface Registry_11_25 { + entities: Map; + validators: EV_1125; + paths: Set; + merged: DeepMerge_1125; +} + +type CK_1125 = `p11.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_25, Registry_11_25, CK_1125, EP_1125, EV_1125, DeepMerge_1125 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-26.ts new file mode 100644 index 00000000..e0971cd5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-26.ts @@ -0,0 +1,50 @@ +// pkg-11/types-26 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1126 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1126 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_26 | null; children: Entity_11_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1126: number; y1126: string; z1126: boolean }; +} + +type Path_1126 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1126}` }[keyof T & string] : never; +type EP_1126 = Path_1126; + +type Val_1126 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1126 } + : T[K] extends object ? { t: 'o'; props: Val_1126 } + : { t: 'u' }; +}; +type EV_1126 = Val_1126; + +interface Registry_11_26 { + entities: Map; + validators: EV_1126; + paths: Set; + merged: DeepMerge_1126; +} + +type CK_1126 = `p11.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_26, Registry_11_26, CK_1126, EP_1126, EV_1126, DeepMerge_1126 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-27.ts new file mode 100644 index 00000000..36de82fb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-27.ts @@ -0,0 +1,50 @@ +// pkg-11/types-27 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1127 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1127 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_27 | null; children: Entity_11_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1127: number; y1127: string; z1127: boolean }; +} + +type Path_1127 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1127}` }[keyof T & string] : never; +type EP_1127 = Path_1127; + +type Val_1127 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1127 } + : T[K] extends object ? { t: 'o'; props: Val_1127 } + : { t: 'u' }; +}; +type EV_1127 = Val_1127; + +interface Registry_11_27 { + entities: Map; + validators: EV_1127; + paths: Set; + merged: DeepMerge_1127; +} + +type CK_1127 = `p11.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_27, Registry_11_27, CK_1127, EP_1127, EV_1127, DeepMerge_1127 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-28.ts new file mode 100644 index 00000000..53602876 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-28.ts @@ -0,0 +1,50 @@ +// pkg-11/types-28 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1128 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1128 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_28 | null; children: Entity_11_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1128: number; y1128: string; z1128: boolean }; +} + +type Path_1128 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1128}` }[keyof T & string] : never; +type EP_1128 = Path_1128; + +type Val_1128 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1128 } + : T[K] extends object ? { t: 'o'; props: Val_1128 } + : { t: 'u' }; +}; +type EV_1128 = Val_1128; + +interface Registry_11_28 { + entities: Map; + validators: EV_1128; + paths: Set; + merged: DeepMerge_1128; +} + +type CK_1128 = `p11.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_28, Registry_11_28, CK_1128, EP_1128, EV_1128, DeepMerge_1128 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-29.ts new file mode 100644 index 00000000..1f1a49e6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-29.ts @@ -0,0 +1,50 @@ +// pkg-11/types-29 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1129 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1129 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_29 | null; children: Entity_11_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1129: number; y1129: string; z1129: boolean }; +} + +type Path_1129 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1129}` }[keyof T & string] : never; +type EP_1129 = Path_1129; + +type Val_1129 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1129 } + : T[K] extends object ? { t: 'o'; props: Val_1129 } + : { t: 'u' }; +}; +type EV_1129 = Val_1129; + +interface Registry_11_29 { + entities: Map; + validators: EV_1129; + paths: Set; + merged: DeepMerge_1129; +} + +type CK_1129 = `p11.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_29, Registry_11_29, CK_1129, EP_1129, EV_1129, DeepMerge_1129 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-30.ts new file mode 100644 index 00000000..bc5ec7f2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-30.ts @@ -0,0 +1,50 @@ +// pkg-11/types-30 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1130 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1130 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_30 | null; children: Entity_11_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1130: number; y1130: string; z1130: boolean }; +} + +type Path_1130 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1130}` }[keyof T & string] : never; +type EP_1130 = Path_1130; + +type Val_1130 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1130 } + : T[K] extends object ? { t: 'o'; props: Val_1130 } + : { t: 'u' }; +}; +type EV_1130 = Val_1130; + +interface Registry_11_30 { + entities: Map; + validators: EV_1130; + paths: Set; + merged: DeepMerge_1130; +} + +type CK_1130 = `p11.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_30, Registry_11_30, CK_1130, EP_1130, EV_1130, DeepMerge_1130 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-31.ts new file mode 100644 index 00000000..5becdf7b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-31.ts @@ -0,0 +1,50 @@ +// pkg-11/types-31 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1131 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1131 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_31 | null; children: Entity_11_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1131: number; y1131: string; z1131: boolean }; +} + +type Path_1131 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1131}` }[keyof T & string] : never; +type EP_1131 = Path_1131; + +type Val_1131 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1131 } + : T[K] extends object ? { t: 'o'; props: Val_1131 } + : { t: 'u' }; +}; +type EV_1131 = Val_1131; + +interface Registry_11_31 { + entities: Map; + validators: EV_1131; + paths: Set; + merged: DeepMerge_1131; +} + +type CK_1131 = `p11.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_31, Registry_11_31, CK_1131, EP_1131, EV_1131, DeepMerge_1131 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-32.ts new file mode 100644 index 00000000..514689c8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-32.ts @@ -0,0 +1,50 @@ +// pkg-11/types-32 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1132 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1132 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_32 | null; children: Entity_11_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1132: number; y1132: string; z1132: boolean }; +} + +type Path_1132 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1132}` }[keyof T & string] : never; +type EP_1132 = Path_1132; + +type Val_1132 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1132 } + : T[K] extends object ? { t: 'o'; props: Val_1132 } + : { t: 'u' }; +}; +type EV_1132 = Val_1132; + +interface Registry_11_32 { + entities: Map; + validators: EV_1132; + paths: Set; + merged: DeepMerge_1132; +} + +type CK_1132 = `p11.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_32, Registry_11_32, CK_1132, EP_1132, EV_1132, DeepMerge_1132 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-33.ts new file mode 100644 index 00000000..33393cfe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-33.ts @@ -0,0 +1,50 @@ +// pkg-11/types-33 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1133 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1133 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_33 | null; children: Entity_11_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1133: number; y1133: string; z1133: boolean }; +} + +type Path_1133 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1133}` }[keyof T & string] : never; +type EP_1133 = Path_1133; + +type Val_1133 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1133 } + : T[K] extends object ? { t: 'o'; props: Val_1133 } + : { t: 'u' }; +}; +type EV_1133 = Val_1133; + +interface Registry_11_33 { + entities: Map; + validators: EV_1133; + paths: Set; + merged: DeepMerge_1133; +} + +type CK_1133 = `p11.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_33, Registry_11_33, CK_1133, EP_1133, EV_1133, DeepMerge_1133 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-34.ts new file mode 100644 index 00000000..19f419a5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-34.ts @@ -0,0 +1,50 @@ +// pkg-11/types-34 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1134 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1134 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_34 | null; children: Entity_11_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1134: number; y1134: string; z1134: boolean }; +} + +type Path_1134 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1134}` }[keyof T & string] : never; +type EP_1134 = Path_1134; + +type Val_1134 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1134 } + : T[K] extends object ? { t: 'o'; props: Val_1134 } + : { t: 'u' }; +}; +type EV_1134 = Val_1134; + +interface Registry_11_34 { + entities: Map; + validators: EV_1134; + paths: Set; + merged: DeepMerge_1134; +} + +type CK_1134 = `p11.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_34, Registry_11_34, CK_1134, EP_1134, EV_1134, DeepMerge_1134 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-35.ts new file mode 100644 index 00000000..18bb6d1d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-35.ts @@ -0,0 +1,50 @@ +// pkg-11/types-35 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1135 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1135 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_35 | null; children: Entity_11_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1135: number; y1135: string; z1135: boolean }; +} + +type Path_1135 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1135}` }[keyof T & string] : never; +type EP_1135 = Path_1135; + +type Val_1135 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1135 } + : T[K] extends object ? { t: 'o'; props: Val_1135 } + : { t: 'u' }; +}; +type EV_1135 = Val_1135; + +interface Registry_11_35 { + entities: Map; + validators: EV_1135; + paths: Set; + merged: DeepMerge_1135; +} + +type CK_1135 = `p11.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_35, Registry_11_35, CK_1135, EP_1135, EV_1135, DeepMerge_1135 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-36.ts new file mode 100644 index 00000000..624010fd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-36.ts @@ -0,0 +1,50 @@ +// pkg-11/types-36 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1136 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1136 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_36 | null; children: Entity_11_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1136: number; y1136: string; z1136: boolean }; +} + +type Path_1136 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1136}` }[keyof T & string] : never; +type EP_1136 = Path_1136; + +type Val_1136 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1136 } + : T[K] extends object ? { t: 'o'; props: Val_1136 } + : { t: 'u' }; +}; +type EV_1136 = Val_1136; + +interface Registry_11_36 { + entities: Map; + validators: EV_1136; + paths: Set; + merged: DeepMerge_1136; +} + +type CK_1136 = `p11.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_36, Registry_11_36, CK_1136, EP_1136, EV_1136, DeepMerge_1136 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-37.ts new file mode 100644 index 00000000..a187793c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-37.ts @@ -0,0 +1,50 @@ +// pkg-11/types-37 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1137 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1137 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_37 | null; children: Entity_11_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1137: number; y1137: string; z1137: boolean }; +} + +type Path_1137 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1137}` }[keyof T & string] : never; +type EP_1137 = Path_1137; + +type Val_1137 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1137 } + : T[K] extends object ? { t: 'o'; props: Val_1137 } + : { t: 'u' }; +}; +type EV_1137 = Val_1137; + +interface Registry_11_37 { + entities: Map; + validators: EV_1137; + paths: Set; + merged: DeepMerge_1137; +} + +type CK_1137 = `p11.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_37, Registry_11_37, CK_1137, EP_1137, EV_1137, DeepMerge_1137 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-38.ts new file mode 100644 index 00000000..6e8db8c2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-38.ts @@ -0,0 +1,50 @@ +// pkg-11/types-38 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1138 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1138 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_38 | null; children: Entity_11_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1138: number; y1138: string; z1138: boolean }; +} + +type Path_1138 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1138}` }[keyof T & string] : never; +type EP_1138 = Path_1138; + +type Val_1138 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1138 } + : T[K] extends object ? { t: 'o'; props: Val_1138 } + : { t: 'u' }; +}; +type EV_1138 = Val_1138; + +interface Registry_11_38 { + entities: Map; + validators: EV_1138; + paths: Set; + merged: DeepMerge_1138; +} + +type CK_1138 = `p11.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_38, Registry_11_38, CK_1138, EP_1138, EV_1138, DeepMerge_1138 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-39.ts new file mode 100644 index 00000000..8a3d43ed --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-39.ts @@ -0,0 +1,50 @@ +// pkg-11/types-39 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1139 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1139 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_39 | null; children: Entity_11_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1139: number; y1139: string; z1139: boolean }; +} + +type Path_1139 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1139}` }[keyof T & string] : never; +type EP_1139 = Path_1139; + +type Val_1139 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1139 } + : T[K] extends object ? { t: 'o'; props: Val_1139 } + : { t: 'u' }; +}; +type EV_1139 = Val_1139; + +interface Registry_11_39 { + entities: Map; + validators: EV_1139; + paths: Set; + merged: DeepMerge_1139; +} + +type CK_1139 = `p11.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_39, Registry_11_39, CK_1139, EP_1139, EV_1139, DeepMerge_1139 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-40.ts new file mode 100644 index 00000000..701c1bd1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-40.ts @@ -0,0 +1,50 @@ +// pkg-11/types-40 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1140 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1140 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_40 | null; children: Entity_11_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1140: number; y1140: string; z1140: boolean }; +} + +type Path_1140 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1140}` }[keyof T & string] : never; +type EP_1140 = Path_1140; + +type Val_1140 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1140 } + : T[K] extends object ? { t: 'o'; props: Val_1140 } + : { t: 'u' }; +}; +type EV_1140 = Val_1140; + +interface Registry_11_40 { + entities: Map; + validators: EV_1140; + paths: Set; + merged: DeepMerge_1140; +} + +type CK_1140 = `p11.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_40, Registry_11_40, CK_1140, EP_1140, EV_1140, DeepMerge_1140 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-41.ts new file mode 100644 index 00000000..d1cecb0e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-41.ts @@ -0,0 +1,50 @@ +// pkg-11/types-41 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1141 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1141 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_41 | null; children: Entity_11_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1141: number; y1141: string; z1141: boolean }; +} + +type Path_1141 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1141}` }[keyof T & string] : never; +type EP_1141 = Path_1141; + +type Val_1141 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1141 } + : T[K] extends object ? { t: 'o'; props: Val_1141 } + : { t: 'u' }; +}; +type EV_1141 = Val_1141; + +interface Registry_11_41 { + entities: Map; + validators: EV_1141; + paths: Set; + merged: DeepMerge_1141; +} + +type CK_1141 = `p11.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_41, Registry_11_41, CK_1141, EP_1141, EV_1141, DeepMerge_1141 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-42.ts new file mode 100644 index 00000000..e9c2981d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-42.ts @@ -0,0 +1,50 @@ +// pkg-11/types-42 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1142 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1142 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_42 | null; children: Entity_11_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1142: number; y1142: string; z1142: boolean }; +} + +type Path_1142 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1142}` }[keyof T & string] : never; +type EP_1142 = Path_1142; + +type Val_1142 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1142 } + : T[K] extends object ? { t: 'o'; props: Val_1142 } + : { t: 'u' }; +}; +type EV_1142 = Val_1142; + +interface Registry_11_42 { + entities: Map; + validators: EV_1142; + paths: Set; + merged: DeepMerge_1142; +} + +type CK_1142 = `p11.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_42, Registry_11_42, CK_1142, EP_1142, EV_1142, DeepMerge_1142 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-43.ts new file mode 100644 index 00000000..e5e00db6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-43.ts @@ -0,0 +1,50 @@ +// pkg-11/types-43 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1143 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1143 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_43 | null; children: Entity_11_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1143: number; y1143: string; z1143: boolean }; +} + +type Path_1143 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1143}` }[keyof T & string] : never; +type EP_1143 = Path_1143; + +type Val_1143 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1143 } + : T[K] extends object ? { t: 'o'; props: Val_1143 } + : { t: 'u' }; +}; +type EV_1143 = Val_1143; + +interface Registry_11_43 { + entities: Map; + validators: EV_1143; + paths: Set; + merged: DeepMerge_1143; +} + +type CK_1143 = `p11.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_43, Registry_11_43, CK_1143, EP_1143, EV_1143, DeepMerge_1143 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-44.ts new file mode 100644 index 00000000..e6286b88 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-44.ts @@ -0,0 +1,50 @@ +// pkg-11/types-44 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1144 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1144 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_44 | null; children: Entity_11_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1144: number; y1144: string; z1144: boolean }; +} + +type Path_1144 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1144}` }[keyof T & string] : never; +type EP_1144 = Path_1144; + +type Val_1144 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1144 } + : T[K] extends object ? { t: 'o'; props: Val_1144 } + : { t: 'u' }; +}; +type EV_1144 = Val_1144; + +interface Registry_11_44 { + entities: Map; + validators: EV_1144; + paths: Set; + merged: DeepMerge_1144; +} + +type CK_1144 = `p11.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_44, Registry_11_44, CK_1144, EP_1144, EV_1144, DeepMerge_1144 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-45.ts new file mode 100644 index 00000000..340bb410 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-45.ts @@ -0,0 +1,50 @@ +// pkg-11/types-45 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1145 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1145 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_45 | null; children: Entity_11_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1145: number; y1145: string; z1145: boolean }; +} + +type Path_1145 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1145}` }[keyof T & string] : never; +type EP_1145 = Path_1145; + +type Val_1145 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1145 } + : T[K] extends object ? { t: 'o'; props: Val_1145 } + : { t: 'u' }; +}; +type EV_1145 = Val_1145; + +interface Registry_11_45 { + entities: Map; + validators: EV_1145; + paths: Set; + merged: DeepMerge_1145; +} + +type CK_1145 = `p11.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_45, Registry_11_45, CK_1145, EP_1145, EV_1145, DeepMerge_1145 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-46.ts new file mode 100644 index 00000000..8c4f4301 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-46.ts @@ -0,0 +1,50 @@ +// pkg-11/types-46 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1146 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1146 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_46 | null; children: Entity_11_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1146: number; y1146: string; z1146: boolean }; +} + +type Path_1146 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1146}` }[keyof T & string] : never; +type EP_1146 = Path_1146; + +type Val_1146 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1146 } + : T[K] extends object ? { t: 'o'; props: Val_1146 } + : { t: 'u' }; +}; +type EV_1146 = Val_1146; + +interface Registry_11_46 { + entities: Map; + validators: EV_1146; + paths: Set; + merged: DeepMerge_1146; +} + +type CK_1146 = `p11.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_46, Registry_11_46, CK_1146, EP_1146, EV_1146, DeepMerge_1146 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-47.ts new file mode 100644 index 00000000..8c78950d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-47.ts @@ -0,0 +1,50 @@ +// pkg-11/types-47 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1147 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1147 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_47 | null; children: Entity_11_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1147: number; y1147: string; z1147: boolean }; +} + +type Path_1147 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1147}` }[keyof T & string] : never; +type EP_1147 = Path_1147; + +type Val_1147 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1147 } + : T[K] extends object ? { t: 'o'; props: Val_1147 } + : { t: 'u' }; +}; +type EV_1147 = Val_1147; + +interface Registry_11_47 { + entities: Map; + validators: EV_1147; + paths: Set; + merged: DeepMerge_1147; +} + +type CK_1147 = `p11.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_47, Registry_11_47, CK_1147, EP_1147, EV_1147, DeepMerge_1147 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-48.ts new file mode 100644 index 00000000..6f352704 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-48.ts @@ -0,0 +1,50 @@ +// pkg-11/types-48 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1148 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1148 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_48 | null; children: Entity_11_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1148: number; y1148: string; z1148: boolean }; +} + +type Path_1148 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1148}` }[keyof T & string] : never; +type EP_1148 = Path_1148; + +type Val_1148 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1148 } + : T[K] extends object ? { t: 'o'; props: Val_1148 } + : { t: 'u' }; +}; +type EV_1148 = Val_1148; + +interface Registry_11_48 { + entities: Map; + validators: EV_1148; + paths: Set; + merged: DeepMerge_1148; +} + +type CK_1148 = `p11.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_48, Registry_11_48, CK_1148, EP_1148, EV_1148, DeepMerge_1148 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-49.ts new file mode 100644 index 00000000..7a07ba7b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-49.ts @@ -0,0 +1,50 @@ +// pkg-11/types-49 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1149 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1149 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_49 | null; children: Entity_11_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1149: number; y1149: string; z1149: boolean }; +} + +type Path_1149 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1149}` }[keyof T & string] : never; +type EP_1149 = Path_1149; + +type Val_1149 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1149 } + : T[K] extends object ? { t: 'o'; props: Val_1149 } + : { t: 'u' }; +}; +type EV_1149 = Val_1149; + +interface Registry_11_49 { + entities: Map; + validators: EV_1149; + paths: Set; + merged: DeepMerge_1149; +} + +type CK_1149 = `p11.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_49, Registry_11_49, CK_1149, EP_1149, EV_1149, DeepMerge_1149 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-11/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-11/types-50.ts new file mode 100644 index 00000000..cc1750f8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-11/types-50.ts @@ -0,0 +1,50 @@ +// pkg-11/types-50 - heavy interconnected types + +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; +import type { Entity_8_01, Registry_8_01 } from '../pkg-08/types-01'; +import type { Entity_8_10, Registry_8_10 } from '../pkg-08/types-10'; +import type { Entity_8_20, Registry_8_20 } from '../pkg-08/types-20'; + +type DeepMerge_1150 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1150 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_11_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_11_50 | null; children: Entity_11_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1150: number; y1150: string; z1150: boolean }; +} + +type Path_1150 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1150}` }[keyof T & string] : never; +type EP_1150 = Path_1150; + +type Val_1150 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1150 } + : T[K] extends object ? { t: 'o'; props: Val_1150 } + : { t: 'u' }; +}; +type EV_1150 = Val_1150; + +interface Registry_11_50 { + entities: Map; + validators: EV_1150; + paths: Set; + merged: DeepMerge_1150; +} + +type CK_1150 = `p11.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_11_50, Registry_11_50, CK_1150, EP_1150, EV_1150, DeepMerge_1150 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-12/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-01.ts new file mode 100644 index 00000000..c080de67 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-01.ts @@ -0,0 +1,50 @@ +// pkg-12/types-01 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1201 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1201 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_01 | null; children: Entity_12_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1201: number; y1201: string; z1201: boolean }; +} + +type Path_1201 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1201}` }[keyof T & string] : never; +type EP_1201 = Path_1201; + +type Val_1201 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1201 } + : T[K] extends object ? { t: 'o'; props: Val_1201 } + : { t: 'u' }; +}; +type EV_1201 = Val_1201; + +interface Registry_12_01 { + entities: Map; + validators: EV_1201; + paths: Set; + merged: DeepMerge_1201; +} + +type CK_1201 = `p12.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_01, Registry_12_01, CK_1201, EP_1201, EV_1201, DeepMerge_1201 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-02.ts new file mode 100644 index 00000000..4becdb2b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-02.ts @@ -0,0 +1,50 @@ +// pkg-12/types-02 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1202 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1202 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_02 | null; children: Entity_12_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1202: number; y1202: string; z1202: boolean }; +} + +type Path_1202 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1202}` }[keyof T & string] : never; +type EP_1202 = Path_1202; + +type Val_1202 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1202 } + : T[K] extends object ? { t: 'o'; props: Val_1202 } + : { t: 'u' }; +}; +type EV_1202 = Val_1202; + +interface Registry_12_02 { + entities: Map; + validators: EV_1202; + paths: Set; + merged: DeepMerge_1202; +} + +type CK_1202 = `p12.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_02, Registry_12_02, CK_1202, EP_1202, EV_1202, DeepMerge_1202 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-03.ts new file mode 100644 index 00000000..b7c3ef03 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-03.ts @@ -0,0 +1,50 @@ +// pkg-12/types-03 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1203 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1203 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_03 | null; children: Entity_12_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1203: number; y1203: string; z1203: boolean }; +} + +type Path_1203 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1203}` }[keyof T & string] : never; +type EP_1203 = Path_1203; + +type Val_1203 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1203 } + : T[K] extends object ? { t: 'o'; props: Val_1203 } + : { t: 'u' }; +}; +type EV_1203 = Val_1203; + +interface Registry_12_03 { + entities: Map; + validators: EV_1203; + paths: Set; + merged: DeepMerge_1203; +} + +type CK_1203 = `p12.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_03, Registry_12_03, CK_1203, EP_1203, EV_1203, DeepMerge_1203 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-04.ts new file mode 100644 index 00000000..58a52b6a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-04.ts @@ -0,0 +1,50 @@ +// pkg-12/types-04 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1204 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1204 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_04 | null; children: Entity_12_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1204: number; y1204: string; z1204: boolean }; +} + +type Path_1204 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1204}` }[keyof T & string] : never; +type EP_1204 = Path_1204; + +type Val_1204 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1204 } + : T[K] extends object ? { t: 'o'; props: Val_1204 } + : { t: 'u' }; +}; +type EV_1204 = Val_1204; + +interface Registry_12_04 { + entities: Map; + validators: EV_1204; + paths: Set; + merged: DeepMerge_1204; +} + +type CK_1204 = `p12.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_04, Registry_12_04, CK_1204, EP_1204, EV_1204, DeepMerge_1204 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-05.ts new file mode 100644 index 00000000..5d39b7ba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-05.ts @@ -0,0 +1,50 @@ +// pkg-12/types-05 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1205 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1205 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_05 | null; children: Entity_12_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1205: number; y1205: string; z1205: boolean }; +} + +type Path_1205 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1205}` }[keyof T & string] : never; +type EP_1205 = Path_1205; + +type Val_1205 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1205 } + : T[K] extends object ? { t: 'o'; props: Val_1205 } + : { t: 'u' }; +}; +type EV_1205 = Val_1205; + +interface Registry_12_05 { + entities: Map; + validators: EV_1205; + paths: Set; + merged: DeepMerge_1205; +} + +type CK_1205 = `p12.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_05, Registry_12_05, CK_1205, EP_1205, EV_1205, DeepMerge_1205 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-06.ts new file mode 100644 index 00000000..b9056748 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-06.ts @@ -0,0 +1,50 @@ +// pkg-12/types-06 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1206 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1206 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_06 | null; children: Entity_12_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1206: number; y1206: string; z1206: boolean }; +} + +type Path_1206 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1206}` }[keyof T & string] : never; +type EP_1206 = Path_1206; + +type Val_1206 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1206 } + : T[K] extends object ? { t: 'o'; props: Val_1206 } + : { t: 'u' }; +}; +type EV_1206 = Val_1206; + +interface Registry_12_06 { + entities: Map; + validators: EV_1206; + paths: Set; + merged: DeepMerge_1206; +} + +type CK_1206 = `p12.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_06, Registry_12_06, CK_1206, EP_1206, EV_1206, DeepMerge_1206 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-07.ts new file mode 100644 index 00000000..79da806f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-07.ts @@ -0,0 +1,50 @@ +// pkg-12/types-07 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1207 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1207 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_07 | null; children: Entity_12_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1207: number; y1207: string; z1207: boolean }; +} + +type Path_1207 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1207}` }[keyof T & string] : never; +type EP_1207 = Path_1207; + +type Val_1207 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1207 } + : T[K] extends object ? { t: 'o'; props: Val_1207 } + : { t: 'u' }; +}; +type EV_1207 = Val_1207; + +interface Registry_12_07 { + entities: Map; + validators: EV_1207; + paths: Set; + merged: DeepMerge_1207; +} + +type CK_1207 = `p12.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_07, Registry_12_07, CK_1207, EP_1207, EV_1207, DeepMerge_1207 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-08.ts new file mode 100644 index 00000000..6f6dee08 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-08.ts @@ -0,0 +1,50 @@ +// pkg-12/types-08 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1208 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1208 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_08 | null; children: Entity_12_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1208: number; y1208: string; z1208: boolean }; +} + +type Path_1208 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1208}` }[keyof T & string] : never; +type EP_1208 = Path_1208; + +type Val_1208 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1208 } + : T[K] extends object ? { t: 'o'; props: Val_1208 } + : { t: 'u' }; +}; +type EV_1208 = Val_1208; + +interface Registry_12_08 { + entities: Map; + validators: EV_1208; + paths: Set; + merged: DeepMerge_1208; +} + +type CK_1208 = `p12.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_08, Registry_12_08, CK_1208, EP_1208, EV_1208, DeepMerge_1208 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-09.ts new file mode 100644 index 00000000..45537185 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-09.ts @@ -0,0 +1,50 @@ +// pkg-12/types-09 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1209 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1209 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_09 | null; children: Entity_12_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1209: number; y1209: string; z1209: boolean }; +} + +type Path_1209 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1209}` }[keyof T & string] : never; +type EP_1209 = Path_1209; + +type Val_1209 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1209 } + : T[K] extends object ? { t: 'o'; props: Val_1209 } + : { t: 'u' }; +}; +type EV_1209 = Val_1209; + +interface Registry_12_09 { + entities: Map; + validators: EV_1209; + paths: Set; + merged: DeepMerge_1209; +} + +type CK_1209 = `p12.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_09, Registry_12_09, CK_1209, EP_1209, EV_1209, DeepMerge_1209 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-10.ts new file mode 100644 index 00000000..458210a0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-10.ts @@ -0,0 +1,50 @@ +// pkg-12/types-10 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1210 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1210 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_10 | null; children: Entity_12_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1210: number; y1210: string; z1210: boolean }; +} + +type Path_1210 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1210}` }[keyof T & string] : never; +type EP_1210 = Path_1210; + +type Val_1210 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1210 } + : T[K] extends object ? { t: 'o'; props: Val_1210 } + : { t: 'u' }; +}; +type EV_1210 = Val_1210; + +interface Registry_12_10 { + entities: Map; + validators: EV_1210; + paths: Set; + merged: DeepMerge_1210; +} + +type CK_1210 = `p12.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_10, Registry_12_10, CK_1210, EP_1210, EV_1210, DeepMerge_1210 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-11.ts new file mode 100644 index 00000000..69cd3284 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-11.ts @@ -0,0 +1,50 @@ +// pkg-12/types-11 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1211 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1211 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_11 | null; children: Entity_12_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1211: number; y1211: string; z1211: boolean }; +} + +type Path_1211 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1211}` }[keyof T & string] : never; +type EP_1211 = Path_1211; + +type Val_1211 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1211 } + : T[K] extends object ? { t: 'o'; props: Val_1211 } + : { t: 'u' }; +}; +type EV_1211 = Val_1211; + +interface Registry_12_11 { + entities: Map; + validators: EV_1211; + paths: Set; + merged: DeepMerge_1211; +} + +type CK_1211 = `p12.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_11, Registry_12_11, CK_1211, EP_1211, EV_1211, DeepMerge_1211 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-12.ts new file mode 100644 index 00000000..c6d9f534 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-12.ts @@ -0,0 +1,50 @@ +// pkg-12/types-12 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1212 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1212 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_12 | null; children: Entity_12_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1212: number; y1212: string; z1212: boolean }; +} + +type Path_1212 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1212}` }[keyof T & string] : never; +type EP_1212 = Path_1212; + +type Val_1212 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1212 } + : T[K] extends object ? { t: 'o'; props: Val_1212 } + : { t: 'u' }; +}; +type EV_1212 = Val_1212; + +interface Registry_12_12 { + entities: Map; + validators: EV_1212; + paths: Set; + merged: DeepMerge_1212; +} + +type CK_1212 = `p12.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_12, Registry_12_12, CK_1212, EP_1212, EV_1212, DeepMerge_1212 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-13.ts new file mode 100644 index 00000000..2ac77803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-13.ts @@ -0,0 +1,50 @@ +// pkg-12/types-13 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1213 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1213 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_13 | null; children: Entity_12_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1213: number; y1213: string; z1213: boolean }; +} + +type Path_1213 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1213}` }[keyof T & string] : never; +type EP_1213 = Path_1213; + +type Val_1213 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1213 } + : T[K] extends object ? { t: 'o'; props: Val_1213 } + : { t: 'u' }; +}; +type EV_1213 = Val_1213; + +interface Registry_12_13 { + entities: Map; + validators: EV_1213; + paths: Set; + merged: DeepMerge_1213; +} + +type CK_1213 = `p12.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_13, Registry_12_13, CK_1213, EP_1213, EV_1213, DeepMerge_1213 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-14.ts new file mode 100644 index 00000000..e155a019 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-14.ts @@ -0,0 +1,50 @@ +// pkg-12/types-14 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1214 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1214 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_14 | null; children: Entity_12_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1214: number; y1214: string; z1214: boolean }; +} + +type Path_1214 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1214}` }[keyof T & string] : never; +type EP_1214 = Path_1214; + +type Val_1214 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1214 } + : T[K] extends object ? { t: 'o'; props: Val_1214 } + : { t: 'u' }; +}; +type EV_1214 = Val_1214; + +interface Registry_12_14 { + entities: Map; + validators: EV_1214; + paths: Set; + merged: DeepMerge_1214; +} + +type CK_1214 = `p12.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_14, Registry_12_14, CK_1214, EP_1214, EV_1214, DeepMerge_1214 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-15.ts new file mode 100644 index 00000000..9f883f28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-15.ts @@ -0,0 +1,50 @@ +// pkg-12/types-15 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1215 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1215 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_15 | null; children: Entity_12_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1215: number; y1215: string; z1215: boolean }; +} + +type Path_1215 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1215}` }[keyof T & string] : never; +type EP_1215 = Path_1215; + +type Val_1215 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1215 } + : T[K] extends object ? { t: 'o'; props: Val_1215 } + : { t: 'u' }; +}; +type EV_1215 = Val_1215; + +interface Registry_12_15 { + entities: Map; + validators: EV_1215; + paths: Set; + merged: DeepMerge_1215; +} + +type CK_1215 = `p12.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_15, Registry_12_15, CK_1215, EP_1215, EV_1215, DeepMerge_1215 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-16.ts new file mode 100644 index 00000000..c38a4bff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-16.ts @@ -0,0 +1,50 @@ +// pkg-12/types-16 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1216 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1216 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_16 | null; children: Entity_12_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1216: number; y1216: string; z1216: boolean }; +} + +type Path_1216 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1216}` }[keyof T & string] : never; +type EP_1216 = Path_1216; + +type Val_1216 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1216 } + : T[K] extends object ? { t: 'o'; props: Val_1216 } + : { t: 'u' }; +}; +type EV_1216 = Val_1216; + +interface Registry_12_16 { + entities: Map; + validators: EV_1216; + paths: Set; + merged: DeepMerge_1216; +} + +type CK_1216 = `p12.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_16, Registry_12_16, CK_1216, EP_1216, EV_1216, DeepMerge_1216 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-17.ts new file mode 100644 index 00000000..c59a3a94 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-17.ts @@ -0,0 +1,50 @@ +// pkg-12/types-17 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1217 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1217 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_17 | null; children: Entity_12_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1217: number; y1217: string; z1217: boolean }; +} + +type Path_1217 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1217}` }[keyof T & string] : never; +type EP_1217 = Path_1217; + +type Val_1217 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1217 } + : T[K] extends object ? { t: 'o'; props: Val_1217 } + : { t: 'u' }; +}; +type EV_1217 = Val_1217; + +interface Registry_12_17 { + entities: Map; + validators: EV_1217; + paths: Set; + merged: DeepMerge_1217; +} + +type CK_1217 = `p12.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_17, Registry_12_17, CK_1217, EP_1217, EV_1217, DeepMerge_1217 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-18.ts new file mode 100644 index 00000000..c4e63bf1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-18.ts @@ -0,0 +1,50 @@ +// pkg-12/types-18 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1218 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1218 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_18 | null; children: Entity_12_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1218: number; y1218: string; z1218: boolean }; +} + +type Path_1218 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1218}` }[keyof T & string] : never; +type EP_1218 = Path_1218; + +type Val_1218 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1218 } + : T[K] extends object ? { t: 'o'; props: Val_1218 } + : { t: 'u' }; +}; +type EV_1218 = Val_1218; + +interface Registry_12_18 { + entities: Map; + validators: EV_1218; + paths: Set; + merged: DeepMerge_1218; +} + +type CK_1218 = `p12.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_18, Registry_12_18, CK_1218, EP_1218, EV_1218, DeepMerge_1218 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-19.ts new file mode 100644 index 00000000..ce944ff6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-19.ts @@ -0,0 +1,50 @@ +// pkg-12/types-19 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1219 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1219 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_19 | null; children: Entity_12_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1219: number; y1219: string; z1219: boolean }; +} + +type Path_1219 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1219}` }[keyof T & string] : never; +type EP_1219 = Path_1219; + +type Val_1219 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1219 } + : T[K] extends object ? { t: 'o'; props: Val_1219 } + : { t: 'u' }; +}; +type EV_1219 = Val_1219; + +interface Registry_12_19 { + entities: Map; + validators: EV_1219; + paths: Set; + merged: DeepMerge_1219; +} + +type CK_1219 = `p12.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_19, Registry_12_19, CK_1219, EP_1219, EV_1219, DeepMerge_1219 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-20.ts new file mode 100644 index 00000000..d85c7df1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-20.ts @@ -0,0 +1,50 @@ +// pkg-12/types-20 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1220 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1220 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_20 | null; children: Entity_12_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1220: number; y1220: string; z1220: boolean }; +} + +type Path_1220 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1220}` }[keyof T & string] : never; +type EP_1220 = Path_1220; + +type Val_1220 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1220 } + : T[K] extends object ? { t: 'o'; props: Val_1220 } + : { t: 'u' }; +}; +type EV_1220 = Val_1220; + +interface Registry_12_20 { + entities: Map; + validators: EV_1220; + paths: Set; + merged: DeepMerge_1220; +} + +type CK_1220 = `p12.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_20, Registry_12_20, CK_1220, EP_1220, EV_1220, DeepMerge_1220 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-21.ts new file mode 100644 index 00000000..ef783017 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-21.ts @@ -0,0 +1,50 @@ +// pkg-12/types-21 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1221 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1221 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_21 | null; children: Entity_12_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1221: number; y1221: string; z1221: boolean }; +} + +type Path_1221 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1221}` }[keyof T & string] : never; +type EP_1221 = Path_1221; + +type Val_1221 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1221 } + : T[K] extends object ? { t: 'o'; props: Val_1221 } + : { t: 'u' }; +}; +type EV_1221 = Val_1221; + +interface Registry_12_21 { + entities: Map; + validators: EV_1221; + paths: Set; + merged: DeepMerge_1221; +} + +type CK_1221 = `p12.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_21, Registry_12_21, CK_1221, EP_1221, EV_1221, DeepMerge_1221 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-22.ts new file mode 100644 index 00000000..9147a7e0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-22.ts @@ -0,0 +1,50 @@ +// pkg-12/types-22 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1222 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1222 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_22 | null; children: Entity_12_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1222: number; y1222: string; z1222: boolean }; +} + +type Path_1222 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1222}` }[keyof T & string] : never; +type EP_1222 = Path_1222; + +type Val_1222 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1222 } + : T[K] extends object ? { t: 'o'; props: Val_1222 } + : { t: 'u' }; +}; +type EV_1222 = Val_1222; + +interface Registry_12_22 { + entities: Map; + validators: EV_1222; + paths: Set; + merged: DeepMerge_1222; +} + +type CK_1222 = `p12.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_22, Registry_12_22, CK_1222, EP_1222, EV_1222, DeepMerge_1222 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-23.ts new file mode 100644 index 00000000..8f22f414 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-23.ts @@ -0,0 +1,50 @@ +// pkg-12/types-23 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1223 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1223 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_23 | null; children: Entity_12_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1223: number; y1223: string; z1223: boolean }; +} + +type Path_1223 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1223}` }[keyof T & string] : never; +type EP_1223 = Path_1223; + +type Val_1223 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1223 } + : T[K] extends object ? { t: 'o'; props: Val_1223 } + : { t: 'u' }; +}; +type EV_1223 = Val_1223; + +interface Registry_12_23 { + entities: Map; + validators: EV_1223; + paths: Set; + merged: DeepMerge_1223; +} + +type CK_1223 = `p12.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_23, Registry_12_23, CK_1223, EP_1223, EV_1223, DeepMerge_1223 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-24.ts new file mode 100644 index 00000000..4f3c50e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-24.ts @@ -0,0 +1,50 @@ +// pkg-12/types-24 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1224 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1224 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_24 | null; children: Entity_12_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1224: number; y1224: string; z1224: boolean }; +} + +type Path_1224 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1224}` }[keyof T & string] : never; +type EP_1224 = Path_1224; + +type Val_1224 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1224 } + : T[K] extends object ? { t: 'o'; props: Val_1224 } + : { t: 'u' }; +}; +type EV_1224 = Val_1224; + +interface Registry_12_24 { + entities: Map; + validators: EV_1224; + paths: Set; + merged: DeepMerge_1224; +} + +type CK_1224 = `p12.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_24, Registry_12_24, CK_1224, EP_1224, EV_1224, DeepMerge_1224 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-25.ts new file mode 100644 index 00000000..94ed1e62 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-25.ts @@ -0,0 +1,50 @@ +// pkg-12/types-25 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1225 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1225 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_25 | null; children: Entity_12_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1225: number; y1225: string; z1225: boolean }; +} + +type Path_1225 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1225}` }[keyof T & string] : never; +type EP_1225 = Path_1225; + +type Val_1225 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1225 } + : T[K] extends object ? { t: 'o'; props: Val_1225 } + : { t: 'u' }; +}; +type EV_1225 = Val_1225; + +interface Registry_12_25 { + entities: Map; + validators: EV_1225; + paths: Set; + merged: DeepMerge_1225; +} + +type CK_1225 = `p12.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_25, Registry_12_25, CK_1225, EP_1225, EV_1225, DeepMerge_1225 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-26.ts new file mode 100644 index 00000000..9b6ce9ff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-26.ts @@ -0,0 +1,50 @@ +// pkg-12/types-26 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1226 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1226 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_26 | null; children: Entity_12_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1226: number; y1226: string; z1226: boolean }; +} + +type Path_1226 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1226}` }[keyof T & string] : never; +type EP_1226 = Path_1226; + +type Val_1226 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1226 } + : T[K] extends object ? { t: 'o'; props: Val_1226 } + : { t: 'u' }; +}; +type EV_1226 = Val_1226; + +interface Registry_12_26 { + entities: Map; + validators: EV_1226; + paths: Set; + merged: DeepMerge_1226; +} + +type CK_1226 = `p12.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_26, Registry_12_26, CK_1226, EP_1226, EV_1226, DeepMerge_1226 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-27.ts new file mode 100644 index 00000000..23ff0926 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-27.ts @@ -0,0 +1,50 @@ +// pkg-12/types-27 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1227 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1227 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_27 | null; children: Entity_12_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1227: number; y1227: string; z1227: boolean }; +} + +type Path_1227 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1227}` }[keyof T & string] : never; +type EP_1227 = Path_1227; + +type Val_1227 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1227 } + : T[K] extends object ? { t: 'o'; props: Val_1227 } + : { t: 'u' }; +}; +type EV_1227 = Val_1227; + +interface Registry_12_27 { + entities: Map; + validators: EV_1227; + paths: Set; + merged: DeepMerge_1227; +} + +type CK_1227 = `p12.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_27, Registry_12_27, CK_1227, EP_1227, EV_1227, DeepMerge_1227 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-28.ts new file mode 100644 index 00000000..9a54fd49 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-28.ts @@ -0,0 +1,50 @@ +// pkg-12/types-28 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1228 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1228 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_28 | null; children: Entity_12_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1228: number; y1228: string; z1228: boolean }; +} + +type Path_1228 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1228}` }[keyof T & string] : never; +type EP_1228 = Path_1228; + +type Val_1228 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1228 } + : T[K] extends object ? { t: 'o'; props: Val_1228 } + : { t: 'u' }; +}; +type EV_1228 = Val_1228; + +interface Registry_12_28 { + entities: Map; + validators: EV_1228; + paths: Set; + merged: DeepMerge_1228; +} + +type CK_1228 = `p12.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_28, Registry_12_28, CK_1228, EP_1228, EV_1228, DeepMerge_1228 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-29.ts new file mode 100644 index 00000000..6c49eab8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-29.ts @@ -0,0 +1,50 @@ +// pkg-12/types-29 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1229 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1229 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_29 | null; children: Entity_12_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1229: number; y1229: string; z1229: boolean }; +} + +type Path_1229 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1229}` }[keyof T & string] : never; +type EP_1229 = Path_1229; + +type Val_1229 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1229 } + : T[K] extends object ? { t: 'o'; props: Val_1229 } + : { t: 'u' }; +}; +type EV_1229 = Val_1229; + +interface Registry_12_29 { + entities: Map; + validators: EV_1229; + paths: Set; + merged: DeepMerge_1229; +} + +type CK_1229 = `p12.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_29, Registry_12_29, CK_1229, EP_1229, EV_1229, DeepMerge_1229 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-30.ts new file mode 100644 index 00000000..9c550f02 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-30.ts @@ -0,0 +1,50 @@ +// pkg-12/types-30 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1230 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1230 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_30 | null; children: Entity_12_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1230: number; y1230: string; z1230: boolean }; +} + +type Path_1230 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1230}` }[keyof T & string] : never; +type EP_1230 = Path_1230; + +type Val_1230 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1230 } + : T[K] extends object ? { t: 'o'; props: Val_1230 } + : { t: 'u' }; +}; +type EV_1230 = Val_1230; + +interface Registry_12_30 { + entities: Map; + validators: EV_1230; + paths: Set; + merged: DeepMerge_1230; +} + +type CK_1230 = `p12.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_30, Registry_12_30, CK_1230, EP_1230, EV_1230, DeepMerge_1230 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-31.ts new file mode 100644 index 00000000..7b7af44e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-31.ts @@ -0,0 +1,50 @@ +// pkg-12/types-31 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1231 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1231 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_31 | null; children: Entity_12_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1231: number; y1231: string; z1231: boolean }; +} + +type Path_1231 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1231}` }[keyof T & string] : never; +type EP_1231 = Path_1231; + +type Val_1231 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1231 } + : T[K] extends object ? { t: 'o'; props: Val_1231 } + : { t: 'u' }; +}; +type EV_1231 = Val_1231; + +interface Registry_12_31 { + entities: Map; + validators: EV_1231; + paths: Set; + merged: DeepMerge_1231; +} + +type CK_1231 = `p12.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_31, Registry_12_31, CK_1231, EP_1231, EV_1231, DeepMerge_1231 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-32.ts new file mode 100644 index 00000000..8c6f8260 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-32.ts @@ -0,0 +1,50 @@ +// pkg-12/types-32 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1232 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1232 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_32 | null; children: Entity_12_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1232: number; y1232: string; z1232: boolean }; +} + +type Path_1232 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1232}` }[keyof T & string] : never; +type EP_1232 = Path_1232; + +type Val_1232 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1232 } + : T[K] extends object ? { t: 'o'; props: Val_1232 } + : { t: 'u' }; +}; +type EV_1232 = Val_1232; + +interface Registry_12_32 { + entities: Map; + validators: EV_1232; + paths: Set; + merged: DeepMerge_1232; +} + +type CK_1232 = `p12.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_32, Registry_12_32, CK_1232, EP_1232, EV_1232, DeepMerge_1232 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-33.ts new file mode 100644 index 00000000..88182d0e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-33.ts @@ -0,0 +1,50 @@ +// pkg-12/types-33 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1233 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1233 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_33 | null; children: Entity_12_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1233: number; y1233: string; z1233: boolean }; +} + +type Path_1233 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1233}` }[keyof T & string] : never; +type EP_1233 = Path_1233; + +type Val_1233 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1233 } + : T[K] extends object ? { t: 'o'; props: Val_1233 } + : { t: 'u' }; +}; +type EV_1233 = Val_1233; + +interface Registry_12_33 { + entities: Map; + validators: EV_1233; + paths: Set; + merged: DeepMerge_1233; +} + +type CK_1233 = `p12.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_33, Registry_12_33, CK_1233, EP_1233, EV_1233, DeepMerge_1233 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-34.ts new file mode 100644 index 00000000..b4ab826a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-34.ts @@ -0,0 +1,50 @@ +// pkg-12/types-34 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1234 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1234 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_34 | null; children: Entity_12_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1234: number; y1234: string; z1234: boolean }; +} + +type Path_1234 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1234}` }[keyof T & string] : never; +type EP_1234 = Path_1234; + +type Val_1234 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1234 } + : T[K] extends object ? { t: 'o'; props: Val_1234 } + : { t: 'u' }; +}; +type EV_1234 = Val_1234; + +interface Registry_12_34 { + entities: Map; + validators: EV_1234; + paths: Set; + merged: DeepMerge_1234; +} + +type CK_1234 = `p12.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_34, Registry_12_34, CK_1234, EP_1234, EV_1234, DeepMerge_1234 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-35.ts new file mode 100644 index 00000000..c91fae9a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-35.ts @@ -0,0 +1,50 @@ +// pkg-12/types-35 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1235 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1235 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_35 | null; children: Entity_12_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1235: number; y1235: string; z1235: boolean }; +} + +type Path_1235 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1235}` }[keyof T & string] : never; +type EP_1235 = Path_1235; + +type Val_1235 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1235 } + : T[K] extends object ? { t: 'o'; props: Val_1235 } + : { t: 'u' }; +}; +type EV_1235 = Val_1235; + +interface Registry_12_35 { + entities: Map; + validators: EV_1235; + paths: Set; + merged: DeepMerge_1235; +} + +type CK_1235 = `p12.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_35, Registry_12_35, CK_1235, EP_1235, EV_1235, DeepMerge_1235 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-36.ts new file mode 100644 index 00000000..e86ff312 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-36.ts @@ -0,0 +1,50 @@ +// pkg-12/types-36 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1236 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1236 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_36 | null; children: Entity_12_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1236: number; y1236: string; z1236: boolean }; +} + +type Path_1236 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1236}` }[keyof T & string] : never; +type EP_1236 = Path_1236; + +type Val_1236 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1236 } + : T[K] extends object ? { t: 'o'; props: Val_1236 } + : { t: 'u' }; +}; +type EV_1236 = Val_1236; + +interface Registry_12_36 { + entities: Map; + validators: EV_1236; + paths: Set; + merged: DeepMerge_1236; +} + +type CK_1236 = `p12.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_36, Registry_12_36, CK_1236, EP_1236, EV_1236, DeepMerge_1236 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-37.ts new file mode 100644 index 00000000..35d1cf40 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-37.ts @@ -0,0 +1,50 @@ +// pkg-12/types-37 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1237 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1237 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_37 | null; children: Entity_12_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1237: number; y1237: string; z1237: boolean }; +} + +type Path_1237 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1237}` }[keyof T & string] : never; +type EP_1237 = Path_1237; + +type Val_1237 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1237 } + : T[K] extends object ? { t: 'o'; props: Val_1237 } + : { t: 'u' }; +}; +type EV_1237 = Val_1237; + +interface Registry_12_37 { + entities: Map; + validators: EV_1237; + paths: Set; + merged: DeepMerge_1237; +} + +type CK_1237 = `p12.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_37, Registry_12_37, CK_1237, EP_1237, EV_1237, DeepMerge_1237 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-38.ts new file mode 100644 index 00000000..ffccc8e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-38.ts @@ -0,0 +1,50 @@ +// pkg-12/types-38 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1238 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1238 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_38 | null; children: Entity_12_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1238: number; y1238: string; z1238: boolean }; +} + +type Path_1238 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1238}` }[keyof T & string] : never; +type EP_1238 = Path_1238; + +type Val_1238 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1238 } + : T[K] extends object ? { t: 'o'; props: Val_1238 } + : { t: 'u' }; +}; +type EV_1238 = Val_1238; + +interface Registry_12_38 { + entities: Map; + validators: EV_1238; + paths: Set; + merged: DeepMerge_1238; +} + +type CK_1238 = `p12.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_38, Registry_12_38, CK_1238, EP_1238, EV_1238, DeepMerge_1238 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-39.ts new file mode 100644 index 00000000..9eafe79f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-39.ts @@ -0,0 +1,50 @@ +// pkg-12/types-39 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1239 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1239 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_39 | null; children: Entity_12_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1239: number; y1239: string; z1239: boolean }; +} + +type Path_1239 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1239}` }[keyof T & string] : never; +type EP_1239 = Path_1239; + +type Val_1239 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1239 } + : T[K] extends object ? { t: 'o'; props: Val_1239 } + : { t: 'u' }; +}; +type EV_1239 = Val_1239; + +interface Registry_12_39 { + entities: Map; + validators: EV_1239; + paths: Set; + merged: DeepMerge_1239; +} + +type CK_1239 = `p12.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_39, Registry_12_39, CK_1239, EP_1239, EV_1239, DeepMerge_1239 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-40.ts new file mode 100644 index 00000000..ae0f4aa8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-40.ts @@ -0,0 +1,50 @@ +// pkg-12/types-40 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1240 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1240 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_40 | null; children: Entity_12_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1240: number; y1240: string; z1240: boolean }; +} + +type Path_1240 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1240}` }[keyof T & string] : never; +type EP_1240 = Path_1240; + +type Val_1240 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1240 } + : T[K] extends object ? { t: 'o'; props: Val_1240 } + : { t: 'u' }; +}; +type EV_1240 = Val_1240; + +interface Registry_12_40 { + entities: Map; + validators: EV_1240; + paths: Set; + merged: DeepMerge_1240; +} + +type CK_1240 = `p12.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_40, Registry_12_40, CK_1240, EP_1240, EV_1240, DeepMerge_1240 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-41.ts new file mode 100644 index 00000000..014be760 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-41.ts @@ -0,0 +1,50 @@ +// pkg-12/types-41 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1241 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1241 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_41 | null; children: Entity_12_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1241: number; y1241: string; z1241: boolean }; +} + +type Path_1241 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1241}` }[keyof T & string] : never; +type EP_1241 = Path_1241; + +type Val_1241 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1241 } + : T[K] extends object ? { t: 'o'; props: Val_1241 } + : { t: 'u' }; +}; +type EV_1241 = Val_1241; + +interface Registry_12_41 { + entities: Map; + validators: EV_1241; + paths: Set; + merged: DeepMerge_1241; +} + +type CK_1241 = `p12.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_41, Registry_12_41, CK_1241, EP_1241, EV_1241, DeepMerge_1241 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-42.ts new file mode 100644 index 00000000..5b30afff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-42.ts @@ -0,0 +1,50 @@ +// pkg-12/types-42 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1242 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1242 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_42 | null; children: Entity_12_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1242: number; y1242: string; z1242: boolean }; +} + +type Path_1242 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1242}` }[keyof T & string] : never; +type EP_1242 = Path_1242; + +type Val_1242 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1242 } + : T[K] extends object ? { t: 'o'; props: Val_1242 } + : { t: 'u' }; +}; +type EV_1242 = Val_1242; + +interface Registry_12_42 { + entities: Map; + validators: EV_1242; + paths: Set; + merged: DeepMerge_1242; +} + +type CK_1242 = `p12.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_42, Registry_12_42, CK_1242, EP_1242, EV_1242, DeepMerge_1242 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-43.ts new file mode 100644 index 00000000..7094f9f1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-43.ts @@ -0,0 +1,50 @@ +// pkg-12/types-43 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1243 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1243 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_43 | null; children: Entity_12_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1243: number; y1243: string; z1243: boolean }; +} + +type Path_1243 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1243}` }[keyof T & string] : never; +type EP_1243 = Path_1243; + +type Val_1243 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1243 } + : T[K] extends object ? { t: 'o'; props: Val_1243 } + : { t: 'u' }; +}; +type EV_1243 = Val_1243; + +interface Registry_12_43 { + entities: Map; + validators: EV_1243; + paths: Set; + merged: DeepMerge_1243; +} + +type CK_1243 = `p12.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_43, Registry_12_43, CK_1243, EP_1243, EV_1243, DeepMerge_1243 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-44.ts new file mode 100644 index 00000000..94bbfa38 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-44.ts @@ -0,0 +1,50 @@ +// pkg-12/types-44 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1244 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1244 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_44 | null; children: Entity_12_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1244: number; y1244: string; z1244: boolean }; +} + +type Path_1244 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1244}` }[keyof T & string] : never; +type EP_1244 = Path_1244; + +type Val_1244 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1244 } + : T[K] extends object ? { t: 'o'; props: Val_1244 } + : { t: 'u' }; +}; +type EV_1244 = Val_1244; + +interface Registry_12_44 { + entities: Map; + validators: EV_1244; + paths: Set; + merged: DeepMerge_1244; +} + +type CK_1244 = `p12.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_44, Registry_12_44, CK_1244, EP_1244, EV_1244, DeepMerge_1244 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-45.ts new file mode 100644 index 00000000..80887d37 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-45.ts @@ -0,0 +1,50 @@ +// pkg-12/types-45 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1245 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1245 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_45 | null; children: Entity_12_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1245: number; y1245: string; z1245: boolean }; +} + +type Path_1245 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1245}` }[keyof T & string] : never; +type EP_1245 = Path_1245; + +type Val_1245 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1245 } + : T[K] extends object ? { t: 'o'; props: Val_1245 } + : { t: 'u' }; +}; +type EV_1245 = Val_1245; + +interface Registry_12_45 { + entities: Map; + validators: EV_1245; + paths: Set; + merged: DeepMerge_1245; +} + +type CK_1245 = `p12.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_45, Registry_12_45, CK_1245, EP_1245, EV_1245, DeepMerge_1245 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-46.ts new file mode 100644 index 00000000..70c16dc2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-46.ts @@ -0,0 +1,50 @@ +// pkg-12/types-46 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1246 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1246 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_46 | null; children: Entity_12_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1246: number; y1246: string; z1246: boolean }; +} + +type Path_1246 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1246}` }[keyof T & string] : never; +type EP_1246 = Path_1246; + +type Val_1246 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1246 } + : T[K] extends object ? { t: 'o'; props: Val_1246 } + : { t: 'u' }; +}; +type EV_1246 = Val_1246; + +interface Registry_12_46 { + entities: Map; + validators: EV_1246; + paths: Set; + merged: DeepMerge_1246; +} + +type CK_1246 = `p12.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_46, Registry_12_46, CK_1246, EP_1246, EV_1246, DeepMerge_1246 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-47.ts new file mode 100644 index 00000000..162b11d9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-47.ts @@ -0,0 +1,50 @@ +// pkg-12/types-47 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1247 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1247 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_47 | null; children: Entity_12_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1247: number; y1247: string; z1247: boolean }; +} + +type Path_1247 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1247}` }[keyof T & string] : never; +type EP_1247 = Path_1247; + +type Val_1247 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1247 } + : T[K] extends object ? { t: 'o'; props: Val_1247 } + : { t: 'u' }; +}; +type EV_1247 = Val_1247; + +interface Registry_12_47 { + entities: Map; + validators: EV_1247; + paths: Set; + merged: DeepMerge_1247; +} + +type CK_1247 = `p12.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_47, Registry_12_47, CK_1247, EP_1247, EV_1247, DeepMerge_1247 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-48.ts new file mode 100644 index 00000000..bd9f59e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-48.ts @@ -0,0 +1,50 @@ +// pkg-12/types-48 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1248 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1248 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_48 | null; children: Entity_12_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1248: number; y1248: string; z1248: boolean }; +} + +type Path_1248 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1248}` }[keyof T & string] : never; +type EP_1248 = Path_1248; + +type Val_1248 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1248 } + : T[K] extends object ? { t: 'o'; props: Val_1248 } + : { t: 'u' }; +}; +type EV_1248 = Val_1248; + +interface Registry_12_48 { + entities: Map; + validators: EV_1248; + paths: Set; + merged: DeepMerge_1248; +} + +type CK_1248 = `p12.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_48, Registry_12_48, CK_1248, EP_1248, EV_1248, DeepMerge_1248 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-49.ts new file mode 100644 index 00000000..2dc278c8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-49.ts @@ -0,0 +1,50 @@ +// pkg-12/types-49 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1249 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1249 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_49 | null; children: Entity_12_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1249: number; y1249: string; z1249: boolean }; +} + +type Path_1249 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1249}` }[keyof T & string] : never; +type EP_1249 = Path_1249; + +type Val_1249 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1249 } + : T[K] extends object ? { t: 'o'; props: Val_1249 } + : { t: 'u' }; +}; +type EV_1249 = Val_1249; + +interface Registry_12_49 { + entities: Map; + validators: EV_1249; + paths: Set; + merged: DeepMerge_1249; +} + +type CK_1249 = `p12.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_49, Registry_12_49, CK_1249, EP_1249, EV_1249, DeepMerge_1249 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-12/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-12/types-50.ts new file mode 100644 index 00000000..ed6870ce --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-12/types-50.ts @@ -0,0 +1,50 @@ +// pkg-12/types-50 - heavy interconnected types + +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; +import type { Entity_9_01, Registry_9_01 } from '../pkg-09/types-01'; +import type { Entity_9_10, Registry_9_10 } from '../pkg-09/types-10'; +import type { Entity_9_20, Registry_9_20 } from '../pkg-09/types-20'; + +type DeepMerge_1250 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1250 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_12_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_12_50 | null; children: Entity_12_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1250: number; y1250: string; z1250: boolean }; +} + +type Path_1250 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1250}` }[keyof T & string] : never; +type EP_1250 = Path_1250; + +type Val_1250 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1250 } + : T[K] extends object ? { t: 'o'; props: Val_1250 } + : { t: 'u' }; +}; +type EV_1250 = Val_1250; + +interface Registry_12_50 { + entities: Map; + validators: EV_1250; + paths: Set; + merged: DeepMerge_1250; +} + +type CK_1250 = `p12.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_12_50, Registry_12_50, CK_1250, EP_1250, EV_1250, DeepMerge_1250 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-13/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-01.ts new file mode 100644 index 00000000..c55fd994 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-01.ts @@ -0,0 +1,50 @@ +// pkg-13/types-01 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1301 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1301 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_01 | null; children: Entity_13_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1301: number; y1301: string; z1301: boolean }; +} + +type Path_1301 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1301}` }[keyof T & string] : never; +type EP_1301 = Path_1301; + +type Val_1301 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1301 } + : T[K] extends object ? { t: 'o'; props: Val_1301 } + : { t: 'u' }; +}; +type EV_1301 = Val_1301; + +interface Registry_13_01 { + entities: Map; + validators: EV_1301; + paths: Set; + merged: DeepMerge_1301; +} + +type CK_1301 = `p13.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_01, Registry_13_01, CK_1301, EP_1301, EV_1301, DeepMerge_1301 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-02.ts new file mode 100644 index 00000000..7a9fab5b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-02.ts @@ -0,0 +1,50 @@ +// pkg-13/types-02 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1302 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1302 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_02 | null; children: Entity_13_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1302: number; y1302: string; z1302: boolean }; +} + +type Path_1302 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1302}` }[keyof T & string] : never; +type EP_1302 = Path_1302; + +type Val_1302 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1302 } + : T[K] extends object ? { t: 'o'; props: Val_1302 } + : { t: 'u' }; +}; +type EV_1302 = Val_1302; + +interface Registry_13_02 { + entities: Map; + validators: EV_1302; + paths: Set; + merged: DeepMerge_1302; +} + +type CK_1302 = `p13.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_02, Registry_13_02, CK_1302, EP_1302, EV_1302, DeepMerge_1302 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-03.ts new file mode 100644 index 00000000..a34eac5d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-03.ts @@ -0,0 +1,50 @@ +// pkg-13/types-03 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1303 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1303 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_03 | null; children: Entity_13_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1303: number; y1303: string; z1303: boolean }; +} + +type Path_1303 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1303}` }[keyof T & string] : never; +type EP_1303 = Path_1303; + +type Val_1303 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1303 } + : T[K] extends object ? { t: 'o'; props: Val_1303 } + : { t: 'u' }; +}; +type EV_1303 = Val_1303; + +interface Registry_13_03 { + entities: Map; + validators: EV_1303; + paths: Set; + merged: DeepMerge_1303; +} + +type CK_1303 = `p13.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_03, Registry_13_03, CK_1303, EP_1303, EV_1303, DeepMerge_1303 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-04.ts new file mode 100644 index 00000000..e8a93b3e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-04.ts @@ -0,0 +1,50 @@ +// pkg-13/types-04 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1304 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1304 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_04 | null; children: Entity_13_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1304: number; y1304: string; z1304: boolean }; +} + +type Path_1304 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1304}` }[keyof T & string] : never; +type EP_1304 = Path_1304; + +type Val_1304 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1304 } + : T[K] extends object ? { t: 'o'; props: Val_1304 } + : { t: 'u' }; +}; +type EV_1304 = Val_1304; + +interface Registry_13_04 { + entities: Map; + validators: EV_1304; + paths: Set; + merged: DeepMerge_1304; +} + +type CK_1304 = `p13.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_04, Registry_13_04, CK_1304, EP_1304, EV_1304, DeepMerge_1304 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-05.ts new file mode 100644 index 00000000..4dfa445f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-05.ts @@ -0,0 +1,50 @@ +// pkg-13/types-05 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1305 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1305 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_05 | null; children: Entity_13_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1305: number; y1305: string; z1305: boolean }; +} + +type Path_1305 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1305}` }[keyof T & string] : never; +type EP_1305 = Path_1305; + +type Val_1305 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1305 } + : T[K] extends object ? { t: 'o'; props: Val_1305 } + : { t: 'u' }; +}; +type EV_1305 = Val_1305; + +interface Registry_13_05 { + entities: Map; + validators: EV_1305; + paths: Set; + merged: DeepMerge_1305; +} + +type CK_1305 = `p13.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_05, Registry_13_05, CK_1305, EP_1305, EV_1305, DeepMerge_1305 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-06.ts new file mode 100644 index 00000000..ad23f8dd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-06.ts @@ -0,0 +1,50 @@ +// pkg-13/types-06 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1306 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1306 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_06 | null; children: Entity_13_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1306: number; y1306: string; z1306: boolean }; +} + +type Path_1306 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1306}` }[keyof T & string] : never; +type EP_1306 = Path_1306; + +type Val_1306 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1306 } + : T[K] extends object ? { t: 'o'; props: Val_1306 } + : { t: 'u' }; +}; +type EV_1306 = Val_1306; + +interface Registry_13_06 { + entities: Map; + validators: EV_1306; + paths: Set; + merged: DeepMerge_1306; +} + +type CK_1306 = `p13.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_06, Registry_13_06, CK_1306, EP_1306, EV_1306, DeepMerge_1306 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-07.ts new file mode 100644 index 00000000..5ac6a8e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-07.ts @@ -0,0 +1,50 @@ +// pkg-13/types-07 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1307 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1307 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_07 | null; children: Entity_13_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1307: number; y1307: string; z1307: boolean }; +} + +type Path_1307 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1307}` }[keyof T & string] : never; +type EP_1307 = Path_1307; + +type Val_1307 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1307 } + : T[K] extends object ? { t: 'o'; props: Val_1307 } + : { t: 'u' }; +}; +type EV_1307 = Val_1307; + +interface Registry_13_07 { + entities: Map; + validators: EV_1307; + paths: Set; + merged: DeepMerge_1307; +} + +type CK_1307 = `p13.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_07, Registry_13_07, CK_1307, EP_1307, EV_1307, DeepMerge_1307 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-08.ts new file mode 100644 index 00000000..8bdfdc8f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-08.ts @@ -0,0 +1,50 @@ +// pkg-13/types-08 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1308 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1308 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_08 | null; children: Entity_13_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1308: number; y1308: string; z1308: boolean }; +} + +type Path_1308 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1308}` }[keyof T & string] : never; +type EP_1308 = Path_1308; + +type Val_1308 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1308 } + : T[K] extends object ? { t: 'o'; props: Val_1308 } + : { t: 'u' }; +}; +type EV_1308 = Val_1308; + +interface Registry_13_08 { + entities: Map; + validators: EV_1308; + paths: Set; + merged: DeepMerge_1308; +} + +type CK_1308 = `p13.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_08, Registry_13_08, CK_1308, EP_1308, EV_1308, DeepMerge_1308 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-09.ts new file mode 100644 index 00000000..d03ca741 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-09.ts @@ -0,0 +1,50 @@ +// pkg-13/types-09 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1309 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1309 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_09 | null; children: Entity_13_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1309: number; y1309: string; z1309: boolean }; +} + +type Path_1309 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1309}` }[keyof T & string] : never; +type EP_1309 = Path_1309; + +type Val_1309 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1309 } + : T[K] extends object ? { t: 'o'; props: Val_1309 } + : { t: 'u' }; +}; +type EV_1309 = Val_1309; + +interface Registry_13_09 { + entities: Map; + validators: EV_1309; + paths: Set; + merged: DeepMerge_1309; +} + +type CK_1309 = `p13.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_09, Registry_13_09, CK_1309, EP_1309, EV_1309, DeepMerge_1309 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-10.ts new file mode 100644 index 00000000..f710b675 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-10.ts @@ -0,0 +1,50 @@ +// pkg-13/types-10 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1310 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1310 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_10 | null; children: Entity_13_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1310: number; y1310: string; z1310: boolean }; +} + +type Path_1310 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1310}` }[keyof T & string] : never; +type EP_1310 = Path_1310; + +type Val_1310 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1310 } + : T[K] extends object ? { t: 'o'; props: Val_1310 } + : { t: 'u' }; +}; +type EV_1310 = Val_1310; + +interface Registry_13_10 { + entities: Map; + validators: EV_1310; + paths: Set; + merged: DeepMerge_1310; +} + +type CK_1310 = `p13.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_10, Registry_13_10, CK_1310, EP_1310, EV_1310, DeepMerge_1310 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-11.ts new file mode 100644 index 00000000..b0be5bac --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-11.ts @@ -0,0 +1,50 @@ +// pkg-13/types-11 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1311 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1311 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_11 | null; children: Entity_13_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1311: number; y1311: string; z1311: boolean }; +} + +type Path_1311 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1311}` }[keyof T & string] : never; +type EP_1311 = Path_1311; + +type Val_1311 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1311 } + : T[K] extends object ? { t: 'o'; props: Val_1311 } + : { t: 'u' }; +}; +type EV_1311 = Val_1311; + +interface Registry_13_11 { + entities: Map; + validators: EV_1311; + paths: Set; + merged: DeepMerge_1311; +} + +type CK_1311 = `p13.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_11, Registry_13_11, CK_1311, EP_1311, EV_1311, DeepMerge_1311 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-12.ts new file mode 100644 index 00000000..10ddd341 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-12.ts @@ -0,0 +1,50 @@ +// pkg-13/types-12 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1312 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1312 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_12 | null; children: Entity_13_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1312: number; y1312: string; z1312: boolean }; +} + +type Path_1312 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1312}` }[keyof T & string] : never; +type EP_1312 = Path_1312; + +type Val_1312 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1312 } + : T[K] extends object ? { t: 'o'; props: Val_1312 } + : { t: 'u' }; +}; +type EV_1312 = Val_1312; + +interface Registry_13_12 { + entities: Map; + validators: EV_1312; + paths: Set; + merged: DeepMerge_1312; +} + +type CK_1312 = `p13.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_12, Registry_13_12, CK_1312, EP_1312, EV_1312, DeepMerge_1312 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-13.ts new file mode 100644 index 00000000..27014307 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-13.ts @@ -0,0 +1,50 @@ +// pkg-13/types-13 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1313 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1313 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_13 | null; children: Entity_13_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1313: number; y1313: string; z1313: boolean }; +} + +type Path_1313 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1313}` }[keyof T & string] : never; +type EP_1313 = Path_1313; + +type Val_1313 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1313 } + : T[K] extends object ? { t: 'o'; props: Val_1313 } + : { t: 'u' }; +}; +type EV_1313 = Val_1313; + +interface Registry_13_13 { + entities: Map; + validators: EV_1313; + paths: Set; + merged: DeepMerge_1313; +} + +type CK_1313 = `p13.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_13, Registry_13_13, CK_1313, EP_1313, EV_1313, DeepMerge_1313 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-14.ts new file mode 100644 index 00000000..00ec2c0c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-14.ts @@ -0,0 +1,50 @@ +// pkg-13/types-14 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1314 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1314 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_14 | null; children: Entity_13_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1314: number; y1314: string; z1314: boolean }; +} + +type Path_1314 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1314}` }[keyof T & string] : never; +type EP_1314 = Path_1314; + +type Val_1314 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1314 } + : T[K] extends object ? { t: 'o'; props: Val_1314 } + : { t: 'u' }; +}; +type EV_1314 = Val_1314; + +interface Registry_13_14 { + entities: Map; + validators: EV_1314; + paths: Set; + merged: DeepMerge_1314; +} + +type CK_1314 = `p13.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_14, Registry_13_14, CK_1314, EP_1314, EV_1314, DeepMerge_1314 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-15.ts new file mode 100644 index 00000000..4e9d54e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-15.ts @@ -0,0 +1,50 @@ +// pkg-13/types-15 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1315 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1315 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_15 | null; children: Entity_13_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1315: number; y1315: string; z1315: boolean }; +} + +type Path_1315 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1315}` }[keyof T & string] : never; +type EP_1315 = Path_1315; + +type Val_1315 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1315 } + : T[K] extends object ? { t: 'o'; props: Val_1315 } + : { t: 'u' }; +}; +type EV_1315 = Val_1315; + +interface Registry_13_15 { + entities: Map; + validators: EV_1315; + paths: Set; + merged: DeepMerge_1315; +} + +type CK_1315 = `p13.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_15, Registry_13_15, CK_1315, EP_1315, EV_1315, DeepMerge_1315 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-16.ts new file mode 100644 index 00000000..4d5f3551 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-16.ts @@ -0,0 +1,50 @@ +// pkg-13/types-16 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1316 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1316 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_16 | null; children: Entity_13_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1316: number; y1316: string; z1316: boolean }; +} + +type Path_1316 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1316}` }[keyof T & string] : never; +type EP_1316 = Path_1316; + +type Val_1316 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1316 } + : T[K] extends object ? { t: 'o'; props: Val_1316 } + : { t: 'u' }; +}; +type EV_1316 = Val_1316; + +interface Registry_13_16 { + entities: Map; + validators: EV_1316; + paths: Set; + merged: DeepMerge_1316; +} + +type CK_1316 = `p13.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_16, Registry_13_16, CK_1316, EP_1316, EV_1316, DeepMerge_1316 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-17.ts new file mode 100644 index 00000000..0b5377fa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-17.ts @@ -0,0 +1,50 @@ +// pkg-13/types-17 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1317 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1317 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_17 | null; children: Entity_13_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1317: number; y1317: string; z1317: boolean }; +} + +type Path_1317 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1317}` }[keyof T & string] : never; +type EP_1317 = Path_1317; + +type Val_1317 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1317 } + : T[K] extends object ? { t: 'o'; props: Val_1317 } + : { t: 'u' }; +}; +type EV_1317 = Val_1317; + +interface Registry_13_17 { + entities: Map; + validators: EV_1317; + paths: Set; + merged: DeepMerge_1317; +} + +type CK_1317 = `p13.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_17, Registry_13_17, CK_1317, EP_1317, EV_1317, DeepMerge_1317 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-18.ts new file mode 100644 index 00000000..ef71b49f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-18.ts @@ -0,0 +1,50 @@ +// pkg-13/types-18 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1318 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1318 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_18 | null; children: Entity_13_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1318: number; y1318: string; z1318: boolean }; +} + +type Path_1318 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1318}` }[keyof T & string] : never; +type EP_1318 = Path_1318; + +type Val_1318 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1318 } + : T[K] extends object ? { t: 'o'; props: Val_1318 } + : { t: 'u' }; +}; +type EV_1318 = Val_1318; + +interface Registry_13_18 { + entities: Map; + validators: EV_1318; + paths: Set; + merged: DeepMerge_1318; +} + +type CK_1318 = `p13.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_18, Registry_13_18, CK_1318, EP_1318, EV_1318, DeepMerge_1318 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-19.ts new file mode 100644 index 00000000..2d0a2945 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-19.ts @@ -0,0 +1,50 @@ +// pkg-13/types-19 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1319 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1319 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_19 | null; children: Entity_13_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1319: number; y1319: string; z1319: boolean }; +} + +type Path_1319 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1319}` }[keyof T & string] : never; +type EP_1319 = Path_1319; + +type Val_1319 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1319 } + : T[K] extends object ? { t: 'o'; props: Val_1319 } + : { t: 'u' }; +}; +type EV_1319 = Val_1319; + +interface Registry_13_19 { + entities: Map; + validators: EV_1319; + paths: Set; + merged: DeepMerge_1319; +} + +type CK_1319 = `p13.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_19, Registry_13_19, CK_1319, EP_1319, EV_1319, DeepMerge_1319 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-20.ts new file mode 100644 index 00000000..d2107d4b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-20.ts @@ -0,0 +1,50 @@ +// pkg-13/types-20 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1320 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1320 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_20 | null; children: Entity_13_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1320: number; y1320: string; z1320: boolean }; +} + +type Path_1320 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1320}` }[keyof T & string] : never; +type EP_1320 = Path_1320; + +type Val_1320 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1320 } + : T[K] extends object ? { t: 'o'; props: Val_1320 } + : { t: 'u' }; +}; +type EV_1320 = Val_1320; + +interface Registry_13_20 { + entities: Map; + validators: EV_1320; + paths: Set; + merged: DeepMerge_1320; +} + +type CK_1320 = `p13.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_20, Registry_13_20, CK_1320, EP_1320, EV_1320, DeepMerge_1320 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-21.ts new file mode 100644 index 00000000..fe9ee4b7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-21.ts @@ -0,0 +1,50 @@ +// pkg-13/types-21 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1321 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1321 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_21 | null; children: Entity_13_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1321: number; y1321: string; z1321: boolean }; +} + +type Path_1321 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1321}` }[keyof T & string] : never; +type EP_1321 = Path_1321; + +type Val_1321 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1321 } + : T[K] extends object ? { t: 'o'; props: Val_1321 } + : { t: 'u' }; +}; +type EV_1321 = Val_1321; + +interface Registry_13_21 { + entities: Map; + validators: EV_1321; + paths: Set; + merged: DeepMerge_1321; +} + +type CK_1321 = `p13.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_21, Registry_13_21, CK_1321, EP_1321, EV_1321, DeepMerge_1321 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-22.ts new file mode 100644 index 00000000..966199d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-22.ts @@ -0,0 +1,50 @@ +// pkg-13/types-22 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1322 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1322 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_22 | null; children: Entity_13_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1322: number; y1322: string; z1322: boolean }; +} + +type Path_1322 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1322}` }[keyof T & string] : never; +type EP_1322 = Path_1322; + +type Val_1322 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1322 } + : T[K] extends object ? { t: 'o'; props: Val_1322 } + : { t: 'u' }; +}; +type EV_1322 = Val_1322; + +interface Registry_13_22 { + entities: Map; + validators: EV_1322; + paths: Set; + merged: DeepMerge_1322; +} + +type CK_1322 = `p13.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_22, Registry_13_22, CK_1322, EP_1322, EV_1322, DeepMerge_1322 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-23.ts new file mode 100644 index 00000000..ad9cfe65 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-23.ts @@ -0,0 +1,50 @@ +// pkg-13/types-23 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1323 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1323 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_23 | null; children: Entity_13_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1323: number; y1323: string; z1323: boolean }; +} + +type Path_1323 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1323}` }[keyof T & string] : never; +type EP_1323 = Path_1323; + +type Val_1323 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1323 } + : T[K] extends object ? { t: 'o'; props: Val_1323 } + : { t: 'u' }; +}; +type EV_1323 = Val_1323; + +interface Registry_13_23 { + entities: Map; + validators: EV_1323; + paths: Set; + merged: DeepMerge_1323; +} + +type CK_1323 = `p13.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_23, Registry_13_23, CK_1323, EP_1323, EV_1323, DeepMerge_1323 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-24.ts new file mode 100644 index 00000000..e3810d34 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-24.ts @@ -0,0 +1,50 @@ +// pkg-13/types-24 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1324 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1324 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_24 | null; children: Entity_13_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1324: number; y1324: string; z1324: boolean }; +} + +type Path_1324 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1324}` }[keyof T & string] : never; +type EP_1324 = Path_1324; + +type Val_1324 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1324 } + : T[K] extends object ? { t: 'o'; props: Val_1324 } + : { t: 'u' }; +}; +type EV_1324 = Val_1324; + +interface Registry_13_24 { + entities: Map; + validators: EV_1324; + paths: Set; + merged: DeepMerge_1324; +} + +type CK_1324 = `p13.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_24, Registry_13_24, CK_1324, EP_1324, EV_1324, DeepMerge_1324 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-25.ts new file mode 100644 index 00000000..726ade2b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-25.ts @@ -0,0 +1,50 @@ +// pkg-13/types-25 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1325 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1325 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_25 | null; children: Entity_13_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1325: number; y1325: string; z1325: boolean }; +} + +type Path_1325 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1325}` }[keyof T & string] : never; +type EP_1325 = Path_1325; + +type Val_1325 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1325 } + : T[K] extends object ? { t: 'o'; props: Val_1325 } + : { t: 'u' }; +}; +type EV_1325 = Val_1325; + +interface Registry_13_25 { + entities: Map; + validators: EV_1325; + paths: Set; + merged: DeepMerge_1325; +} + +type CK_1325 = `p13.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_25, Registry_13_25, CK_1325, EP_1325, EV_1325, DeepMerge_1325 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-26.ts new file mode 100644 index 00000000..65234089 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-26.ts @@ -0,0 +1,50 @@ +// pkg-13/types-26 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1326 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1326 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_26 | null; children: Entity_13_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1326: number; y1326: string; z1326: boolean }; +} + +type Path_1326 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1326}` }[keyof T & string] : never; +type EP_1326 = Path_1326; + +type Val_1326 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1326 } + : T[K] extends object ? { t: 'o'; props: Val_1326 } + : { t: 'u' }; +}; +type EV_1326 = Val_1326; + +interface Registry_13_26 { + entities: Map; + validators: EV_1326; + paths: Set; + merged: DeepMerge_1326; +} + +type CK_1326 = `p13.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_26, Registry_13_26, CK_1326, EP_1326, EV_1326, DeepMerge_1326 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-27.ts new file mode 100644 index 00000000..f28e72f0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-27.ts @@ -0,0 +1,50 @@ +// pkg-13/types-27 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1327 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1327 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_27 | null; children: Entity_13_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1327: number; y1327: string; z1327: boolean }; +} + +type Path_1327 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1327}` }[keyof T & string] : never; +type EP_1327 = Path_1327; + +type Val_1327 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1327 } + : T[K] extends object ? { t: 'o'; props: Val_1327 } + : { t: 'u' }; +}; +type EV_1327 = Val_1327; + +interface Registry_13_27 { + entities: Map; + validators: EV_1327; + paths: Set; + merged: DeepMerge_1327; +} + +type CK_1327 = `p13.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_27, Registry_13_27, CK_1327, EP_1327, EV_1327, DeepMerge_1327 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-28.ts new file mode 100644 index 00000000..7d1cc2d5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-28.ts @@ -0,0 +1,50 @@ +// pkg-13/types-28 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1328 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1328 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_28 | null; children: Entity_13_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1328: number; y1328: string; z1328: boolean }; +} + +type Path_1328 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1328}` }[keyof T & string] : never; +type EP_1328 = Path_1328; + +type Val_1328 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1328 } + : T[K] extends object ? { t: 'o'; props: Val_1328 } + : { t: 'u' }; +}; +type EV_1328 = Val_1328; + +interface Registry_13_28 { + entities: Map; + validators: EV_1328; + paths: Set; + merged: DeepMerge_1328; +} + +type CK_1328 = `p13.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_28, Registry_13_28, CK_1328, EP_1328, EV_1328, DeepMerge_1328 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-29.ts new file mode 100644 index 00000000..b97456b0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-29.ts @@ -0,0 +1,50 @@ +// pkg-13/types-29 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1329 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1329 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_29 | null; children: Entity_13_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1329: number; y1329: string; z1329: boolean }; +} + +type Path_1329 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1329}` }[keyof T & string] : never; +type EP_1329 = Path_1329; + +type Val_1329 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1329 } + : T[K] extends object ? { t: 'o'; props: Val_1329 } + : { t: 'u' }; +}; +type EV_1329 = Val_1329; + +interface Registry_13_29 { + entities: Map; + validators: EV_1329; + paths: Set; + merged: DeepMerge_1329; +} + +type CK_1329 = `p13.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_29, Registry_13_29, CK_1329, EP_1329, EV_1329, DeepMerge_1329 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-30.ts new file mode 100644 index 00000000..c829ad34 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-30.ts @@ -0,0 +1,50 @@ +// pkg-13/types-30 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1330 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1330 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_30 | null; children: Entity_13_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1330: number; y1330: string; z1330: boolean }; +} + +type Path_1330 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1330}` }[keyof T & string] : never; +type EP_1330 = Path_1330; + +type Val_1330 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1330 } + : T[K] extends object ? { t: 'o'; props: Val_1330 } + : { t: 'u' }; +}; +type EV_1330 = Val_1330; + +interface Registry_13_30 { + entities: Map; + validators: EV_1330; + paths: Set; + merged: DeepMerge_1330; +} + +type CK_1330 = `p13.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_30, Registry_13_30, CK_1330, EP_1330, EV_1330, DeepMerge_1330 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-31.ts new file mode 100644 index 00000000..d1a0e995 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-31.ts @@ -0,0 +1,50 @@ +// pkg-13/types-31 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1331 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1331 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_31 | null; children: Entity_13_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1331: number; y1331: string; z1331: boolean }; +} + +type Path_1331 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1331}` }[keyof T & string] : never; +type EP_1331 = Path_1331; + +type Val_1331 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1331 } + : T[K] extends object ? { t: 'o'; props: Val_1331 } + : { t: 'u' }; +}; +type EV_1331 = Val_1331; + +interface Registry_13_31 { + entities: Map; + validators: EV_1331; + paths: Set; + merged: DeepMerge_1331; +} + +type CK_1331 = `p13.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_31, Registry_13_31, CK_1331, EP_1331, EV_1331, DeepMerge_1331 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-32.ts new file mode 100644 index 00000000..40ca091b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-32.ts @@ -0,0 +1,50 @@ +// pkg-13/types-32 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1332 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1332 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_32 | null; children: Entity_13_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1332: number; y1332: string; z1332: boolean }; +} + +type Path_1332 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1332}` }[keyof T & string] : never; +type EP_1332 = Path_1332; + +type Val_1332 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1332 } + : T[K] extends object ? { t: 'o'; props: Val_1332 } + : { t: 'u' }; +}; +type EV_1332 = Val_1332; + +interface Registry_13_32 { + entities: Map; + validators: EV_1332; + paths: Set; + merged: DeepMerge_1332; +} + +type CK_1332 = `p13.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_32, Registry_13_32, CK_1332, EP_1332, EV_1332, DeepMerge_1332 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-33.ts new file mode 100644 index 00000000..b9dc22bc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-33.ts @@ -0,0 +1,50 @@ +// pkg-13/types-33 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1333 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1333 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_33 | null; children: Entity_13_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1333: number; y1333: string; z1333: boolean }; +} + +type Path_1333 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1333}` }[keyof T & string] : never; +type EP_1333 = Path_1333; + +type Val_1333 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1333 } + : T[K] extends object ? { t: 'o'; props: Val_1333 } + : { t: 'u' }; +}; +type EV_1333 = Val_1333; + +interface Registry_13_33 { + entities: Map; + validators: EV_1333; + paths: Set; + merged: DeepMerge_1333; +} + +type CK_1333 = `p13.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_33, Registry_13_33, CK_1333, EP_1333, EV_1333, DeepMerge_1333 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-34.ts new file mode 100644 index 00000000..de519662 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-34.ts @@ -0,0 +1,50 @@ +// pkg-13/types-34 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1334 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1334 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_34 | null; children: Entity_13_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1334: number; y1334: string; z1334: boolean }; +} + +type Path_1334 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1334}` }[keyof T & string] : never; +type EP_1334 = Path_1334; + +type Val_1334 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1334 } + : T[K] extends object ? { t: 'o'; props: Val_1334 } + : { t: 'u' }; +}; +type EV_1334 = Val_1334; + +interface Registry_13_34 { + entities: Map; + validators: EV_1334; + paths: Set; + merged: DeepMerge_1334; +} + +type CK_1334 = `p13.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_34, Registry_13_34, CK_1334, EP_1334, EV_1334, DeepMerge_1334 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-35.ts new file mode 100644 index 00000000..b2f9a508 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-35.ts @@ -0,0 +1,50 @@ +// pkg-13/types-35 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1335 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1335 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_35 | null; children: Entity_13_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1335: number; y1335: string; z1335: boolean }; +} + +type Path_1335 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1335}` }[keyof T & string] : never; +type EP_1335 = Path_1335; + +type Val_1335 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1335 } + : T[K] extends object ? { t: 'o'; props: Val_1335 } + : { t: 'u' }; +}; +type EV_1335 = Val_1335; + +interface Registry_13_35 { + entities: Map; + validators: EV_1335; + paths: Set; + merged: DeepMerge_1335; +} + +type CK_1335 = `p13.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_35, Registry_13_35, CK_1335, EP_1335, EV_1335, DeepMerge_1335 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-36.ts new file mode 100644 index 00000000..f465d7a1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-36.ts @@ -0,0 +1,50 @@ +// pkg-13/types-36 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1336 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1336 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_36 | null; children: Entity_13_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1336: number; y1336: string; z1336: boolean }; +} + +type Path_1336 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1336}` }[keyof T & string] : never; +type EP_1336 = Path_1336; + +type Val_1336 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1336 } + : T[K] extends object ? { t: 'o'; props: Val_1336 } + : { t: 'u' }; +}; +type EV_1336 = Val_1336; + +interface Registry_13_36 { + entities: Map; + validators: EV_1336; + paths: Set; + merged: DeepMerge_1336; +} + +type CK_1336 = `p13.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_36, Registry_13_36, CK_1336, EP_1336, EV_1336, DeepMerge_1336 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-37.ts new file mode 100644 index 00000000..f4ae92db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-37.ts @@ -0,0 +1,50 @@ +// pkg-13/types-37 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1337 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1337 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_37 | null; children: Entity_13_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1337: number; y1337: string; z1337: boolean }; +} + +type Path_1337 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1337}` }[keyof T & string] : never; +type EP_1337 = Path_1337; + +type Val_1337 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1337 } + : T[K] extends object ? { t: 'o'; props: Val_1337 } + : { t: 'u' }; +}; +type EV_1337 = Val_1337; + +interface Registry_13_37 { + entities: Map; + validators: EV_1337; + paths: Set; + merged: DeepMerge_1337; +} + +type CK_1337 = `p13.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_37, Registry_13_37, CK_1337, EP_1337, EV_1337, DeepMerge_1337 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-38.ts new file mode 100644 index 00000000..201a0a8d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-38.ts @@ -0,0 +1,50 @@ +// pkg-13/types-38 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1338 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1338 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_38 | null; children: Entity_13_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1338: number; y1338: string; z1338: boolean }; +} + +type Path_1338 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1338}` }[keyof T & string] : never; +type EP_1338 = Path_1338; + +type Val_1338 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1338 } + : T[K] extends object ? { t: 'o'; props: Val_1338 } + : { t: 'u' }; +}; +type EV_1338 = Val_1338; + +interface Registry_13_38 { + entities: Map; + validators: EV_1338; + paths: Set; + merged: DeepMerge_1338; +} + +type CK_1338 = `p13.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_38, Registry_13_38, CK_1338, EP_1338, EV_1338, DeepMerge_1338 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-39.ts new file mode 100644 index 00000000..07f002fa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-39.ts @@ -0,0 +1,50 @@ +// pkg-13/types-39 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1339 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1339 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_39 | null; children: Entity_13_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1339: number; y1339: string; z1339: boolean }; +} + +type Path_1339 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1339}` }[keyof T & string] : never; +type EP_1339 = Path_1339; + +type Val_1339 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1339 } + : T[K] extends object ? { t: 'o'; props: Val_1339 } + : { t: 'u' }; +}; +type EV_1339 = Val_1339; + +interface Registry_13_39 { + entities: Map; + validators: EV_1339; + paths: Set; + merged: DeepMerge_1339; +} + +type CK_1339 = `p13.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_39, Registry_13_39, CK_1339, EP_1339, EV_1339, DeepMerge_1339 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-40.ts new file mode 100644 index 00000000..174ac464 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-40.ts @@ -0,0 +1,50 @@ +// pkg-13/types-40 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1340 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1340 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_40 | null; children: Entity_13_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1340: number; y1340: string; z1340: boolean }; +} + +type Path_1340 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1340}` }[keyof T & string] : never; +type EP_1340 = Path_1340; + +type Val_1340 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1340 } + : T[K] extends object ? { t: 'o'; props: Val_1340 } + : { t: 'u' }; +}; +type EV_1340 = Val_1340; + +interface Registry_13_40 { + entities: Map; + validators: EV_1340; + paths: Set; + merged: DeepMerge_1340; +} + +type CK_1340 = `p13.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_40, Registry_13_40, CK_1340, EP_1340, EV_1340, DeepMerge_1340 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-41.ts new file mode 100644 index 00000000..200fbbe6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-41.ts @@ -0,0 +1,50 @@ +// pkg-13/types-41 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1341 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1341 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_41 | null; children: Entity_13_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1341: number; y1341: string; z1341: boolean }; +} + +type Path_1341 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1341}` }[keyof T & string] : never; +type EP_1341 = Path_1341; + +type Val_1341 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1341 } + : T[K] extends object ? { t: 'o'; props: Val_1341 } + : { t: 'u' }; +}; +type EV_1341 = Val_1341; + +interface Registry_13_41 { + entities: Map; + validators: EV_1341; + paths: Set; + merged: DeepMerge_1341; +} + +type CK_1341 = `p13.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_41, Registry_13_41, CK_1341, EP_1341, EV_1341, DeepMerge_1341 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-42.ts new file mode 100644 index 00000000..4ef7e2d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-42.ts @@ -0,0 +1,50 @@ +// pkg-13/types-42 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1342 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1342 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_42 | null; children: Entity_13_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1342: number; y1342: string; z1342: boolean }; +} + +type Path_1342 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1342}` }[keyof T & string] : never; +type EP_1342 = Path_1342; + +type Val_1342 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1342 } + : T[K] extends object ? { t: 'o'; props: Val_1342 } + : { t: 'u' }; +}; +type EV_1342 = Val_1342; + +interface Registry_13_42 { + entities: Map; + validators: EV_1342; + paths: Set; + merged: DeepMerge_1342; +} + +type CK_1342 = `p13.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_42, Registry_13_42, CK_1342, EP_1342, EV_1342, DeepMerge_1342 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-43.ts new file mode 100644 index 00000000..f5de8acc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-43.ts @@ -0,0 +1,50 @@ +// pkg-13/types-43 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1343 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1343 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_43 | null; children: Entity_13_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1343: number; y1343: string; z1343: boolean }; +} + +type Path_1343 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1343}` }[keyof T & string] : never; +type EP_1343 = Path_1343; + +type Val_1343 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1343 } + : T[K] extends object ? { t: 'o'; props: Val_1343 } + : { t: 'u' }; +}; +type EV_1343 = Val_1343; + +interface Registry_13_43 { + entities: Map; + validators: EV_1343; + paths: Set; + merged: DeepMerge_1343; +} + +type CK_1343 = `p13.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_43, Registry_13_43, CK_1343, EP_1343, EV_1343, DeepMerge_1343 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-44.ts new file mode 100644 index 00000000..d9c3243c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-44.ts @@ -0,0 +1,50 @@ +// pkg-13/types-44 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1344 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1344 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_44 | null; children: Entity_13_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1344: number; y1344: string; z1344: boolean }; +} + +type Path_1344 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1344}` }[keyof T & string] : never; +type EP_1344 = Path_1344; + +type Val_1344 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1344 } + : T[K] extends object ? { t: 'o'; props: Val_1344 } + : { t: 'u' }; +}; +type EV_1344 = Val_1344; + +interface Registry_13_44 { + entities: Map; + validators: EV_1344; + paths: Set; + merged: DeepMerge_1344; +} + +type CK_1344 = `p13.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_44, Registry_13_44, CK_1344, EP_1344, EV_1344, DeepMerge_1344 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-45.ts new file mode 100644 index 00000000..24e3a829 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-45.ts @@ -0,0 +1,50 @@ +// pkg-13/types-45 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1345 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1345 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_45 | null; children: Entity_13_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1345: number; y1345: string; z1345: boolean }; +} + +type Path_1345 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1345}` }[keyof T & string] : never; +type EP_1345 = Path_1345; + +type Val_1345 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1345 } + : T[K] extends object ? { t: 'o'; props: Val_1345 } + : { t: 'u' }; +}; +type EV_1345 = Val_1345; + +interface Registry_13_45 { + entities: Map; + validators: EV_1345; + paths: Set; + merged: DeepMerge_1345; +} + +type CK_1345 = `p13.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_45, Registry_13_45, CK_1345, EP_1345, EV_1345, DeepMerge_1345 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-46.ts new file mode 100644 index 00000000..66886ffe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-46.ts @@ -0,0 +1,50 @@ +// pkg-13/types-46 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1346 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1346 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_46 | null; children: Entity_13_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1346: number; y1346: string; z1346: boolean }; +} + +type Path_1346 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1346}` }[keyof T & string] : never; +type EP_1346 = Path_1346; + +type Val_1346 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1346 } + : T[K] extends object ? { t: 'o'; props: Val_1346 } + : { t: 'u' }; +}; +type EV_1346 = Val_1346; + +interface Registry_13_46 { + entities: Map; + validators: EV_1346; + paths: Set; + merged: DeepMerge_1346; +} + +type CK_1346 = `p13.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_46, Registry_13_46, CK_1346, EP_1346, EV_1346, DeepMerge_1346 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-47.ts new file mode 100644 index 00000000..fc2d2c0b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-47.ts @@ -0,0 +1,50 @@ +// pkg-13/types-47 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1347 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1347 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_47 | null; children: Entity_13_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1347: number; y1347: string; z1347: boolean }; +} + +type Path_1347 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1347}` }[keyof T & string] : never; +type EP_1347 = Path_1347; + +type Val_1347 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1347 } + : T[K] extends object ? { t: 'o'; props: Val_1347 } + : { t: 'u' }; +}; +type EV_1347 = Val_1347; + +interface Registry_13_47 { + entities: Map; + validators: EV_1347; + paths: Set; + merged: DeepMerge_1347; +} + +type CK_1347 = `p13.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_47, Registry_13_47, CK_1347, EP_1347, EV_1347, DeepMerge_1347 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-48.ts new file mode 100644 index 00000000..55b3cfbe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-48.ts @@ -0,0 +1,50 @@ +// pkg-13/types-48 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1348 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1348 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_48 | null; children: Entity_13_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1348: number; y1348: string; z1348: boolean }; +} + +type Path_1348 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1348}` }[keyof T & string] : never; +type EP_1348 = Path_1348; + +type Val_1348 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1348 } + : T[K] extends object ? { t: 'o'; props: Val_1348 } + : { t: 'u' }; +}; +type EV_1348 = Val_1348; + +interface Registry_13_48 { + entities: Map; + validators: EV_1348; + paths: Set; + merged: DeepMerge_1348; +} + +type CK_1348 = `p13.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_48, Registry_13_48, CK_1348, EP_1348, EV_1348, DeepMerge_1348 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-49.ts new file mode 100644 index 00000000..2cb61499 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-49.ts @@ -0,0 +1,50 @@ +// pkg-13/types-49 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1349 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1349 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_49 | null; children: Entity_13_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1349: number; y1349: string; z1349: boolean }; +} + +type Path_1349 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1349}` }[keyof T & string] : never; +type EP_1349 = Path_1349; + +type Val_1349 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1349 } + : T[K] extends object ? { t: 'o'; props: Val_1349 } + : { t: 'u' }; +}; +type EV_1349 = Val_1349; + +interface Registry_13_49 { + entities: Map; + validators: EV_1349; + paths: Set; + merged: DeepMerge_1349; +} + +type CK_1349 = `p13.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_49, Registry_13_49, CK_1349, EP_1349, EV_1349, DeepMerge_1349 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-13/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-13/types-50.ts new file mode 100644 index 00000000..695c0196 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-13/types-50.ts @@ -0,0 +1,50 @@ +// pkg-13/types-50 - heavy interconnected types + +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; +import type { Entity_10_01, Registry_10_01 } from '../pkg-10/types-01'; +import type { Entity_10_10, Registry_10_10 } from '../pkg-10/types-10'; +import type { Entity_10_20, Registry_10_20 } from '../pkg-10/types-20'; + +type DeepMerge_1350 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1350 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_13_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_13_50 | null; children: Entity_13_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1350: number; y1350: string; z1350: boolean }; +} + +type Path_1350 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1350}` }[keyof T & string] : never; +type EP_1350 = Path_1350; + +type Val_1350 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1350 } + : T[K] extends object ? { t: 'o'; props: Val_1350 } + : { t: 'u' }; +}; +type EV_1350 = Val_1350; + +interface Registry_13_50 { + entities: Map; + validators: EV_1350; + paths: Set; + merged: DeepMerge_1350; +} + +type CK_1350 = `p13.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_13_50, Registry_13_50, CK_1350, EP_1350, EV_1350, DeepMerge_1350 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-14/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-01.ts new file mode 100644 index 00000000..2ea311ad --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-01.ts @@ -0,0 +1,50 @@ +// pkg-14/types-01 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1401 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1401 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_01 | null; children: Entity_14_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1401: number; y1401: string; z1401: boolean }; +} + +type Path_1401 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1401}` }[keyof T & string] : never; +type EP_1401 = Path_1401; + +type Val_1401 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1401 } + : T[K] extends object ? { t: 'o'; props: Val_1401 } + : { t: 'u' }; +}; +type EV_1401 = Val_1401; + +interface Registry_14_01 { + entities: Map; + validators: EV_1401; + paths: Set; + merged: DeepMerge_1401; +} + +type CK_1401 = `p14.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_01, Registry_14_01, CK_1401, EP_1401, EV_1401, DeepMerge_1401 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-02.ts new file mode 100644 index 00000000..73f1786b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-02.ts @@ -0,0 +1,50 @@ +// pkg-14/types-02 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1402 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1402 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_02 | null; children: Entity_14_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1402: number; y1402: string; z1402: boolean }; +} + +type Path_1402 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1402}` }[keyof T & string] : never; +type EP_1402 = Path_1402; + +type Val_1402 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1402 } + : T[K] extends object ? { t: 'o'; props: Val_1402 } + : { t: 'u' }; +}; +type EV_1402 = Val_1402; + +interface Registry_14_02 { + entities: Map; + validators: EV_1402; + paths: Set; + merged: DeepMerge_1402; +} + +type CK_1402 = `p14.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_02, Registry_14_02, CK_1402, EP_1402, EV_1402, DeepMerge_1402 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-03.ts new file mode 100644 index 00000000..1a706f40 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-03.ts @@ -0,0 +1,50 @@ +// pkg-14/types-03 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1403 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1403 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_03 | null; children: Entity_14_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1403: number; y1403: string; z1403: boolean }; +} + +type Path_1403 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1403}` }[keyof T & string] : never; +type EP_1403 = Path_1403; + +type Val_1403 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1403 } + : T[K] extends object ? { t: 'o'; props: Val_1403 } + : { t: 'u' }; +}; +type EV_1403 = Val_1403; + +interface Registry_14_03 { + entities: Map; + validators: EV_1403; + paths: Set; + merged: DeepMerge_1403; +} + +type CK_1403 = `p14.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_03, Registry_14_03, CK_1403, EP_1403, EV_1403, DeepMerge_1403 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-04.ts new file mode 100644 index 00000000..6702ab49 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-04.ts @@ -0,0 +1,50 @@ +// pkg-14/types-04 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1404 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1404 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_04 | null; children: Entity_14_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1404: number; y1404: string; z1404: boolean }; +} + +type Path_1404 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1404}` }[keyof T & string] : never; +type EP_1404 = Path_1404; + +type Val_1404 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1404 } + : T[K] extends object ? { t: 'o'; props: Val_1404 } + : { t: 'u' }; +}; +type EV_1404 = Val_1404; + +interface Registry_14_04 { + entities: Map; + validators: EV_1404; + paths: Set; + merged: DeepMerge_1404; +} + +type CK_1404 = `p14.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_04, Registry_14_04, CK_1404, EP_1404, EV_1404, DeepMerge_1404 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-05.ts new file mode 100644 index 00000000..8f294645 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-05.ts @@ -0,0 +1,50 @@ +// pkg-14/types-05 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1405 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1405 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_05 | null; children: Entity_14_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1405: number; y1405: string; z1405: boolean }; +} + +type Path_1405 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1405}` }[keyof T & string] : never; +type EP_1405 = Path_1405; + +type Val_1405 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1405 } + : T[K] extends object ? { t: 'o'; props: Val_1405 } + : { t: 'u' }; +}; +type EV_1405 = Val_1405; + +interface Registry_14_05 { + entities: Map; + validators: EV_1405; + paths: Set; + merged: DeepMerge_1405; +} + +type CK_1405 = `p14.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_05, Registry_14_05, CK_1405, EP_1405, EV_1405, DeepMerge_1405 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-06.ts new file mode 100644 index 00000000..59227727 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-06.ts @@ -0,0 +1,50 @@ +// pkg-14/types-06 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1406 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1406 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_06 | null; children: Entity_14_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1406: number; y1406: string; z1406: boolean }; +} + +type Path_1406 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1406}` }[keyof T & string] : never; +type EP_1406 = Path_1406; + +type Val_1406 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1406 } + : T[K] extends object ? { t: 'o'; props: Val_1406 } + : { t: 'u' }; +}; +type EV_1406 = Val_1406; + +interface Registry_14_06 { + entities: Map; + validators: EV_1406; + paths: Set; + merged: DeepMerge_1406; +} + +type CK_1406 = `p14.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_06, Registry_14_06, CK_1406, EP_1406, EV_1406, DeepMerge_1406 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-07.ts new file mode 100644 index 00000000..2aeb0b2e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-07.ts @@ -0,0 +1,50 @@ +// pkg-14/types-07 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1407 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1407 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_07 | null; children: Entity_14_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1407: number; y1407: string; z1407: boolean }; +} + +type Path_1407 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1407}` }[keyof T & string] : never; +type EP_1407 = Path_1407; + +type Val_1407 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1407 } + : T[K] extends object ? { t: 'o'; props: Val_1407 } + : { t: 'u' }; +}; +type EV_1407 = Val_1407; + +interface Registry_14_07 { + entities: Map; + validators: EV_1407; + paths: Set; + merged: DeepMerge_1407; +} + +type CK_1407 = `p14.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_07, Registry_14_07, CK_1407, EP_1407, EV_1407, DeepMerge_1407 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-08.ts new file mode 100644 index 00000000..6f5b70be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-08.ts @@ -0,0 +1,50 @@ +// pkg-14/types-08 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1408 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1408 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_08 | null; children: Entity_14_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1408: number; y1408: string; z1408: boolean }; +} + +type Path_1408 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1408}` }[keyof T & string] : never; +type EP_1408 = Path_1408; + +type Val_1408 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1408 } + : T[K] extends object ? { t: 'o'; props: Val_1408 } + : { t: 'u' }; +}; +type EV_1408 = Val_1408; + +interface Registry_14_08 { + entities: Map; + validators: EV_1408; + paths: Set; + merged: DeepMerge_1408; +} + +type CK_1408 = `p14.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_08, Registry_14_08, CK_1408, EP_1408, EV_1408, DeepMerge_1408 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-09.ts new file mode 100644 index 00000000..326da894 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-09.ts @@ -0,0 +1,50 @@ +// pkg-14/types-09 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1409 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1409 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_09 | null; children: Entity_14_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1409: number; y1409: string; z1409: boolean }; +} + +type Path_1409 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1409}` }[keyof T & string] : never; +type EP_1409 = Path_1409; + +type Val_1409 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1409 } + : T[K] extends object ? { t: 'o'; props: Val_1409 } + : { t: 'u' }; +}; +type EV_1409 = Val_1409; + +interface Registry_14_09 { + entities: Map; + validators: EV_1409; + paths: Set; + merged: DeepMerge_1409; +} + +type CK_1409 = `p14.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_09, Registry_14_09, CK_1409, EP_1409, EV_1409, DeepMerge_1409 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-10.ts new file mode 100644 index 00000000..b9366a2a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-10.ts @@ -0,0 +1,50 @@ +// pkg-14/types-10 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1410 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1410 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_10 | null; children: Entity_14_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1410: number; y1410: string; z1410: boolean }; +} + +type Path_1410 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1410}` }[keyof T & string] : never; +type EP_1410 = Path_1410; + +type Val_1410 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1410 } + : T[K] extends object ? { t: 'o'; props: Val_1410 } + : { t: 'u' }; +}; +type EV_1410 = Val_1410; + +interface Registry_14_10 { + entities: Map; + validators: EV_1410; + paths: Set; + merged: DeepMerge_1410; +} + +type CK_1410 = `p14.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_10, Registry_14_10, CK_1410, EP_1410, EV_1410, DeepMerge_1410 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-11.ts new file mode 100644 index 00000000..755aa5e5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-11.ts @@ -0,0 +1,50 @@ +// pkg-14/types-11 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1411 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1411 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_11 | null; children: Entity_14_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1411: number; y1411: string; z1411: boolean }; +} + +type Path_1411 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1411}` }[keyof T & string] : never; +type EP_1411 = Path_1411; + +type Val_1411 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1411 } + : T[K] extends object ? { t: 'o'; props: Val_1411 } + : { t: 'u' }; +}; +type EV_1411 = Val_1411; + +interface Registry_14_11 { + entities: Map; + validators: EV_1411; + paths: Set; + merged: DeepMerge_1411; +} + +type CK_1411 = `p14.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_11, Registry_14_11, CK_1411, EP_1411, EV_1411, DeepMerge_1411 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-12.ts new file mode 100644 index 00000000..bc1fba08 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-12.ts @@ -0,0 +1,50 @@ +// pkg-14/types-12 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1412 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1412 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_12 | null; children: Entity_14_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1412: number; y1412: string; z1412: boolean }; +} + +type Path_1412 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1412}` }[keyof T & string] : never; +type EP_1412 = Path_1412; + +type Val_1412 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1412 } + : T[K] extends object ? { t: 'o'; props: Val_1412 } + : { t: 'u' }; +}; +type EV_1412 = Val_1412; + +interface Registry_14_12 { + entities: Map; + validators: EV_1412; + paths: Set; + merged: DeepMerge_1412; +} + +type CK_1412 = `p14.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_12, Registry_14_12, CK_1412, EP_1412, EV_1412, DeepMerge_1412 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-13.ts new file mode 100644 index 00000000..681946ff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-13.ts @@ -0,0 +1,50 @@ +// pkg-14/types-13 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1413 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1413 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_13 | null; children: Entity_14_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1413: number; y1413: string; z1413: boolean }; +} + +type Path_1413 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1413}` }[keyof T & string] : never; +type EP_1413 = Path_1413; + +type Val_1413 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1413 } + : T[K] extends object ? { t: 'o'; props: Val_1413 } + : { t: 'u' }; +}; +type EV_1413 = Val_1413; + +interface Registry_14_13 { + entities: Map; + validators: EV_1413; + paths: Set; + merged: DeepMerge_1413; +} + +type CK_1413 = `p14.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_13, Registry_14_13, CK_1413, EP_1413, EV_1413, DeepMerge_1413 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-14.ts new file mode 100644 index 00000000..6d835cd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-14.ts @@ -0,0 +1,50 @@ +// pkg-14/types-14 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1414 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1414 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_14 | null; children: Entity_14_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1414: number; y1414: string; z1414: boolean }; +} + +type Path_1414 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1414}` }[keyof T & string] : never; +type EP_1414 = Path_1414; + +type Val_1414 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1414 } + : T[K] extends object ? { t: 'o'; props: Val_1414 } + : { t: 'u' }; +}; +type EV_1414 = Val_1414; + +interface Registry_14_14 { + entities: Map; + validators: EV_1414; + paths: Set; + merged: DeepMerge_1414; +} + +type CK_1414 = `p14.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_14, Registry_14_14, CK_1414, EP_1414, EV_1414, DeepMerge_1414 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-15.ts new file mode 100644 index 00000000..a84221b9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-15.ts @@ -0,0 +1,50 @@ +// pkg-14/types-15 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1415 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1415 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_15 | null; children: Entity_14_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1415: number; y1415: string; z1415: boolean }; +} + +type Path_1415 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1415}` }[keyof T & string] : never; +type EP_1415 = Path_1415; + +type Val_1415 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1415 } + : T[K] extends object ? { t: 'o'; props: Val_1415 } + : { t: 'u' }; +}; +type EV_1415 = Val_1415; + +interface Registry_14_15 { + entities: Map; + validators: EV_1415; + paths: Set; + merged: DeepMerge_1415; +} + +type CK_1415 = `p14.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_15, Registry_14_15, CK_1415, EP_1415, EV_1415, DeepMerge_1415 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-16.ts new file mode 100644 index 00000000..b335fb25 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-16.ts @@ -0,0 +1,50 @@ +// pkg-14/types-16 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1416 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1416 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_16 | null; children: Entity_14_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1416: number; y1416: string; z1416: boolean }; +} + +type Path_1416 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1416}` }[keyof T & string] : never; +type EP_1416 = Path_1416; + +type Val_1416 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1416 } + : T[K] extends object ? { t: 'o'; props: Val_1416 } + : { t: 'u' }; +}; +type EV_1416 = Val_1416; + +interface Registry_14_16 { + entities: Map; + validators: EV_1416; + paths: Set; + merged: DeepMerge_1416; +} + +type CK_1416 = `p14.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_16, Registry_14_16, CK_1416, EP_1416, EV_1416, DeepMerge_1416 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-17.ts new file mode 100644 index 00000000..92e6bba2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-17.ts @@ -0,0 +1,50 @@ +// pkg-14/types-17 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1417 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1417 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_17 | null; children: Entity_14_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1417: number; y1417: string; z1417: boolean }; +} + +type Path_1417 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1417}` }[keyof T & string] : never; +type EP_1417 = Path_1417; + +type Val_1417 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1417 } + : T[K] extends object ? { t: 'o'; props: Val_1417 } + : { t: 'u' }; +}; +type EV_1417 = Val_1417; + +interface Registry_14_17 { + entities: Map; + validators: EV_1417; + paths: Set; + merged: DeepMerge_1417; +} + +type CK_1417 = `p14.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_17, Registry_14_17, CK_1417, EP_1417, EV_1417, DeepMerge_1417 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-18.ts new file mode 100644 index 00000000..e00e4e02 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-18.ts @@ -0,0 +1,50 @@ +// pkg-14/types-18 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1418 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1418 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_18 | null; children: Entity_14_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1418: number; y1418: string; z1418: boolean }; +} + +type Path_1418 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1418}` }[keyof T & string] : never; +type EP_1418 = Path_1418; + +type Val_1418 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1418 } + : T[K] extends object ? { t: 'o'; props: Val_1418 } + : { t: 'u' }; +}; +type EV_1418 = Val_1418; + +interface Registry_14_18 { + entities: Map; + validators: EV_1418; + paths: Set; + merged: DeepMerge_1418; +} + +type CK_1418 = `p14.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_18, Registry_14_18, CK_1418, EP_1418, EV_1418, DeepMerge_1418 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-19.ts new file mode 100644 index 00000000..8d0be320 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-19.ts @@ -0,0 +1,50 @@ +// pkg-14/types-19 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1419 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1419 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_19 | null; children: Entity_14_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1419: number; y1419: string; z1419: boolean }; +} + +type Path_1419 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1419}` }[keyof T & string] : never; +type EP_1419 = Path_1419; + +type Val_1419 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1419 } + : T[K] extends object ? { t: 'o'; props: Val_1419 } + : { t: 'u' }; +}; +type EV_1419 = Val_1419; + +interface Registry_14_19 { + entities: Map; + validators: EV_1419; + paths: Set; + merged: DeepMerge_1419; +} + +type CK_1419 = `p14.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_19, Registry_14_19, CK_1419, EP_1419, EV_1419, DeepMerge_1419 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-20.ts new file mode 100644 index 00000000..57fdd4e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-20.ts @@ -0,0 +1,50 @@ +// pkg-14/types-20 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1420 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1420 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_20 | null; children: Entity_14_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1420: number; y1420: string; z1420: boolean }; +} + +type Path_1420 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1420}` }[keyof T & string] : never; +type EP_1420 = Path_1420; + +type Val_1420 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1420 } + : T[K] extends object ? { t: 'o'; props: Val_1420 } + : { t: 'u' }; +}; +type EV_1420 = Val_1420; + +interface Registry_14_20 { + entities: Map; + validators: EV_1420; + paths: Set; + merged: DeepMerge_1420; +} + +type CK_1420 = `p14.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_20, Registry_14_20, CK_1420, EP_1420, EV_1420, DeepMerge_1420 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-21.ts new file mode 100644 index 00000000..42b7ea84 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-21.ts @@ -0,0 +1,50 @@ +// pkg-14/types-21 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1421 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1421 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_21 | null; children: Entity_14_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1421: number; y1421: string; z1421: boolean }; +} + +type Path_1421 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1421}` }[keyof T & string] : never; +type EP_1421 = Path_1421; + +type Val_1421 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1421 } + : T[K] extends object ? { t: 'o'; props: Val_1421 } + : { t: 'u' }; +}; +type EV_1421 = Val_1421; + +interface Registry_14_21 { + entities: Map; + validators: EV_1421; + paths: Set; + merged: DeepMerge_1421; +} + +type CK_1421 = `p14.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_21, Registry_14_21, CK_1421, EP_1421, EV_1421, DeepMerge_1421 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-22.ts new file mode 100644 index 00000000..fabe6319 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-22.ts @@ -0,0 +1,50 @@ +// pkg-14/types-22 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1422 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1422 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_22 | null; children: Entity_14_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1422: number; y1422: string; z1422: boolean }; +} + +type Path_1422 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1422}` }[keyof T & string] : never; +type EP_1422 = Path_1422; + +type Val_1422 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1422 } + : T[K] extends object ? { t: 'o'; props: Val_1422 } + : { t: 'u' }; +}; +type EV_1422 = Val_1422; + +interface Registry_14_22 { + entities: Map; + validators: EV_1422; + paths: Set; + merged: DeepMerge_1422; +} + +type CK_1422 = `p14.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_22, Registry_14_22, CK_1422, EP_1422, EV_1422, DeepMerge_1422 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-23.ts new file mode 100644 index 00000000..e490c84c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-23.ts @@ -0,0 +1,50 @@ +// pkg-14/types-23 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1423 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1423 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_23 | null; children: Entity_14_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1423: number; y1423: string; z1423: boolean }; +} + +type Path_1423 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1423}` }[keyof T & string] : never; +type EP_1423 = Path_1423; + +type Val_1423 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1423 } + : T[K] extends object ? { t: 'o'; props: Val_1423 } + : { t: 'u' }; +}; +type EV_1423 = Val_1423; + +interface Registry_14_23 { + entities: Map; + validators: EV_1423; + paths: Set; + merged: DeepMerge_1423; +} + +type CK_1423 = `p14.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_23, Registry_14_23, CK_1423, EP_1423, EV_1423, DeepMerge_1423 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-24.ts new file mode 100644 index 00000000..87391506 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-24.ts @@ -0,0 +1,50 @@ +// pkg-14/types-24 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1424 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1424 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_24 | null; children: Entity_14_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1424: number; y1424: string; z1424: boolean }; +} + +type Path_1424 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1424}` }[keyof T & string] : never; +type EP_1424 = Path_1424; + +type Val_1424 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1424 } + : T[K] extends object ? { t: 'o'; props: Val_1424 } + : { t: 'u' }; +}; +type EV_1424 = Val_1424; + +interface Registry_14_24 { + entities: Map; + validators: EV_1424; + paths: Set; + merged: DeepMerge_1424; +} + +type CK_1424 = `p14.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_24, Registry_14_24, CK_1424, EP_1424, EV_1424, DeepMerge_1424 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-25.ts new file mode 100644 index 00000000..ba27bf8e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-25.ts @@ -0,0 +1,50 @@ +// pkg-14/types-25 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1425 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1425 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_25 | null; children: Entity_14_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1425: number; y1425: string; z1425: boolean }; +} + +type Path_1425 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1425}` }[keyof T & string] : never; +type EP_1425 = Path_1425; + +type Val_1425 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1425 } + : T[K] extends object ? { t: 'o'; props: Val_1425 } + : { t: 'u' }; +}; +type EV_1425 = Val_1425; + +interface Registry_14_25 { + entities: Map; + validators: EV_1425; + paths: Set; + merged: DeepMerge_1425; +} + +type CK_1425 = `p14.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_25, Registry_14_25, CK_1425, EP_1425, EV_1425, DeepMerge_1425 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-26.ts new file mode 100644 index 00000000..249c90a2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-26.ts @@ -0,0 +1,50 @@ +// pkg-14/types-26 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1426 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1426 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_26 | null; children: Entity_14_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1426: number; y1426: string; z1426: boolean }; +} + +type Path_1426 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1426}` }[keyof T & string] : never; +type EP_1426 = Path_1426; + +type Val_1426 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1426 } + : T[K] extends object ? { t: 'o'; props: Val_1426 } + : { t: 'u' }; +}; +type EV_1426 = Val_1426; + +interface Registry_14_26 { + entities: Map; + validators: EV_1426; + paths: Set; + merged: DeepMerge_1426; +} + +type CK_1426 = `p14.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_26, Registry_14_26, CK_1426, EP_1426, EV_1426, DeepMerge_1426 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-27.ts new file mode 100644 index 00000000..e7be009f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-27.ts @@ -0,0 +1,50 @@ +// pkg-14/types-27 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1427 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1427 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_27 | null; children: Entity_14_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1427: number; y1427: string; z1427: boolean }; +} + +type Path_1427 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1427}` }[keyof T & string] : never; +type EP_1427 = Path_1427; + +type Val_1427 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1427 } + : T[K] extends object ? { t: 'o'; props: Val_1427 } + : { t: 'u' }; +}; +type EV_1427 = Val_1427; + +interface Registry_14_27 { + entities: Map; + validators: EV_1427; + paths: Set; + merged: DeepMerge_1427; +} + +type CK_1427 = `p14.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_27, Registry_14_27, CK_1427, EP_1427, EV_1427, DeepMerge_1427 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-28.ts new file mode 100644 index 00000000..f09e4c96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-28.ts @@ -0,0 +1,50 @@ +// pkg-14/types-28 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1428 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1428 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_28 | null; children: Entity_14_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1428: number; y1428: string; z1428: boolean }; +} + +type Path_1428 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1428}` }[keyof T & string] : never; +type EP_1428 = Path_1428; + +type Val_1428 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1428 } + : T[K] extends object ? { t: 'o'; props: Val_1428 } + : { t: 'u' }; +}; +type EV_1428 = Val_1428; + +interface Registry_14_28 { + entities: Map; + validators: EV_1428; + paths: Set; + merged: DeepMerge_1428; +} + +type CK_1428 = `p14.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_28, Registry_14_28, CK_1428, EP_1428, EV_1428, DeepMerge_1428 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-29.ts new file mode 100644 index 00000000..51df9990 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-29.ts @@ -0,0 +1,50 @@ +// pkg-14/types-29 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1429 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1429 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_29 | null; children: Entity_14_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1429: number; y1429: string; z1429: boolean }; +} + +type Path_1429 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1429}` }[keyof T & string] : never; +type EP_1429 = Path_1429; + +type Val_1429 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1429 } + : T[K] extends object ? { t: 'o'; props: Val_1429 } + : { t: 'u' }; +}; +type EV_1429 = Val_1429; + +interface Registry_14_29 { + entities: Map; + validators: EV_1429; + paths: Set; + merged: DeepMerge_1429; +} + +type CK_1429 = `p14.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_29, Registry_14_29, CK_1429, EP_1429, EV_1429, DeepMerge_1429 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-30.ts new file mode 100644 index 00000000..8b3c2a68 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-30.ts @@ -0,0 +1,50 @@ +// pkg-14/types-30 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1430 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1430 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_30 | null; children: Entity_14_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1430: number; y1430: string; z1430: boolean }; +} + +type Path_1430 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1430}` }[keyof T & string] : never; +type EP_1430 = Path_1430; + +type Val_1430 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1430 } + : T[K] extends object ? { t: 'o'; props: Val_1430 } + : { t: 'u' }; +}; +type EV_1430 = Val_1430; + +interface Registry_14_30 { + entities: Map; + validators: EV_1430; + paths: Set; + merged: DeepMerge_1430; +} + +type CK_1430 = `p14.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_30, Registry_14_30, CK_1430, EP_1430, EV_1430, DeepMerge_1430 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-31.ts new file mode 100644 index 00000000..0b752def --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-31.ts @@ -0,0 +1,50 @@ +// pkg-14/types-31 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1431 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1431 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_31 | null; children: Entity_14_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1431: number; y1431: string; z1431: boolean }; +} + +type Path_1431 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1431}` }[keyof T & string] : never; +type EP_1431 = Path_1431; + +type Val_1431 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1431 } + : T[K] extends object ? { t: 'o'; props: Val_1431 } + : { t: 'u' }; +}; +type EV_1431 = Val_1431; + +interface Registry_14_31 { + entities: Map; + validators: EV_1431; + paths: Set; + merged: DeepMerge_1431; +} + +type CK_1431 = `p14.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_31, Registry_14_31, CK_1431, EP_1431, EV_1431, DeepMerge_1431 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-32.ts new file mode 100644 index 00000000..8160c7be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-32.ts @@ -0,0 +1,50 @@ +// pkg-14/types-32 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1432 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1432 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_32 | null; children: Entity_14_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1432: number; y1432: string; z1432: boolean }; +} + +type Path_1432 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1432}` }[keyof T & string] : never; +type EP_1432 = Path_1432; + +type Val_1432 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1432 } + : T[K] extends object ? { t: 'o'; props: Val_1432 } + : { t: 'u' }; +}; +type EV_1432 = Val_1432; + +interface Registry_14_32 { + entities: Map; + validators: EV_1432; + paths: Set; + merged: DeepMerge_1432; +} + +type CK_1432 = `p14.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_32, Registry_14_32, CK_1432, EP_1432, EV_1432, DeepMerge_1432 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-33.ts new file mode 100644 index 00000000..b198dd7f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-33.ts @@ -0,0 +1,50 @@ +// pkg-14/types-33 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1433 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1433 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_33 | null; children: Entity_14_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1433: number; y1433: string; z1433: boolean }; +} + +type Path_1433 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1433}` }[keyof T & string] : never; +type EP_1433 = Path_1433; + +type Val_1433 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1433 } + : T[K] extends object ? { t: 'o'; props: Val_1433 } + : { t: 'u' }; +}; +type EV_1433 = Val_1433; + +interface Registry_14_33 { + entities: Map; + validators: EV_1433; + paths: Set; + merged: DeepMerge_1433; +} + +type CK_1433 = `p14.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_33, Registry_14_33, CK_1433, EP_1433, EV_1433, DeepMerge_1433 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-34.ts new file mode 100644 index 00000000..969cd620 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-34.ts @@ -0,0 +1,50 @@ +// pkg-14/types-34 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1434 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1434 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_34 | null; children: Entity_14_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1434: number; y1434: string; z1434: boolean }; +} + +type Path_1434 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1434}` }[keyof T & string] : never; +type EP_1434 = Path_1434; + +type Val_1434 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1434 } + : T[K] extends object ? { t: 'o'; props: Val_1434 } + : { t: 'u' }; +}; +type EV_1434 = Val_1434; + +interface Registry_14_34 { + entities: Map; + validators: EV_1434; + paths: Set; + merged: DeepMerge_1434; +} + +type CK_1434 = `p14.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_34, Registry_14_34, CK_1434, EP_1434, EV_1434, DeepMerge_1434 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-35.ts new file mode 100644 index 00000000..a92a899f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-35.ts @@ -0,0 +1,50 @@ +// pkg-14/types-35 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1435 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1435 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_35 | null; children: Entity_14_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1435: number; y1435: string; z1435: boolean }; +} + +type Path_1435 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1435}` }[keyof T & string] : never; +type EP_1435 = Path_1435; + +type Val_1435 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1435 } + : T[K] extends object ? { t: 'o'; props: Val_1435 } + : { t: 'u' }; +}; +type EV_1435 = Val_1435; + +interface Registry_14_35 { + entities: Map; + validators: EV_1435; + paths: Set; + merged: DeepMerge_1435; +} + +type CK_1435 = `p14.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_35, Registry_14_35, CK_1435, EP_1435, EV_1435, DeepMerge_1435 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-36.ts new file mode 100644 index 00000000..7ab84bdd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-36.ts @@ -0,0 +1,50 @@ +// pkg-14/types-36 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1436 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1436 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_36 | null; children: Entity_14_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1436: number; y1436: string; z1436: boolean }; +} + +type Path_1436 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1436}` }[keyof T & string] : never; +type EP_1436 = Path_1436; + +type Val_1436 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1436 } + : T[K] extends object ? { t: 'o'; props: Val_1436 } + : { t: 'u' }; +}; +type EV_1436 = Val_1436; + +interface Registry_14_36 { + entities: Map; + validators: EV_1436; + paths: Set; + merged: DeepMerge_1436; +} + +type CK_1436 = `p14.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_36, Registry_14_36, CK_1436, EP_1436, EV_1436, DeepMerge_1436 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-37.ts new file mode 100644 index 00000000..2a0f97ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-37.ts @@ -0,0 +1,50 @@ +// pkg-14/types-37 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1437 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1437 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_37 | null; children: Entity_14_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1437: number; y1437: string; z1437: boolean }; +} + +type Path_1437 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1437}` }[keyof T & string] : never; +type EP_1437 = Path_1437; + +type Val_1437 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1437 } + : T[K] extends object ? { t: 'o'; props: Val_1437 } + : { t: 'u' }; +}; +type EV_1437 = Val_1437; + +interface Registry_14_37 { + entities: Map; + validators: EV_1437; + paths: Set; + merged: DeepMerge_1437; +} + +type CK_1437 = `p14.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_37, Registry_14_37, CK_1437, EP_1437, EV_1437, DeepMerge_1437 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-38.ts new file mode 100644 index 00000000..1c3ec59b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-38.ts @@ -0,0 +1,50 @@ +// pkg-14/types-38 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1438 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1438 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_38 | null; children: Entity_14_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1438: number; y1438: string; z1438: boolean }; +} + +type Path_1438 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1438}` }[keyof T & string] : never; +type EP_1438 = Path_1438; + +type Val_1438 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1438 } + : T[K] extends object ? { t: 'o'; props: Val_1438 } + : { t: 'u' }; +}; +type EV_1438 = Val_1438; + +interface Registry_14_38 { + entities: Map; + validators: EV_1438; + paths: Set; + merged: DeepMerge_1438; +} + +type CK_1438 = `p14.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_38, Registry_14_38, CK_1438, EP_1438, EV_1438, DeepMerge_1438 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-39.ts new file mode 100644 index 00000000..00c96149 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-39.ts @@ -0,0 +1,50 @@ +// pkg-14/types-39 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1439 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1439 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_39 | null; children: Entity_14_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1439: number; y1439: string; z1439: boolean }; +} + +type Path_1439 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1439}` }[keyof T & string] : never; +type EP_1439 = Path_1439; + +type Val_1439 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1439 } + : T[K] extends object ? { t: 'o'; props: Val_1439 } + : { t: 'u' }; +}; +type EV_1439 = Val_1439; + +interface Registry_14_39 { + entities: Map; + validators: EV_1439; + paths: Set; + merged: DeepMerge_1439; +} + +type CK_1439 = `p14.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_39, Registry_14_39, CK_1439, EP_1439, EV_1439, DeepMerge_1439 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-40.ts new file mode 100644 index 00000000..a4c573d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-40.ts @@ -0,0 +1,50 @@ +// pkg-14/types-40 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1440 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1440 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_40 | null; children: Entity_14_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1440: number; y1440: string; z1440: boolean }; +} + +type Path_1440 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1440}` }[keyof T & string] : never; +type EP_1440 = Path_1440; + +type Val_1440 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1440 } + : T[K] extends object ? { t: 'o'; props: Val_1440 } + : { t: 'u' }; +}; +type EV_1440 = Val_1440; + +interface Registry_14_40 { + entities: Map; + validators: EV_1440; + paths: Set; + merged: DeepMerge_1440; +} + +type CK_1440 = `p14.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_40, Registry_14_40, CK_1440, EP_1440, EV_1440, DeepMerge_1440 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-41.ts new file mode 100644 index 00000000..9344c6c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-41.ts @@ -0,0 +1,50 @@ +// pkg-14/types-41 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1441 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1441 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_41 | null; children: Entity_14_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1441: number; y1441: string; z1441: boolean }; +} + +type Path_1441 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1441}` }[keyof T & string] : never; +type EP_1441 = Path_1441; + +type Val_1441 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1441 } + : T[K] extends object ? { t: 'o'; props: Val_1441 } + : { t: 'u' }; +}; +type EV_1441 = Val_1441; + +interface Registry_14_41 { + entities: Map; + validators: EV_1441; + paths: Set; + merged: DeepMerge_1441; +} + +type CK_1441 = `p14.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_41, Registry_14_41, CK_1441, EP_1441, EV_1441, DeepMerge_1441 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-42.ts new file mode 100644 index 00000000..0f16f82e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-42.ts @@ -0,0 +1,50 @@ +// pkg-14/types-42 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1442 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1442 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_42 | null; children: Entity_14_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1442: number; y1442: string; z1442: boolean }; +} + +type Path_1442 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1442}` }[keyof T & string] : never; +type EP_1442 = Path_1442; + +type Val_1442 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1442 } + : T[K] extends object ? { t: 'o'; props: Val_1442 } + : { t: 'u' }; +}; +type EV_1442 = Val_1442; + +interface Registry_14_42 { + entities: Map; + validators: EV_1442; + paths: Set; + merged: DeepMerge_1442; +} + +type CK_1442 = `p14.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_42, Registry_14_42, CK_1442, EP_1442, EV_1442, DeepMerge_1442 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-43.ts new file mode 100644 index 00000000..edc0ec68 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-43.ts @@ -0,0 +1,50 @@ +// pkg-14/types-43 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1443 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1443 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_43 | null; children: Entity_14_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1443: number; y1443: string; z1443: boolean }; +} + +type Path_1443 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1443}` }[keyof T & string] : never; +type EP_1443 = Path_1443; + +type Val_1443 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1443 } + : T[K] extends object ? { t: 'o'; props: Val_1443 } + : { t: 'u' }; +}; +type EV_1443 = Val_1443; + +interface Registry_14_43 { + entities: Map; + validators: EV_1443; + paths: Set; + merged: DeepMerge_1443; +} + +type CK_1443 = `p14.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_43, Registry_14_43, CK_1443, EP_1443, EV_1443, DeepMerge_1443 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-44.ts new file mode 100644 index 00000000..140c6024 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-44.ts @@ -0,0 +1,50 @@ +// pkg-14/types-44 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1444 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1444 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_44 | null; children: Entity_14_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1444: number; y1444: string; z1444: boolean }; +} + +type Path_1444 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1444}` }[keyof T & string] : never; +type EP_1444 = Path_1444; + +type Val_1444 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1444 } + : T[K] extends object ? { t: 'o'; props: Val_1444 } + : { t: 'u' }; +}; +type EV_1444 = Val_1444; + +interface Registry_14_44 { + entities: Map; + validators: EV_1444; + paths: Set; + merged: DeepMerge_1444; +} + +type CK_1444 = `p14.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_44, Registry_14_44, CK_1444, EP_1444, EV_1444, DeepMerge_1444 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-45.ts new file mode 100644 index 00000000..44259590 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-45.ts @@ -0,0 +1,50 @@ +// pkg-14/types-45 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1445 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1445 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_45 | null; children: Entity_14_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1445: number; y1445: string; z1445: boolean }; +} + +type Path_1445 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1445}` }[keyof T & string] : never; +type EP_1445 = Path_1445; + +type Val_1445 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1445 } + : T[K] extends object ? { t: 'o'; props: Val_1445 } + : { t: 'u' }; +}; +type EV_1445 = Val_1445; + +interface Registry_14_45 { + entities: Map; + validators: EV_1445; + paths: Set; + merged: DeepMerge_1445; +} + +type CK_1445 = `p14.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_45, Registry_14_45, CK_1445, EP_1445, EV_1445, DeepMerge_1445 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-46.ts new file mode 100644 index 00000000..e7699bbb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-46.ts @@ -0,0 +1,50 @@ +// pkg-14/types-46 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1446 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1446 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_46 | null; children: Entity_14_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1446: number; y1446: string; z1446: boolean }; +} + +type Path_1446 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1446}` }[keyof T & string] : never; +type EP_1446 = Path_1446; + +type Val_1446 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1446 } + : T[K] extends object ? { t: 'o'; props: Val_1446 } + : { t: 'u' }; +}; +type EV_1446 = Val_1446; + +interface Registry_14_46 { + entities: Map; + validators: EV_1446; + paths: Set; + merged: DeepMerge_1446; +} + +type CK_1446 = `p14.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_46, Registry_14_46, CK_1446, EP_1446, EV_1446, DeepMerge_1446 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-47.ts new file mode 100644 index 00000000..d69ade5b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-47.ts @@ -0,0 +1,50 @@ +// pkg-14/types-47 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1447 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1447 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_47 | null; children: Entity_14_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1447: number; y1447: string; z1447: boolean }; +} + +type Path_1447 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1447}` }[keyof T & string] : never; +type EP_1447 = Path_1447; + +type Val_1447 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1447 } + : T[K] extends object ? { t: 'o'; props: Val_1447 } + : { t: 'u' }; +}; +type EV_1447 = Val_1447; + +interface Registry_14_47 { + entities: Map; + validators: EV_1447; + paths: Set; + merged: DeepMerge_1447; +} + +type CK_1447 = `p14.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_47, Registry_14_47, CK_1447, EP_1447, EV_1447, DeepMerge_1447 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-48.ts new file mode 100644 index 00000000..31d0a00a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-48.ts @@ -0,0 +1,50 @@ +// pkg-14/types-48 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1448 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1448 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_48 | null; children: Entity_14_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1448: number; y1448: string; z1448: boolean }; +} + +type Path_1448 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1448}` }[keyof T & string] : never; +type EP_1448 = Path_1448; + +type Val_1448 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1448 } + : T[K] extends object ? { t: 'o'; props: Val_1448 } + : { t: 'u' }; +}; +type EV_1448 = Val_1448; + +interface Registry_14_48 { + entities: Map; + validators: EV_1448; + paths: Set; + merged: DeepMerge_1448; +} + +type CK_1448 = `p14.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_48, Registry_14_48, CK_1448, EP_1448, EV_1448, DeepMerge_1448 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-49.ts new file mode 100644 index 00000000..4e32784c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-49.ts @@ -0,0 +1,50 @@ +// pkg-14/types-49 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1449 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1449 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_49 | null; children: Entity_14_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1449: number; y1449: string; z1449: boolean }; +} + +type Path_1449 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1449}` }[keyof T & string] : never; +type EP_1449 = Path_1449; + +type Val_1449 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1449 } + : T[K] extends object ? { t: 'o'; props: Val_1449 } + : { t: 'u' }; +}; +type EV_1449 = Val_1449; + +interface Registry_14_49 { + entities: Map; + validators: EV_1449; + paths: Set; + merged: DeepMerge_1449; +} + +type CK_1449 = `p14.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_49, Registry_14_49, CK_1449, EP_1449, EV_1449, DeepMerge_1449 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-14/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-14/types-50.ts new file mode 100644 index 00000000..22cad8ec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-14/types-50.ts @@ -0,0 +1,50 @@ +// pkg-14/types-50 - heavy interconnected types + +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; +import type { Entity_11_01, Registry_11_01 } from '../pkg-11/types-01'; +import type { Entity_11_10, Registry_11_10 } from '../pkg-11/types-10'; +import type { Entity_11_20, Registry_11_20 } from '../pkg-11/types-20'; + +type DeepMerge_1450 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1450 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_14_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_14_50 | null; children: Entity_14_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1450: number; y1450: string; z1450: boolean }; +} + +type Path_1450 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1450}` }[keyof T & string] : never; +type EP_1450 = Path_1450; + +type Val_1450 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1450 } + : T[K] extends object ? { t: 'o'; props: Val_1450 } + : { t: 'u' }; +}; +type EV_1450 = Val_1450; + +interface Registry_14_50 { + entities: Map; + validators: EV_1450; + paths: Set; + merged: DeepMerge_1450; +} + +type CK_1450 = `p14.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_14_50, Registry_14_50, CK_1450, EP_1450, EV_1450, DeepMerge_1450 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-15/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-01.ts new file mode 100644 index 00000000..fa0a524f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-01.ts @@ -0,0 +1,50 @@ +// pkg-15/types-01 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1501 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1501 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_01 | null; children: Entity_15_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1501: number; y1501: string; z1501: boolean }; +} + +type Path_1501 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1501}` }[keyof T & string] : never; +type EP_1501 = Path_1501; + +type Val_1501 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1501 } + : T[K] extends object ? { t: 'o'; props: Val_1501 } + : { t: 'u' }; +}; +type EV_1501 = Val_1501; + +interface Registry_15_01 { + entities: Map; + validators: EV_1501; + paths: Set; + merged: DeepMerge_1501; +} + +type CK_1501 = `p15.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_01, Registry_15_01, CK_1501, EP_1501, EV_1501, DeepMerge_1501 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-02.ts new file mode 100644 index 00000000..851523b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-02.ts @@ -0,0 +1,50 @@ +// pkg-15/types-02 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1502 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1502 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_02 | null; children: Entity_15_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1502: number; y1502: string; z1502: boolean }; +} + +type Path_1502 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1502}` }[keyof T & string] : never; +type EP_1502 = Path_1502; + +type Val_1502 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1502 } + : T[K] extends object ? { t: 'o'; props: Val_1502 } + : { t: 'u' }; +}; +type EV_1502 = Val_1502; + +interface Registry_15_02 { + entities: Map; + validators: EV_1502; + paths: Set; + merged: DeepMerge_1502; +} + +type CK_1502 = `p15.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_02, Registry_15_02, CK_1502, EP_1502, EV_1502, DeepMerge_1502 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-03.ts new file mode 100644 index 00000000..058732cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-03.ts @@ -0,0 +1,50 @@ +// pkg-15/types-03 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1503 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1503 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_03 | null; children: Entity_15_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1503: number; y1503: string; z1503: boolean }; +} + +type Path_1503 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1503}` }[keyof T & string] : never; +type EP_1503 = Path_1503; + +type Val_1503 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1503 } + : T[K] extends object ? { t: 'o'; props: Val_1503 } + : { t: 'u' }; +}; +type EV_1503 = Val_1503; + +interface Registry_15_03 { + entities: Map; + validators: EV_1503; + paths: Set; + merged: DeepMerge_1503; +} + +type CK_1503 = `p15.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_03, Registry_15_03, CK_1503, EP_1503, EV_1503, DeepMerge_1503 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-04.ts new file mode 100644 index 00000000..f3738b76 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-04.ts @@ -0,0 +1,50 @@ +// pkg-15/types-04 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1504 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1504 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_04 | null; children: Entity_15_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1504: number; y1504: string; z1504: boolean }; +} + +type Path_1504 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1504}` }[keyof T & string] : never; +type EP_1504 = Path_1504; + +type Val_1504 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1504 } + : T[K] extends object ? { t: 'o'; props: Val_1504 } + : { t: 'u' }; +}; +type EV_1504 = Val_1504; + +interface Registry_15_04 { + entities: Map; + validators: EV_1504; + paths: Set; + merged: DeepMerge_1504; +} + +type CK_1504 = `p15.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_04, Registry_15_04, CK_1504, EP_1504, EV_1504, DeepMerge_1504 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-05.ts new file mode 100644 index 00000000..1bb42a19 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-05.ts @@ -0,0 +1,50 @@ +// pkg-15/types-05 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1505 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1505 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_05 | null; children: Entity_15_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1505: number; y1505: string; z1505: boolean }; +} + +type Path_1505 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1505}` }[keyof T & string] : never; +type EP_1505 = Path_1505; + +type Val_1505 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1505 } + : T[K] extends object ? { t: 'o'; props: Val_1505 } + : { t: 'u' }; +}; +type EV_1505 = Val_1505; + +interface Registry_15_05 { + entities: Map; + validators: EV_1505; + paths: Set; + merged: DeepMerge_1505; +} + +type CK_1505 = `p15.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_05, Registry_15_05, CK_1505, EP_1505, EV_1505, DeepMerge_1505 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-06.ts new file mode 100644 index 00000000..95024b58 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-06.ts @@ -0,0 +1,50 @@ +// pkg-15/types-06 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1506 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1506 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_06 | null; children: Entity_15_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1506: number; y1506: string; z1506: boolean }; +} + +type Path_1506 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1506}` }[keyof T & string] : never; +type EP_1506 = Path_1506; + +type Val_1506 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1506 } + : T[K] extends object ? { t: 'o'; props: Val_1506 } + : { t: 'u' }; +}; +type EV_1506 = Val_1506; + +interface Registry_15_06 { + entities: Map; + validators: EV_1506; + paths: Set; + merged: DeepMerge_1506; +} + +type CK_1506 = `p15.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_06, Registry_15_06, CK_1506, EP_1506, EV_1506, DeepMerge_1506 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-07.ts new file mode 100644 index 00000000..656e1b1d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-07.ts @@ -0,0 +1,50 @@ +// pkg-15/types-07 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1507 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1507 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_07 | null; children: Entity_15_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1507: number; y1507: string; z1507: boolean }; +} + +type Path_1507 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1507}` }[keyof T & string] : never; +type EP_1507 = Path_1507; + +type Val_1507 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1507 } + : T[K] extends object ? { t: 'o'; props: Val_1507 } + : { t: 'u' }; +}; +type EV_1507 = Val_1507; + +interface Registry_15_07 { + entities: Map; + validators: EV_1507; + paths: Set; + merged: DeepMerge_1507; +} + +type CK_1507 = `p15.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_07, Registry_15_07, CK_1507, EP_1507, EV_1507, DeepMerge_1507 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-08.ts new file mode 100644 index 00000000..fdb36c1f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-08.ts @@ -0,0 +1,50 @@ +// pkg-15/types-08 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1508 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1508 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_08 | null; children: Entity_15_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1508: number; y1508: string; z1508: boolean }; +} + +type Path_1508 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1508}` }[keyof T & string] : never; +type EP_1508 = Path_1508; + +type Val_1508 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1508 } + : T[K] extends object ? { t: 'o'; props: Val_1508 } + : { t: 'u' }; +}; +type EV_1508 = Val_1508; + +interface Registry_15_08 { + entities: Map; + validators: EV_1508; + paths: Set; + merged: DeepMerge_1508; +} + +type CK_1508 = `p15.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_08, Registry_15_08, CK_1508, EP_1508, EV_1508, DeepMerge_1508 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-09.ts new file mode 100644 index 00000000..1251ae5d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-09.ts @@ -0,0 +1,50 @@ +// pkg-15/types-09 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1509 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1509 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_09 | null; children: Entity_15_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1509: number; y1509: string; z1509: boolean }; +} + +type Path_1509 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1509}` }[keyof T & string] : never; +type EP_1509 = Path_1509; + +type Val_1509 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1509 } + : T[K] extends object ? { t: 'o'; props: Val_1509 } + : { t: 'u' }; +}; +type EV_1509 = Val_1509; + +interface Registry_15_09 { + entities: Map; + validators: EV_1509; + paths: Set; + merged: DeepMerge_1509; +} + +type CK_1509 = `p15.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_09, Registry_15_09, CK_1509, EP_1509, EV_1509, DeepMerge_1509 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-10.ts new file mode 100644 index 00000000..ba09c63b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-10.ts @@ -0,0 +1,50 @@ +// pkg-15/types-10 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1510 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1510 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_10 | null; children: Entity_15_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1510: number; y1510: string; z1510: boolean }; +} + +type Path_1510 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1510}` }[keyof T & string] : never; +type EP_1510 = Path_1510; + +type Val_1510 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1510 } + : T[K] extends object ? { t: 'o'; props: Val_1510 } + : { t: 'u' }; +}; +type EV_1510 = Val_1510; + +interface Registry_15_10 { + entities: Map; + validators: EV_1510; + paths: Set; + merged: DeepMerge_1510; +} + +type CK_1510 = `p15.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_10, Registry_15_10, CK_1510, EP_1510, EV_1510, DeepMerge_1510 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-11.ts new file mode 100644 index 00000000..ef3a86cc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-11.ts @@ -0,0 +1,50 @@ +// pkg-15/types-11 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1511 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1511 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_11 | null; children: Entity_15_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1511: number; y1511: string; z1511: boolean }; +} + +type Path_1511 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1511}` }[keyof T & string] : never; +type EP_1511 = Path_1511; + +type Val_1511 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1511 } + : T[K] extends object ? { t: 'o'; props: Val_1511 } + : { t: 'u' }; +}; +type EV_1511 = Val_1511; + +interface Registry_15_11 { + entities: Map; + validators: EV_1511; + paths: Set; + merged: DeepMerge_1511; +} + +type CK_1511 = `p15.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_11, Registry_15_11, CK_1511, EP_1511, EV_1511, DeepMerge_1511 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-12.ts new file mode 100644 index 00000000..8b95ca1f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-12.ts @@ -0,0 +1,50 @@ +// pkg-15/types-12 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1512 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1512 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_12 | null; children: Entity_15_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1512: number; y1512: string; z1512: boolean }; +} + +type Path_1512 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1512}` }[keyof T & string] : never; +type EP_1512 = Path_1512; + +type Val_1512 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1512 } + : T[K] extends object ? { t: 'o'; props: Val_1512 } + : { t: 'u' }; +}; +type EV_1512 = Val_1512; + +interface Registry_15_12 { + entities: Map; + validators: EV_1512; + paths: Set; + merged: DeepMerge_1512; +} + +type CK_1512 = `p15.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_12, Registry_15_12, CK_1512, EP_1512, EV_1512, DeepMerge_1512 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-13.ts new file mode 100644 index 00000000..08413d96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-13.ts @@ -0,0 +1,50 @@ +// pkg-15/types-13 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1513 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1513 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_13 | null; children: Entity_15_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1513: number; y1513: string; z1513: boolean }; +} + +type Path_1513 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1513}` }[keyof T & string] : never; +type EP_1513 = Path_1513; + +type Val_1513 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1513 } + : T[K] extends object ? { t: 'o'; props: Val_1513 } + : { t: 'u' }; +}; +type EV_1513 = Val_1513; + +interface Registry_15_13 { + entities: Map; + validators: EV_1513; + paths: Set; + merged: DeepMerge_1513; +} + +type CK_1513 = `p15.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_13, Registry_15_13, CK_1513, EP_1513, EV_1513, DeepMerge_1513 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-14.ts new file mode 100644 index 00000000..b403ad7d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-14.ts @@ -0,0 +1,50 @@ +// pkg-15/types-14 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1514 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1514 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_14 | null; children: Entity_15_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1514: number; y1514: string; z1514: boolean }; +} + +type Path_1514 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1514}` }[keyof T & string] : never; +type EP_1514 = Path_1514; + +type Val_1514 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1514 } + : T[K] extends object ? { t: 'o'; props: Val_1514 } + : { t: 'u' }; +}; +type EV_1514 = Val_1514; + +interface Registry_15_14 { + entities: Map; + validators: EV_1514; + paths: Set; + merged: DeepMerge_1514; +} + +type CK_1514 = `p15.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_14, Registry_15_14, CK_1514, EP_1514, EV_1514, DeepMerge_1514 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-15.ts new file mode 100644 index 00000000..46668a73 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-15.ts @@ -0,0 +1,50 @@ +// pkg-15/types-15 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1515 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1515 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_15 | null; children: Entity_15_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1515: number; y1515: string; z1515: boolean }; +} + +type Path_1515 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1515}` }[keyof T & string] : never; +type EP_1515 = Path_1515; + +type Val_1515 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1515 } + : T[K] extends object ? { t: 'o'; props: Val_1515 } + : { t: 'u' }; +}; +type EV_1515 = Val_1515; + +interface Registry_15_15 { + entities: Map; + validators: EV_1515; + paths: Set; + merged: DeepMerge_1515; +} + +type CK_1515 = `p15.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_15, Registry_15_15, CK_1515, EP_1515, EV_1515, DeepMerge_1515 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-16.ts new file mode 100644 index 00000000..a76d4588 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-16.ts @@ -0,0 +1,50 @@ +// pkg-15/types-16 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1516 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1516 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_16 | null; children: Entity_15_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1516: number; y1516: string; z1516: boolean }; +} + +type Path_1516 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1516}` }[keyof T & string] : never; +type EP_1516 = Path_1516; + +type Val_1516 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1516 } + : T[K] extends object ? { t: 'o'; props: Val_1516 } + : { t: 'u' }; +}; +type EV_1516 = Val_1516; + +interface Registry_15_16 { + entities: Map; + validators: EV_1516; + paths: Set; + merged: DeepMerge_1516; +} + +type CK_1516 = `p15.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_16, Registry_15_16, CK_1516, EP_1516, EV_1516, DeepMerge_1516 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-17.ts new file mode 100644 index 00000000..cfb30a2f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-17.ts @@ -0,0 +1,50 @@ +// pkg-15/types-17 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1517 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1517 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_17 | null; children: Entity_15_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1517: number; y1517: string; z1517: boolean }; +} + +type Path_1517 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1517}` }[keyof T & string] : never; +type EP_1517 = Path_1517; + +type Val_1517 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1517 } + : T[K] extends object ? { t: 'o'; props: Val_1517 } + : { t: 'u' }; +}; +type EV_1517 = Val_1517; + +interface Registry_15_17 { + entities: Map; + validators: EV_1517; + paths: Set; + merged: DeepMerge_1517; +} + +type CK_1517 = `p15.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_17, Registry_15_17, CK_1517, EP_1517, EV_1517, DeepMerge_1517 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-18.ts new file mode 100644 index 00000000..14762d97 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-18.ts @@ -0,0 +1,50 @@ +// pkg-15/types-18 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1518 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1518 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_18 | null; children: Entity_15_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1518: number; y1518: string; z1518: boolean }; +} + +type Path_1518 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1518}` }[keyof T & string] : never; +type EP_1518 = Path_1518; + +type Val_1518 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1518 } + : T[K] extends object ? { t: 'o'; props: Val_1518 } + : { t: 'u' }; +}; +type EV_1518 = Val_1518; + +interface Registry_15_18 { + entities: Map; + validators: EV_1518; + paths: Set; + merged: DeepMerge_1518; +} + +type CK_1518 = `p15.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_18, Registry_15_18, CK_1518, EP_1518, EV_1518, DeepMerge_1518 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-19.ts new file mode 100644 index 00000000..080ad43b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-19.ts @@ -0,0 +1,50 @@ +// pkg-15/types-19 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1519 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1519 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_19 | null; children: Entity_15_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1519: number; y1519: string; z1519: boolean }; +} + +type Path_1519 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1519}` }[keyof T & string] : never; +type EP_1519 = Path_1519; + +type Val_1519 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1519 } + : T[K] extends object ? { t: 'o'; props: Val_1519 } + : { t: 'u' }; +}; +type EV_1519 = Val_1519; + +interface Registry_15_19 { + entities: Map; + validators: EV_1519; + paths: Set; + merged: DeepMerge_1519; +} + +type CK_1519 = `p15.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_19, Registry_15_19, CK_1519, EP_1519, EV_1519, DeepMerge_1519 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-20.ts new file mode 100644 index 00000000..2bed0866 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-20.ts @@ -0,0 +1,50 @@ +// pkg-15/types-20 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1520 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1520 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_20 | null; children: Entity_15_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1520: number; y1520: string; z1520: boolean }; +} + +type Path_1520 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1520}` }[keyof T & string] : never; +type EP_1520 = Path_1520; + +type Val_1520 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1520 } + : T[K] extends object ? { t: 'o'; props: Val_1520 } + : { t: 'u' }; +}; +type EV_1520 = Val_1520; + +interface Registry_15_20 { + entities: Map; + validators: EV_1520; + paths: Set; + merged: DeepMerge_1520; +} + +type CK_1520 = `p15.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_20, Registry_15_20, CK_1520, EP_1520, EV_1520, DeepMerge_1520 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-21.ts new file mode 100644 index 00000000..c0fae84f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-21.ts @@ -0,0 +1,50 @@ +// pkg-15/types-21 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1521 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1521 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_21 | null; children: Entity_15_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1521: number; y1521: string; z1521: boolean }; +} + +type Path_1521 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1521}` }[keyof T & string] : never; +type EP_1521 = Path_1521; + +type Val_1521 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1521 } + : T[K] extends object ? { t: 'o'; props: Val_1521 } + : { t: 'u' }; +}; +type EV_1521 = Val_1521; + +interface Registry_15_21 { + entities: Map; + validators: EV_1521; + paths: Set; + merged: DeepMerge_1521; +} + +type CK_1521 = `p15.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_21, Registry_15_21, CK_1521, EP_1521, EV_1521, DeepMerge_1521 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-22.ts new file mode 100644 index 00000000..2c27a957 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-22.ts @@ -0,0 +1,50 @@ +// pkg-15/types-22 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1522 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1522 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_22 | null; children: Entity_15_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1522: number; y1522: string; z1522: boolean }; +} + +type Path_1522 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1522}` }[keyof T & string] : never; +type EP_1522 = Path_1522; + +type Val_1522 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1522 } + : T[K] extends object ? { t: 'o'; props: Val_1522 } + : { t: 'u' }; +}; +type EV_1522 = Val_1522; + +interface Registry_15_22 { + entities: Map; + validators: EV_1522; + paths: Set; + merged: DeepMerge_1522; +} + +type CK_1522 = `p15.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_22, Registry_15_22, CK_1522, EP_1522, EV_1522, DeepMerge_1522 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-23.ts new file mode 100644 index 00000000..c8624140 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-23.ts @@ -0,0 +1,50 @@ +// pkg-15/types-23 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1523 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1523 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_23 | null; children: Entity_15_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1523: number; y1523: string; z1523: boolean }; +} + +type Path_1523 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1523}` }[keyof T & string] : never; +type EP_1523 = Path_1523; + +type Val_1523 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1523 } + : T[K] extends object ? { t: 'o'; props: Val_1523 } + : { t: 'u' }; +}; +type EV_1523 = Val_1523; + +interface Registry_15_23 { + entities: Map; + validators: EV_1523; + paths: Set; + merged: DeepMerge_1523; +} + +type CK_1523 = `p15.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_23, Registry_15_23, CK_1523, EP_1523, EV_1523, DeepMerge_1523 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-24.ts new file mode 100644 index 00000000..290f5068 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-24.ts @@ -0,0 +1,50 @@ +// pkg-15/types-24 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1524 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1524 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_24 | null; children: Entity_15_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1524: number; y1524: string; z1524: boolean }; +} + +type Path_1524 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1524}` }[keyof T & string] : never; +type EP_1524 = Path_1524; + +type Val_1524 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1524 } + : T[K] extends object ? { t: 'o'; props: Val_1524 } + : { t: 'u' }; +}; +type EV_1524 = Val_1524; + +interface Registry_15_24 { + entities: Map; + validators: EV_1524; + paths: Set; + merged: DeepMerge_1524; +} + +type CK_1524 = `p15.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_24, Registry_15_24, CK_1524, EP_1524, EV_1524, DeepMerge_1524 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-25.ts new file mode 100644 index 00000000..0741450e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-25.ts @@ -0,0 +1,50 @@ +// pkg-15/types-25 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1525 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1525 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_25 | null; children: Entity_15_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1525: number; y1525: string; z1525: boolean }; +} + +type Path_1525 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1525}` }[keyof T & string] : never; +type EP_1525 = Path_1525; + +type Val_1525 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1525 } + : T[K] extends object ? { t: 'o'; props: Val_1525 } + : { t: 'u' }; +}; +type EV_1525 = Val_1525; + +interface Registry_15_25 { + entities: Map; + validators: EV_1525; + paths: Set; + merged: DeepMerge_1525; +} + +type CK_1525 = `p15.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_25, Registry_15_25, CK_1525, EP_1525, EV_1525, DeepMerge_1525 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-26.ts new file mode 100644 index 00000000..0b6af3a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-26.ts @@ -0,0 +1,50 @@ +// pkg-15/types-26 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1526 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1526 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_26 | null; children: Entity_15_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1526: number; y1526: string; z1526: boolean }; +} + +type Path_1526 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1526}` }[keyof T & string] : never; +type EP_1526 = Path_1526; + +type Val_1526 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1526 } + : T[K] extends object ? { t: 'o'; props: Val_1526 } + : { t: 'u' }; +}; +type EV_1526 = Val_1526; + +interface Registry_15_26 { + entities: Map; + validators: EV_1526; + paths: Set; + merged: DeepMerge_1526; +} + +type CK_1526 = `p15.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_26, Registry_15_26, CK_1526, EP_1526, EV_1526, DeepMerge_1526 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-27.ts new file mode 100644 index 00000000..c9e9c312 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-27.ts @@ -0,0 +1,50 @@ +// pkg-15/types-27 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1527 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1527 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_27 | null; children: Entity_15_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1527: number; y1527: string; z1527: boolean }; +} + +type Path_1527 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1527}` }[keyof T & string] : never; +type EP_1527 = Path_1527; + +type Val_1527 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1527 } + : T[K] extends object ? { t: 'o'; props: Val_1527 } + : { t: 'u' }; +}; +type EV_1527 = Val_1527; + +interface Registry_15_27 { + entities: Map; + validators: EV_1527; + paths: Set; + merged: DeepMerge_1527; +} + +type CK_1527 = `p15.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_27, Registry_15_27, CK_1527, EP_1527, EV_1527, DeepMerge_1527 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-28.ts new file mode 100644 index 00000000..097358dd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-28.ts @@ -0,0 +1,50 @@ +// pkg-15/types-28 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1528 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1528 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_28 | null; children: Entity_15_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1528: number; y1528: string; z1528: boolean }; +} + +type Path_1528 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1528}` }[keyof T & string] : never; +type EP_1528 = Path_1528; + +type Val_1528 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1528 } + : T[K] extends object ? { t: 'o'; props: Val_1528 } + : { t: 'u' }; +}; +type EV_1528 = Val_1528; + +interface Registry_15_28 { + entities: Map; + validators: EV_1528; + paths: Set; + merged: DeepMerge_1528; +} + +type CK_1528 = `p15.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_28, Registry_15_28, CK_1528, EP_1528, EV_1528, DeepMerge_1528 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-29.ts new file mode 100644 index 00000000..915bb94c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-29.ts @@ -0,0 +1,50 @@ +// pkg-15/types-29 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1529 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1529 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_29 | null; children: Entity_15_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1529: number; y1529: string; z1529: boolean }; +} + +type Path_1529 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1529}` }[keyof T & string] : never; +type EP_1529 = Path_1529; + +type Val_1529 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1529 } + : T[K] extends object ? { t: 'o'; props: Val_1529 } + : { t: 'u' }; +}; +type EV_1529 = Val_1529; + +interface Registry_15_29 { + entities: Map; + validators: EV_1529; + paths: Set; + merged: DeepMerge_1529; +} + +type CK_1529 = `p15.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_29, Registry_15_29, CK_1529, EP_1529, EV_1529, DeepMerge_1529 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-30.ts new file mode 100644 index 00000000..29e5d8fe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-30.ts @@ -0,0 +1,50 @@ +// pkg-15/types-30 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1530 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1530 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_30 | null; children: Entity_15_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1530: number; y1530: string; z1530: boolean }; +} + +type Path_1530 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1530}` }[keyof T & string] : never; +type EP_1530 = Path_1530; + +type Val_1530 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1530 } + : T[K] extends object ? { t: 'o'; props: Val_1530 } + : { t: 'u' }; +}; +type EV_1530 = Val_1530; + +interface Registry_15_30 { + entities: Map; + validators: EV_1530; + paths: Set; + merged: DeepMerge_1530; +} + +type CK_1530 = `p15.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_30, Registry_15_30, CK_1530, EP_1530, EV_1530, DeepMerge_1530 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-31.ts new file mode 100644 index 00000000..cfae1d6e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-31.ts @@ -0,0 +1,50 @@ +// pkg-15/types-31 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1531 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1531 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_31 | null; children: Entity_15_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1531: number; y1531: string; z1531: boolean }; +} + +type Path_1531 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1531}` }[keyof T & string] : never; +type EP_1531 = Path_1531; + +type Val_1531 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1531 } + : T[K] extends object ? { t: 'o'; props: Val_1531 } + : { t: 'u' }; +}; +type EV_1531 = Val_1531; + +interface Registry_15_31 { + entities: Map; + validators: EV_1531; + paths: Set; + merged: DeepMerge_1531; +} + +type CK_1531 = `p15.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_31, Registry_15_31, CK_1531, EP_1531, EV_1531, DeepMerge_1531 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-32.ts new file mode 100644 index 00000000..1e47549d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-32.ts @@ -0,0 +1,50 @@ +// pkg-15/types-32 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1532 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1532 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_32 | null; children: Entity_15_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1532: number; y1532: string; z1532: boolean }; +} + +type Path_1532 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1532}` }[keyof T & string] : never; +type EP_1532 = Path_1532; + +type Val_1532 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1532 } + : T[K] extends object ? { t: 'o'; props: Val_1532 } + : { t: 'u' }; +}; +type EV_1532 = Val_1532; + +interface Registry_15_32 { + entities: Map; + validators: EV_1532; + paths: Set; + merged: DeepMerge_1532; +} + +type CK_1532 = `p15.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_32, Registry_15_32, CK_1532, EP_1532, EV_1532, DeepMerge_1532 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-33.ts new file mode 100644 index 00000000..2b25ebaf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-33.ts @@ -0,0 +1,50 @@ +// pkg-15/types-33 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1533 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1533 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_33 | null; children: Entity_15_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1533: number; y1533: string; z1533: boolean }; +} + +type Path_1533 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1533}` }[keyof T & string] : never; +type EP_1533 = Path_1533; + +type Val_1533 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1533 } + : T[K] extends object ? { t: 'o'; props: Val_1533 } + : { t: 'u' }; +}; +type EV_1533 = Val_1533; + +interface Registry_15_33 { + entities: Map; + validators: EV_1533; + paths: Set; + merged: DeepMerge_1533; +} + +type CK_1533 = `p15.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_33, Registry_15_33, CK_1533, EP_1533, EV_1533, DeepMerge_1533 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-34.ts new file mode 100644 index 00000000..f190e652 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-34.ts @@ -0,0 +1,50 @@ +// pkg-15/types-34 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1534 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1534 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_34 | null; children: Entity_15_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1534: number; y1534: string; z1534: boolean }; +} + +type Path_1534 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1534}` }[keyof T & string] : never; +type EP_1534 = Path_1534; + +type Val_1534 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1534 } + : T[K] extends object ? { t: 'o'; props: Val_1534 } + : { t: 'u' }; +}; +type EV_1534 = Val_1534; + +interface Registry_15_34 { + entities: Map; + validators: EV_1534; + paths: Set; + merged: DeepMerge_1534; +} + +type CK_1534 = `p15.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_34, Registry_15_34, CK_1534, EP_1534, EV_1534, DeepMerge_1534 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-35.ts new file mode 100644 index 00000000..4eafa4bd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-35.ts @@ -0,0 +1,50 @@ +// pkg-15/types-35 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1535 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1535 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_35 | null; children: Entity_15_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1535: number; y1535: string; z1535: boolean }; +} + +type Path_1535 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1535}` }[keyof T & string] : never; +type EP_1535 = Path_1535; + +type Val_1535 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1535 } + : T[K] extends object ? { t: 'o'; props: Val_1535 } + : { t: 'u' }; +}; +type EV_1535 = Val_1535; + +interface Registry_15_35 { + entities: Map; + validators: EV_1535; + paths: Set; + merged: DeepMerge_1535; +} + +type CK_1535 = `p15.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_35, Registry_15_35, CK_1535, EP_1535, EV_1535, DeepMerge_1535 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-36.ts new file mode 100644 index 00000000..6bdcc9ba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-36.ts @@ -0,0 +1,50 @@ +// pkg-15/types-36 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1536 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1536 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_36 | null; children: Entity_15_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1536: number; y1536: string; z1536: boolean }; +} + +type Path_1536 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1536}` }[keyof T & string] : never; +type EP_1536 = Path_1536; + +type Val_1536 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1536 } + : T[K] extends object ? { t: 'o'; props: Val_1536 } + : { t: 'u' }; +}; +type EV_1536 = Val_1536; + +interface Registry_15_36 { + entities: Map; + validators: EV_1536; + paths: Set; + merged: DeepMerge_1536; +} + +type CK_1536 = `p15.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_36, Registry_15_36, CK_1536, EP_1536, EV_1536, DeepMerge_1536 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-37.ts new file mode 100644 index 00000000..0d0be52b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-37.ts @@ -0,0 +1,50 @@ +// pkg-15/types-37 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1537 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1537 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_37 | null; children: Entity_15_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1537: number; y1537: string; z1537: boolean }; +} + +type Path_1537 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1537}` }[keyof T & string] : never; +type EP_1537 = Path_1537; + +type Val_1537 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1537 } + : T[K] extends object ? { t: 'o'; props: Val_1537 } + : { t: 'u' }; +}; +type EV_1537 = Val_1537; + +interface Registry_15_37 { + entities: Map; + validators: EV_1537; + paths: Set; + merged: DeepMerge_1537; +} + +type CK_1537 = `p15.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_37, Registry_15_37, CK_1537, EP_1537, EV_1537, DeepMerge_1537 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-38.ts new file mode 100644 index 00000000..43f37706 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-38.ts @@ -0,0 +1,50 @@ +// pkg-15/types-38 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1538 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1538 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_38 | null; children: Entity_15_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1538: number; y1538: string; z1538: boolean }; +} + +type Path_1538 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1538}` }[keyof T & string] : never; +type EP_1538 = Path_1538; + +type Val_1538 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1538 } + : T[K] extends object ? { t: 'o'; props: Val_1538 } + : { t: 'u' }; +}; +type EV_1538 = Val_1538; + +interface Registry_15_38 { + entities: Map; + validators: EV_1538; + paths: Set; + merged: DeepMerge_1538; +} + +type CK_1538 = `p15.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_38, Registry_15_38, CK_1538, EP_1538, EV_1538, DeepMerge_1538 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-39.ts new file mode 100644 index 00000000..c7b92430 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-39.ts @@ -0,0 +1,50 @@ +// pkg-15/types-39 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1539 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1539 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_39 | null; children: Entity_15_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1539: number; y1539: string; z1539: boolean }; +} + +type Path_1539 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1539}` }[keyof T & string] : never; +type EP_1539 = Path_1539; + +type Val_1539 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1539 } + : T[K] extends object ? { t: 'o'; props: Val_1539 } + : { t: 'u' }; +}; +type EV_1539 = Val_1539; + +interface Registry_15_39 { + entities: Map; + validators: EV_1539; + paths: Set; + merged: DeepMerge_1539; +} + +type CK_1539 = `p15.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_39, Registry_15_39, CK_1539, EP_1539, EV_1539, DeepMerge_1539 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-40.ts new file mode 100644 index 00000000..436b4c03 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-40.ts @@ -0,0 +1,50 @@ +// pkg-15/types-40 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1540 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1540 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_40 | null; children: Entity_15_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1540: number; y1540: string; z1540: boolean }; +} + +type Path_1540 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1540}` }[keyof T & string] : never; +type EP_1540 = Path_1540; + +type Val_1540 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1540 } + : T[K] extends object ? { t: 'o'; props: Val_1540 } + : { t: 'u' }; +}; +type EV_1540 = Val_1540; + +interface Registry_15_40 { + entities: Map; + validators: EV_1540; + paths: Set; + merged: DeepMerge_1540; +} + +type CK_1540 = `p15.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_40, Registry_15_40, CK_1540, EP_1540, EV_1540, DeepMerge_1540 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-41.ts new file mode 100644 index 00000000..14b95a39 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-41.ts @@ -0,0 +1,50 @@ +// pkg-15/types-41 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1541 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1541 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_41 | null; children: Entity_15_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1541: number; y1541: string; z1541: boolean }; +} + +type Path_1541 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1541}` }[keyof T & string] : never; +type EP_1541 = Path_1541; + +type Val_1541 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1541 } + : T[K] extends object ? { t: 'o'; props: Val_1541 } + : { t: 'u' }; +}; +type EV_1541 = Val_1541; + +interface Registry_15_41 { + entities: Map; + validators: EV_1541; + paths: Set; + merged: DeepMerge_1541; +} + +type CK_1541 = `p15.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_41, Registry_15_41, CK_1541, EP_1541, EV_1541, DeepMerge_1541 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-42.ts new file mode 100644 index 00000000..481ef15e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-42.ts @@ -0,0 +1,50 @@ +// pkg-15/types-42 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1542 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1542 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_42 | null; children: Entity_15_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1542: number; y1542: string; z1542: boolean }; +} + +type Path_1542 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1542}` }[keyof T & string] : never; +type EP_1542 = Path_1542; + +type Val_1542 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1542 } + : T[K] extends object ? { t: 'o'; props: Val_1542 } + : { t: 'u' }; +}; +type EV_1542 = Val_1542; + +interface Registry_15_42 { + entities: Map; + validators: EV_1542; + paths: Set; + merged: DeepMerge_1542; +} + +type CK_1542 = `p15.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_42, Registry_15_42, CK_1542, EP_1542, EV_1542, DeepMerge_1542 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-43.ts new file mode 100644 index 00000000..a07de533 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-43.ts @@ -0,0 +1,50 @@ +// pkg-15/types-43 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1543 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1543 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_43 | null; children: Entity_15_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1543: number; y1543: string; z1543: boolean }; +} + +type Path_1543 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1543}` }[keyof T & string] : never; +type EP_1543 = Path_1543; + +type Val_1543 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1543 } + : T[K] extends object ? { t: 'o'; props: Val_1543 } + : { t: 'u' }; +}; +type EV_1543 = Val_1543; + +interface Registry_15_43 { + entities: Map; + validators: EV_1543; + paths: Set; + merged: DeepMerge_1543; +} + +type CK_1543 = `p15.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_43, Registry_15_43, CK_1543, EP_1543, EV_1543, DeepMerge_1543 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-44.ts new file mode 100644 index 00000000..a885dd4e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-44.ts @@ -0,0 +1,50 @@ +// pkg-15/types-44 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1544 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1544 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_44 | null; children: Entity_15_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1544: number; y1544: string; z1544: boolean }; +} + +type Path_1544 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1544}` }[keyof T & string] : never; +type EP_1544 = Path_1544; + +type Val_1544 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1544 } + : T[K] extends object ? { t: 'o'; props: Val_1544 } + : { t: 'u' }; +}; +type EV_1544 = Val_1544; + +interface Registry_15_44 { + entities: Map; + validators: EV_1544; + paths: Set; + merged: DeepMerge_1544; +} + +type CK_1544 = `p15.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_44, Registry_15_44, CK_1544, EP_1544, EV_1544, DeepMerge_1544 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-45.ts new file mode 100644 index 00000000..f7240c5e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-45.ts @@ -0,0 +1,50 @@ +// pkg-15/types-45 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1545 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1545 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_45 | null; children: Entity_15_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1545: number; y1545: string; z1545: boolean }; +} + +type Path_1545 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1545}` }[keyof T & string] : never; +type EP_1545 = Path_1545; + +type Val_1545 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1545 } + : T[K] extends object ? { t: 'o'; props: Val_1545 } + : { t: 'u' }; +}; +type EV_1545 = Val_1545; + +interface Registry_15_45 { + entities: Map; + validators: EV_1545; + paths: Set; + merged: DeepMerge_1545; +} + +type CK_1545 = `p15.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_45, Registry_15_45, CK_1545, EP_1545, EV_1545, DeepMerge_1545 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-46.ts new file mode 100644 index 00000000..cca12815 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-46.ts @@ -0,0 +1,50 @@ +// pkg-15/types-46 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1546 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1546 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_46 | null; children: Entity_15_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1546: number; y1546: string; z1546: boolean }; +} + +type Path_1546 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1546}` }[keyof T & string] : never; +type EP_1546 = Path_1546; + +type Val_1546 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1546 } + : T[K] extends object ? { t: 'o'; props: Val_1546 } + : { t: 'u' }; +}; +type EV_1546 = Val_1546; + +interface Registry_15_46 { + entities: Map; + validators: EV_1546; + paths: Set; + merged: DeepMerge_1546; +} + +type CK_1546 = `p15.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_46, Registry_15_46, CK_1546, EP_1546, EV_1546, DeepMerge_1546 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-47.ts new file mode 100644 index 00000000..92d483aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-47.ts @@ -0,0 +1,50 @@ +// pkg-15/types-47 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1547 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1547 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_47 | null; children: Entity_15_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1547: number; y1547: string; z1547: boolean }; +} + +type Path_1547 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1547}` }[keyof T & string] : never; +type EP_1547 = Path_1547; + +type Val_1547 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1547 } + : T[K] extends object ? { t: 'o'; props: Val_1547 } + : { t: 'u' }; +}; +type EV_1547 = Val_1547; + +interface Registry_15_47 { + entities: Map; + validators: EV_1547; + paths: Set; + merged: DeepMerge_1547; +} + +type CK_1547 = `p15.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_47, Registry_15_47, CK_1547, EP_1547, EV_1547, DeepMerge_1547 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-48.ts new file mode 100644 index 00000000..983dc500 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-48.ts @@ -0,0 +1,50 @@ +// pkg-15/types-48 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1548 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1548 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_48 | null; children: Entity_15_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1548: number; y1548: string; z1548: boolean }; +} + +type Path_1548 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1548}` }[keyof T & string] : never; +type EP_1548 = Path_1548; + +type Val_1548 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1548 } + : T[K] extends object ? { t: 'o'; props: Val_1548 } + : { t: 'u' }; +}; +type EV_1548 = Val_1548; + +interface Registry_15_48 { + entities: Map; + validators: EV_1548; + paths: Set; + merged: DeepMerge_1548; +} + +type CK_1548 = `p15.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_48, Registry_15_48, CK_1548, EP_1548, EV_1548, DeepMerge_1548 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-49.ts new file mode 100644 index 00000000..7861bd28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-49.ts @@ -0,0 +1,50 @@ +// pkg-15/types-49 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1549 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1549 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_49 | null; children: Entity_15_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1549: number; y1549: string; z1549: boolean }; +} + +type Path_1549 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1549}` }[keyof T & string] : never; +type EP_1549 = Path_1549; + +type Val_1549 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1549 } + : T[K] extends object ? { t: 'o'; props: Val_1549 } + : { t: 'u' }; +}; +type EV_1549 = Val_1549; + +interface Registry_15_49 { + entities: Map; + validators: EV_1549; + paths: Set; + merged: DeepMerge_1549; +} + +type CK_1549 = `p15.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_49, Registry_15_49, CK_1549, EP_1549, EV_1549, DeepMerge_1549 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-15/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-15/types-50.ts new file mode 100644 index 00000000..0d4f6004 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-15/types-50.ts @@ -0,0 +1,50 @@ +// pkg-15/types-50 - heavy interconnected types + +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; +import type { Entity_12_01, Registry_12_01 } from '../pkg-12/types-01'; +import type { Entity_12_10, Registry_12_10 } from '../pkg-12/types-10'; +import type { Entity_12_20, Registry_12_20 } from '../pkg-12/types-20'; + +type DeepMerge_1550 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1550 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_15_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_15_50 | null; children: Entity_15_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1550: number; y1550: string; z1550: boolean }; +} + +type Path_1550 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1550}` }[keyof T & string] : never; +type EP_1550 = Path_1550; + +type Val_1550 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1550 } + : T[K] extends object ? { t: 'o'; props: Val_1550 } + : { t: 'u' }; +}; +type EV_1550 = Val_1550; + +interface Registry_15_50 { + entities: Map; + validators: EV_1550; + paths: Set; + merged: DeepMerge_1550; +} + +type CK_1550 = `p15.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_15_50, Registry_15_50, CK_1550, EP_1550, EV_1550, DeepMerge_1550 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-16/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-01.ts new file mode 100644 index 00000000..f13dbb99 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-01.ts @@ -0,0 +1,50 @@ +// pkg-16/types-01 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1601 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1601 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_01 | null; children: Entity_16_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1601: number; y1601: string; z1601: boolean }; +} + +type Path_1601 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1601}` }[keyof T & string] : never; +type EP_1601 = Path_1601; + +type Val_1601 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1601 } + : T[K] extends object ? { t: 'o'; props: Val_1601 } + : { t: 'u' }; +}; +type EV_1601 = Val_1601; + +interface Registry_16_01 { + entities: Map; + validators: EV_1601; + paths: Set; + merged: DeepMerge_1601; +} + +type CK_1601 = `p16.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_01, Registry_16_01, CK_1601, EP_1601, EV_1601, DeepMerge_1601 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-02.ts new file mode 100644 index 00000000..d96405c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-02.ts @@ -0,0 +1,50 @@ +// pkg-16/types-02 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1602 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1602 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_02 | null; children: Entity_16_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1602: number; y1602: string; z1602: boolean }; +} + +type Path_1602 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1602}` }[keyof T & string] : never; +type EP_1602 = Path_1602; + +type Val_1602 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1602 } + : T[K] extends object ? { t: 'o'; props: Val_1602 } + : { t: 'u' }; +}; +type EV_1602 = Val_1602; + +interface Registry_16_02 { + entities: Map; + validators: EV_1602; + paths: Set; + merged: DeepMerge_1602; +} + +type CK_1602 = `p16.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_02, Registry_16_02, CK_1602, EP_1602, EV_1602, DeepMerge_1602 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-03.ts new file mode 100644 index 00000000..32127473 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-03.ts @@ -0,0 +1,50 @@ +// pkg-16/types-03 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1603 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1603 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_03 | null; children: Entity_16_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1603: number; y1603: string; z1603: boolean }; +} + +type Path_1603 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1603}` }[keyof T & string] : never; +type EP_1603 = Path_1603; + +type Val_1603 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1603 } + : T[K] extends object ? { t: 'o'; props: Val_1603 } + : { t: 'u' }; +}; +type EV_1603 = Val_1603; + +interface Registry_16_03 { + entities: Map; + validators: EV_1603; + paths: Set; + merged: DeepMerge_1603; +} + +type CK_1603 = `p16.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_03, Registry_16_03, CK_1603, EP_1603, EV_1603, DeepMerge_1603 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-04.ts new file mode 100644 index 00000000..2ebf7f77 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-04.ts @@ -0,0 +1,50 @@ +// pkg-16/types-04 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1604 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1604 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_04 | null; children: Entity_16_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1604: number; y1604: string; z1604: boolean }; +} + +type Path_1604 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1604}` }[keyof T & string] : never; +type EP_1604 = Path_1604; + +type Val_1604 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1604 } + : T[K] extends object ? { t: 'o'; props: Val_1604 } + : { t: 'u' }; +}; +type EV_1604 = Val_1604; + +interface Registry_16_04 { + entities: Map; + validators: EV_1604; + paths: Set; + merged: DeepMerge_1604; +} + +type CK_1604 = `p16.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_04, Registry_16_04, CK_1604, EP_1604, EV_1604, DeepMerge_1604 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-05.ts new file mode 100644 index 00000000..df098abe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-05.ts @@ -0,0 +1,50 @@ +// pkg-16/types-05 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1605 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1605 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_05 | null; children: Entity_16_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1605: number; y1605: string; z1605: boolean }; +} + +type Path_1605 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1605}` }[keyof T & string] : never; +type EP_1605 = Path_1605; + +type Val_1605 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1605 } + : T[K] extends object ? { t: 'o'; props: Val_1605 } + : { t: 'u' }; +}; +type EV_1605 = Val_1605; + +interface Registry_16_05 { + entities: Map; + validators: EV_1605; + paths: Set; + merged: DeepMerge_1605; +} + +type CK_1605 = `p16.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_05, Registry_16_05, CK_1605, EP_1605, EV_1605, DeepMerge_1605 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-06.ts new file mode 100644 index 00000000..470f83e6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-06.ts @@ -0,0 +1,50 @@ +// pkg-16/types-06 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1606 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1606 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_06 | null; children: Entity_16_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1606: number; y1606: string; z1606: boolean }; +} + +type Path_1606 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1606}` }[keyof T & string] : never; +type EP_1606 = Path_1606; + +type Val_1606 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1606 } + : T[K] extends object ? { t: 'o'; props: Val_1606 } + : { t: 'u' }; +}; +type EV_1606 = Val_1606; + +interface Registry_16_06 { + entities: Map; + validators: EV_1606; + paths: Set; + merged: DeepMerge_1606; +} + +type CK_1606 = `p16.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_06, Registry_16_06, CK_1606, EP_1606, EV_1606, DeepMerge_1606 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-07.ts new file mode 100644 index 00000000..e3f17a34 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-07.ts @@ -0,0 +1,50 @@ +// pkg-16/types-07 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1607 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1607 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_07 | null; children: Entity_16_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1607: number; y1607: string; z1607: boolean }; +} + +type Path_1607 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1607}` }[keyof T & string] : never; +type EP_1607 = Path_1607; + +type Val_1607 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1607 } + : T[K] extends object ? { t: 'o'; props: Val_1607 } + : { t: 'u' }; +}; +type EV_1607 = Val_1607; + +interface Registry_16_07 { + entities: Map; + validators: EV_1607; + paths: Set; + merged: DeepMerge_1607; +} + +type CK_1607 = `p16.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_07, Registry_16_07, CK_1607, EP_1607, EV_1607, DeepMerge_1607 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-08.ts new file mode 100644 index 00000000..82f64ee2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-08.ts @@ -0,0 +1,50 @@ +// pkg-16/types-08 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1608 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1608 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_08 | null; children: Entity_16_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1608: number; y1608: string; z1608: boolean }; +} + +type Path_1608 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1608}` }[keyof T & string] : never; +type EP_1608 = Path_1608; + +type Val_1608 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1608 } + : T[K] extends object ? { t: 'o'; props: Val_1608 } + : { t: 'u' }; +}; +type EV_1608 = Val_1608; + +interface Registry_16_08 { + entities: Map; + validators: EV_1608; + paths: Set; + merged: DeepMerge_1608; +} + +type CK_1608 = `p16.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_08, Registry_16_08, CK_1608, EP_1608, EV_1608, DeepMerge_1608 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-09.ts new file mode 100644 index 00000000..ffa159cf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-09.ts @@ -0,0 +1,50 @@ +// pkg-16/types-09 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1609 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1609 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_09 | null; children: Entity_16_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1609: number; y1609: string; z1609: boolean }; +} + +type Path_1609 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1609}` }[keyof T & string] : never; +type EP_1609 = Path_1609; + +type Val_1609 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1609 } + : T[K] extends object ? { t: 'o'; props: Val_1609 } + : { t: 'u' }; +}; +type EV_1609 = Val_1609; + +interface Registry_16_09 { + entities: Map; + validators: EV_1609; + paths: Set; + merged: DeepMerge_1609; +} + +type CK_1609 = `p16.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_09, Registry_16_09, CK_1609, EP_1609, EV_1609, DeepMerge_1609 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-10.ts new file mode 100644 index 00000000..e972ac2d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-10.ts @@ -0,0 +1,50 @@ +// pkg-16/types-10 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1610 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1610 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_10 | null; children: Entity_16_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1610: number; y1610: string; z1610: boolean }; +} + +type Path_1610 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1610}` }[keyof T & string] : never; +type EP_1610 = Path_1610; + +type Val_1610 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1610 } + : T[K] extends object ? { t: 'o'; props: Val_1610 } + : { t: 'u' }; +}; +type EV_1610 = Val_1610; + +interface Registry_16_10 { + entities: Map; + validators: EV_1610; + paths: Set; + merged: DeepMerge_1610; +} + +type CK_1610 = `p16.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_10, Registry_16_10, CK_1610, EP_1610, EV_1610, DeepMerge_1610 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-11.ts new file mode 100644 index 00000000..2260ba23 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-11.ts @@ -0,0 +1,50 @@ +// pkg-16/types-11 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1611 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1611 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_11 | null; children: Entity_16_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1611: number; y1611: string; z1611: boolean }; +} + +type Path_1611 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1611}` }[keyof T & string] : never; +type EP_1611 = Path_1611; + +type Val_1611 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1611 } + : T[K] extends object ? { t: 'o'; props: Val_1611 } + : { t: 'u' }; +}; +type EV_1611 = Val_1611; + +interface Registry_16_11 { + entities: Map; + validators: EV_1611; + paths: Set; + merged: DeepMerge_1611; +} + +type CK_1611 = `p16.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_11, Registry_16_11, CK_1611, EP_1611, EV_1611, DeepMerge_1611 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-12.ts new file mode 100644 index 00000000..ba578b35 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-12.ts @@ -0,0 +1,50 @@ +// pkg-16/types-12 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1612 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1612 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_12 | null; children: Entity_16_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1612: number; y1612: string; z1612: boolean }; +} + +type Path_1612 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1612}` }[keyof T & string] : never; +type EP_1612 = Path_1612; + +type Val_1612 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1612 } + : T[K] extends object ? { t: 'o'; props: Val_1612 } + : { t: 'u' }; +}; +type EV_1612 = Val_1612; + +interface Registry_16_12 { + entities: Map; + validators: EV_1612; + paths: Set; + merged: DeepMerge_1612; +} + +type CK_1612 = `p16.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_12, Registry_16_12, CK_1612, EP_1612, EV_1612, DeepMerge_1612 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-13.ts new file mode 100644 index 00000000..27cb8601 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-13.ts @@ -0,0 +1,50 @@ +// pkg-16/types-13 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1613 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1613 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_13 | null; children: Entity_16_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1613: number; y1613: string; z1613: boolean }; +} + +type Path_1613 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1613}` }[keyof T & string] : never; +type EP_1613 = Path_1613; + +type Val_1613 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1613 } + : T[K] extends object ? { t: 'o'; props: Val_1613 } + : { t: 'u' }; +}; +type EV_1613 = Val_1613; + +interface Registry_16_13 { + entities: Map; + validators: EV_1613; + paths: Set; + merged: DeepMerge_1613; +} + +type CK_1613 = `p16.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_13, Registry_16_13, CK_1613, EP_1613, EV_1613, DeepMerge_1613 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-14.ts new file mode 100644 index 00000000..46ad7385 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-14.ts @@ -0,0 +1,50 @@ +// pkg-16/types-14 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1614 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1614 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_14 | null; children: Entity_16_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1614: number; y1614: string; z1614: boolean }; +} + +type Path_1614 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1614}` }[keyof T & string] : never; +type EP_1614 = Path_1614; + +type Val_1614 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1614 } + : T[K] extends object ? { t: 'o'; props: Val_1614 } + : { t: 'u' }; +}; +type EV_1614 = Val_1614; + +interface Registry_16_14 { + entities: Map; + validators: EV_1614; + paths: Set; + merged: DeepMerge_1614; +} + +type CK_1614 = `p16.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_14, Registry_16_14, CK_1614, EP_1614, EV_1614, DeepMerge_1614 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-15.ts new file mode 100644 index 00000000..7edff58e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-15.ts @@ -0,0 +1,50 @@ +// pkg-16/types-15 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1615 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1615 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_15 | null; children: Entity_16_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1615: number; y1615: string; z1615: boolean }; +} + +type Path_1615 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1615}` }[keyof T & string] : never; +type EP_1615 = Path_1615; + +type Val_1615 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1615 } + : T[K] extends object ? { t: 'o'; props: Val_1615 } + : { t: 'u' }; +}; +type EV_1615 = Val_1615; + +interface Registry_16_15 { + entities: Map; + validators: EV_1615; + paths: Set; + merged: DeepMerge_1615; +} + +type CK_1615 = `p16.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_15, Registry_16_15, CK_1615, EP_1615, EV_1615, DeepMerge_1615 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-16.ts new file mode 100644 index 00000000..158d75fb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-16.ts @@ -0,0 +1,50 @@ +// pkg-16/types-16 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1616 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1616 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_16 | null; children: Entity_16_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1616: number; y1616: string; z1616: boolean }; +} + +type Path_1616 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1616}` }[keyof T & string] : never; +type EP_1616 = Path_1616; + +type Val_1616 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1616 } + : T[K] extends object ? { t: 'o'; props: Val_1616 } + : { t: 'u' }; +}; +type EV_1616 = Val_1616; + +interface Registry_16_16 { + entities: Map; + validators: EV_1616; + paths: Set; + merged: DeepMerge_1616; +} + +type CK_1616 = `p16.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_16, Registry_16_16, CK_1616, EP_1616, EV_1616, DeepMerge_1616 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-17.ts new file mode 100644 index 00000000..578bb193 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-17.ts @@ -0,0 +1,50 @@ +// pkg-16/types-17 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1617 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1617 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_17 | null; children: Entity_16_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1617: number; y1617: string; z1617: boolean }; +} + +type Path_1617 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1617}` }[keyof T & string] : never; +type EP_1617 = Path_1617; + +type Val_1617 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1617 } + : T[K] extends object ? { t: 'o'; props: Val_1617 } + : { t: 'u' }; +}; +type EV_1617 = Val_1617; + +interface Registry_16_17 { + entities: Map; + validators: EV_1617; + paths: Set; + merged: DeepMerge_1617; +} + +type CK_1617 = `p16.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_17, Registry_16_17, CK_1617, EP_1617, EV_1617, DeepMerge_1617 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-18.ts new file mode 100644 index 00000000..7c34373c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-18.ts @@ -0,0 +1,50 @@ +// pkg-16/types-18 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1618 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1618 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_18 | null; children: Entity_16_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1618: number; y1618: string; z1618: boolean }; +} + +type Path_1618 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1618}` }[keyof T & string] : never; +type EP_1618 = Path_1618; + +type Val_1618 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1618 } + : T[K] extends object ? { t: 'o'; props: Val_1618 } + : { t: 'u' }; +}; +type EV_1618 = Val_1618; + +interface Registry_16_18 { + entities: Map; + validators: EV_1618; + paths: Set; + merged: DeepMerge_1618; +} + +type CK_1618 = `p16.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_18, Registry_16_18, CK_1618, EP_1618, EV_1618, DeepMerge_1618 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-19.ts new file mode 100644 index 00000000..aa57b623 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-19.ts @@ -0,0 +1,50 @@ +// pkg-16/types-19 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1619 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1619 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_19 | null; children: Entity_16_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1619: number; y1619: string; z1619: boolean }; +} + +type Path_1619 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1619}` }[keyof T & string] : never; +type EP_1619 = Path_1619; + +type Val_1619 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1619 } + : T[K] extends object ? { t: 'o'; props: Val_1619 } + : { t: 'u' }; +}; +type EV_1619 = Val_1619; + +interface Registry_16_19 { + entities: Map; + validators: EV_1619; + paths: Set; + merged: DeepMerge_1619; +} + +type CK_1619 = `p16.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_19, Registry_16_19, CK_1619, EP_1619, EV_1619, DeepMerge_1619 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-20.ts new file mode 100644 index 00000000..f03c246f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-20.ts @@ -0,0 +1,50 @@ +// pkg-16/types-20 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1620 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1620 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_20 | null; children: Entity_16_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1620: number; y1620: string; z1620: boolean }; +} + +type Path_1620 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1620}` }[keyof T & string] : never; +type EP_1620 = Path_1620; + +type Val_1620 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1620 } + : T[K] extends object ? { t: 'o'; props: Val_1620 } + : { t: 'u' }; +}; +type EV_1620 = Val_1620; + +interface Registry_16_20 { + entities: Map; + validators: EV_1620; + paths: Set; + merged: DeepMerge_1620; +} + +type CK_1620 = `p16.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_20, Registry_16_20, CK_1620, EP_1620, EV_1620, DeepMerge_1620 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-21.ts new file mode 100644 index 00000000..8eb5f0c2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-21.ts @@ -0,0 +1,50 @@ +// pkg-16/types-21 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1621 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1621 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_21 | null; children: Entity_16_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1621: number; y1621: string; z1621: boolean }; +} + +type Path_1621 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1621}` }[keyof T & string] : never; +type EP_1621 = Path_1621; + +type Val_1621 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1621 } + : T[K] extends object ? { t: 'o'; props: Val_1621 } + : { t: 'u' }; +}; +type EV_1621 = Val_1621; + +interface Registry_16_21 { + entities: Map; + validators: EV_1621; + paths: Set; + merged: DeepMerge_1621; +} + +type CK_1621 = `p16.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_21, Registry_16_21, CK_1621, EP_1621, EV_1621, DeepMerge_1621 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-22.ts new file mode 100644 index 00000000..23fb6ce0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-22.ts @@ -0,0 +1,50 @@ +// pkg-16/types-22 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1622 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1622 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_22 | null; children: Entity_16_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1622: number; y1622: string; z1622: boolean }; +} + +type Path_1622 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1622}` }[keyof T & string] : never; +type EP_1622 = Path_1622; + +type Val_1622 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1622 } + : T[K] extends object ? { t: 'o'; props: Val_1622 } + : { t: 'u' }; +}; +type EV_1622 = Val_1622; + +interface Registry_16_22 { + entities: Map; + validators: EV_1622; + paths: Set; + merged: DeepMerge_1622; +} + +type CK_1622 = `p16.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_22, Registry_16_22, CK_1622, EP_1622, EV_1622, DeepMerge_1622 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-23.ts new file mode 100644 index 00000000..2fee5795 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-23.ts @@ -0,0 +1,50 @@ +// pkg-16/types-23 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1623 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1623 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_23 | null; children: Entity_16_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1623: number; y1623: string; z1623: boolean }; +} + +type Path_1623 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1623}` }[keyof T & string] : never; +type EP_1623 = Path_1623; + +type Val_1623 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1623 } + : T[K] extends object ? { t: 'o'; props: Val_1623 } + : { t: 'u' }; +}; +type EV_1623 = Val_1623; + +interface Registry_16_23 { + entities: Map; + validators: EV_1623; + paths: Set; + merged: DeepMerge_1623; +} + +type CK_1623 = `p16.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_23, Registry_16_23, CK_1623, EP_1623, EV_1623, DeepMerge_1623 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-24.ts new file mode 100644 index 00000000..a65241e0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-24.ts @@ -0,0 +1,50 @@ +// pkg-16/types-24 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1624 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1624 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_24 | null; children: Entity_16_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1624: number; y1624: string; z1624: boolean }; +} + +type Path_1624 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1624}` }[keyof T & string] : never; +type EP_1624 = Path_1624; + +type Val_1624 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1624 } + : T[K] extends object ? { t: 'o'; props: Val_1624 } + : { t: 'u' }; +}; +type EV_1624 = Val_1624; + +interface Registry_16_24 { + entities: Map; + validators: EV_1624; + paths: Set; + merged: DeepMerge_1624; +} + +type CK_1624 = `p16.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_24, Registry_16_24, CK_1624, EP_1624, EV_1624, DeepMerge_1624 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-25.ts new file mode 100644 index 00000000..5a2934a5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-25.ts @@ -0,0 +1,50 @@ +// pkg-16/types-25 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1625 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1625 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_25 | null; children: Entity_16_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1625: number; y1625: string; z1625: boolean }; +} + +type Path_1625 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1625}` }[keyof T & string] : never; +type EP_1625 = Path_1625; + +type Val_1625 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1625 } + : T[K] extends object ? { t: 'o'; props: Val_1625 } + : { t: 'u' }; +}; +type EV_1625 = Val_1625; + +interface Registry_16_25 { + entities: Map; + validators: EV_1625; + paths: Set; + merged: DeepMerge_1625; +} + +type CK_1625 = `p16.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_25, Registry_16_25, CK_1625, EP_1625, EV_1625, DeepMerge_1625 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-26.ts new file mode 100644 index 00000000..257f7186 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-26.ts @@ -0,0 +1,50 @@ +// pkg-16/types-26 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1626 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1626 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_26 | null; children: Entity_16_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1626: number; y1626: string; z1626: boolean }; +} + +type Path_1626 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1626}` }[keyof T & string] : never; +type EP_1626 = Path_1626; + +type Val_1626 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1626 } + : T[K] extends object ? { t: 'o'; props: Val_1626 } + : { t: 'u' }; +}; +type EV_1626 = Val_1626; + +interface Registry_16_26 { + entities: Map; + validators: EV_1626; + paths: Set; + merged: DeepMerge_1626; +} + +type CK_1626 = `p16.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_26, Registry_16_26, CK_1626, EP_1626, EV_1626, DeepMerge_1626 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-27.ts new file mode 100644 index 00000000..f2fc3f3c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-27.ts @@ -0,0 +1,50 @@ +// pkg-16/types-27 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1627 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1627 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_27 | null; children: Entity_16_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1627: number; y1627: string; z1627: boolean }; +} + +type Path_1627 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1627}` }[keyof T & string] : never; +type EP_1627 = Path_1627; + +type Val_1627 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1627 } + : T[K] extends object ? { t: 'o'; props: Val_1627 } + : { t: 'u' }; +}; +type EV_1627 = Val_1627; + +interface Registry_16_27 { + entities: Map; + validators: EV_1627; + paths: Set; + merged: DeepMerge_1627; +} + +type CK_1627 = `p16.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_27, Registry_16_27, CK_1627, EP_1627, EV_1627, DeepMerge_1627 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-28.ts new file mode 100644 index 00000000..34949fa2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-28.ts @@ -0,0 +1,50 @@ +// pkg-16/types-28 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1628 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1628 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_28 | null; children: Entity_16_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1628: number; y1628: string; z1628: boolean }; +} + +type Path_1628 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1628}` }[keyof T & string] : never; +type EP_1628 = Path_1628; + +type Val_1628 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1628 } + : T[K] extends object ? { t: 'o'; props: Val_1628 } + : { t: 'u' }; +}; +type EV_1628 = Val_1628; + +interface Registry_16_28 { + entities: Map; + validators: EV_1628; + paths: Set; + merged: DeepMerge_1628; +} + +type CK_1628 = `p16.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_28, Registry_16_28, CK_1628, EP_1628, EV_1628, DeepMerge_1628 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-29.ts new file mode 100644 index 00000000..6dd7cebc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-29.ts @@ -0,0 +1,50 @@ +// pkg-16/types-29 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1629 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1629 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_29 | null; children: Entity_16_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1629: number; y1629: string; z1629: boolean }; +} + +type Path_1629 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1629}` }[keyof T & string] : never; +type EP_1629 = Path_1629; + +type Val_1629 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1629 } + : T[K] extends object ? { t: 'o'; props: Val_1629 } + : { t: 'u' }; +}; +type EV_1629 = Val_1629; + +interface Registry_16_29 { + entities: Map; + validators: EV_1629; + paths: Set; + merged: DeepMerge_1629; +} + +type CK_1629 = `p16.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_29, Registry_16_29, CK_1629, EP_1629, EV_1629, DeepMerge_1629 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-30.ts new file mode 100644 index 00000000..27006d3d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-30.ts @@ -0,0 +1,50 @@ +// pkg-16/types-30 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1630 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1630 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_30 | null; children: Entity_16_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1630: number; y1630: string; z1630: boolean }; +} + +type Path_1630 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1630}` }[keyof T & string] : never; +type EP_1630 = Path_1630; + +type Val_1630 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1630 } + : T[K] extends object ? { t: 'o'; props: Val_1630 } + : { t: 'u' }; +}; +type EV_1630 = Val_1630; + +interface Registry_16_30 { + entities: Map; + validators: EV_1630; + paths: Set; + merged: DeepMerge_1630; +} + +type CK_1630 = `p16.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_30, Registry_16_30, CK_1630, EP_1630, EV_1630, DeepMerge_1630 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-31.ts new file mode 100644 index 00000000..12a6b510 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-31.ts @@ -0,0 +1,50 @@ +// pkg-16/types-31 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1631 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1631 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_31 | null; children: Entity_16_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1631: number; y1631: string; z1631: boolean }; +} + +type Path_1631 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1631}` }[keyof T & string] : never; +type EP_1631 = Path_1631; + +type Val_1631 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1631 } + : T[K] extends object ? { t: 'o'; props: Val_1631 } + : { t: 'u' }; +}; +type EV_1631 = Val_1631; + +interface Registry_16_31 { + entities: Map; + validators: EV_1631; + paths: Set; + merged: DeepMerge_1631; +} + +type CK_1631 = `p16.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_31, Registry_16_31, CK_1631, EP_1631, EV_1631, DeepMerge_1631 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-32.ts new file mode 100644 index 00000000..01dea0e1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-32.ts @@ -0,0 +1,50 @@ +// pkg-16/types-32 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1632 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1632 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_32 | null; children: Entity_16_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1632: number; y1632: string; z1632: boolean }; +} + +type Path_1632 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1632}` }[keyof T & string] : never; +type EP_1632 = Path_1632; + +type Val_1632 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1632 } + : T[K] extends object ? { t: 'o'; props: Val_1632 } + : { t: 'u' }; +}; +type EV_1632 = Val_1632; + +interface Registry_16_32 { + entities: Map; + validators: EV_1632; + paths: Set; + merged: DeepMerge_1632; +} + +type CK_1632 = `p16.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_32, Registry_16_32, CK_1632, EP_1632, EV_1632, DeepMerge_1632 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-33.ts new file mode 100644 index 00000000..b389f633 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-33.ts @@ -0,0 +1,50 @@ +// pkg-16/types-33 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1633 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1633 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_33 | null; children: Entity_16_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1633: number; y1633: string; z1633: boolean }; +} + +type Path_1633 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1633}` }[keyof T & string] : never; +type EP_1633 = Path_1633; + +type Val_1633 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1633 } + : T[K] extends object ? { t: 'o'; props: Val_1633 } + : { t: 'u' }; +}; +type EV_1633 = Val_1633; + +interface Registry_16_33 { + entities: Map; + validators: EV_1633; + paths: Set; + merged: DeepMerge_1633; +} + +type CK_1633 = `p16.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_33, Registry_16_33, CK_1633, EP_1633, EV_1633, DeepMerge_1633 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-34.ts new file mode 100644 index 00000000..9cded47b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-34.ts @@ -0,0 +1,50 @@ +// pkg-16/types-34 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1634 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1634 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_34 | null; children: Entity_16_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1634: number; y1634: string; z1634: boolean }; +} + +type Path_1634 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1634}` }[keyof T & string] : never; +type EP_1634 = Path_1634; + +type Val_1634 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1634 } + : T[K] extends object ? { t: 'o'; props: Val_1634 } + : { t: 'u' }; +}; +type EV_1634 = Val_1634; + +interface Registry_16_34 { + entities: Map; + validators: EV_1634; + paths: Set; + merged: DeepMerge_1634; +} + +type CK_1634 = `p16.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_34, Registry_16_34, CK_1634, EP_1634, EV_1634, DeepMerge_1634 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-35.ts new file mode 100644 index 00000000..328975a1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-35.ts @@ -0,0 +1,50 @@ +// pkg-16/types-35 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1635 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1635 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_35 | null; children: Entity_16_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1635: number; y1635: string; z1635: boolean }; +} + +type Path_1635 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1635}` }[keyof T & string] : never; +type EP_1635 = Path_1635; + +type Val_1635 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1635 } + : T[K] extends object ? { t: 'o'; props: Val_1635 } + : { t: 'u' }; +}; +type EV_1635 = Val_1635; + +interface Registry_16_35 { + entities: Map; + validators: EV_1635; + paths: Set; + merged: DeepMerge_1635; +} + +type CK_1635 = `p16.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_35, Registry_16_35, CK_1635, EP_1635, EV_1635, DeepMerge_1635 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-36.ts new file mode 100644 index 00000000..10c63e4c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-36.ts @@ -0,0 +1,50 @@ +// pkg-16/types-36 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1636 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1636 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_36 | null; children: Entity_16_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1636: number; y1636: string; z1636: boolean }; +} + +type Path_1636 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1636}` }[keyof T & string] : never; +type EP_1636 = Path_1636; + +type Val_1636 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1636 } + : T[K] extends object ? { t: 'o'; props: Val_1636 } + : { t: 'u' }; +}; +type EV_1636 = Val_1636; + +interface Registry_16_36 { + entities: Map; + validators: EV_1636; + paths: Set; + merged: DeepMerge_1636; +} + +type CK_1636 = `p16.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_36, Registry_16_36, CK_1636, EP_1636, EV_1636, DeepMerge_1636 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-37.ts new file mode 100644 index 00000000..700b2a3c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-37.ts @@ -0,0 +1,50 @@ +// pkg-16/types-37 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1637 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1637 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_37 | null; children: Entity_16_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1637: number; y1637: string; z1637: boolean }; +} + +type Path_1637 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1637}` }[keyof T & string] : never; +type EP_1637 = Path_1637; + +type Val_1637 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1637 } + : T[K] extends object ? { t: 'o'; props: Val_1637 } + : { t: 'u' }; +}; +type EV_1637 = Val_1637; + +interface Registry_16_37 { + entities: Map; + validators: EV_1637; + paths: Set; + merged: DeepMerge_1637; +} + +type CK_1637 = `p16.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_37, Registry_16_37, CK_1637, EP_1637, EV_1637, DeepMerge_1637 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-38.ts new file mode 100644 index 00000000..53c1ff77 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-38.ts @@ -0,0 +1,50 @@ +// pkg-16/types-38 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1638 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1638 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_38 | null; children: Entity_16_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1638: number; y1638: string; z1638: boolean }; +} + +type Path_1638 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1638}` }[keyof T & string] : never; +type EP_1638 = Path_1638; + +type Val_1638 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1638 } + : T[K] extends object ? { t: 'o'; props: Val_1638 } + : { t: 'u' }; +}; +type EV_1638 = Val_1638; + +interface Registry_16_38 { + entities: Map; + validators: EV_1638; + paths: Set; + merged: DeepMerge_1638; +} + +type CK_1638 = `p16.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_38, Registry_16_38, CK_1638, EP_1638, EV_1638, DeepMerge_1638 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-39.ts new file mode 100644 index 00000000..f555d912 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-39.ts @@ -0,0 +1,50 @@ +// pkg-16/types-39 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1639 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1639 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_39 | null; children: Entity_16_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1639: number; y1639: string; z1639: boolean }; +} + +type Path_1639 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1639}` }[keyof T & string] : never; +type EP_1639 = Path_1639; + +type Val_1639 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1639 } + : T[K] extends object ? { t: 'o'; props: Val_1639 } + : { t: 'u' }; +}; +type EV_1639 = Val_1639; + +interface Registry_16_39 { + entities: Map; + validators: EV_1639; + paths: Set; + merged: DeepMerge_1639; +} + +type CK_1639 = `p16.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_39, Registry_16_39, CK_1639, EP_1639, EV_1639, DeepMerge_1639 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-40.ts new file mode 100644 index 00000000..532f8dab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-40.ts @@ -0,0 +1,50 @@ +// pkg-16/types-40 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1640 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1640 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_40 | null; children: Entity_16_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1640: number; y1640: string; z1640: boolean }; +} + +type Path_1640 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1640}` }[keyof T & string] : never; +type EP_1640 = Path_1640; + +type Val_1640 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1640 } + : T[K] extends object ? { t: 'o'; props: Val_1640 } + : { t: 'u' }; +}; +type EV_1640 = Val_1640; + +interface Registry_16_40 { + entities: Map; + validators: EV_1640; + paths: Set; + merged: DeepMerge_1640; +} + +type CK_1640 = `p16.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_40, Registry_16_40, CK_1640, EP_1640, EV_1640, DeepMerge_1640 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-41.ts new file mode 100644 index 00000000..382520bc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-41.ts @@ -0,0 +1,50 @@ +// pkg-16/types-41 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1641 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1641 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_41 | null; children: Entity_16_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1641: number; y1641: string; z1641: boolean }; +} + +type Path_1641 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1641}` }[keyof T & string] : never; +type EP_1641 = Path_1641; + +type Val_1641 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1641 } + : T[K] extends object ? { t: 'o'; props: Val_1641 } + : { t: 'u' }; +}; +type EV_1641 = Val_1641; + +interface Registry_16_41 { + entities: Map; + validators: EV_1641; + paths: Set; + merged: DeepMerge_1641; +} + +type CK_1641 = `p16.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_41, Registry_16_41, CK_1641, EP_1641, EV_1641, DeepMerge_1641 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-42.ts new file mode 100644 index 00000000..95ff50eb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-42.ts @@ -0,0 +1,50 @@ +// pkg-16/types-42 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1642 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1642 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_42 | null; children: Entity_16_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1642: number; y1642: string; z1642: boolean }; +} + +type Path_1642 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1642}` }[keyof T & string] : never; +type EP_1642 = Path_1642; + +type Val_1642 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1642 } + : T[K] extends object ? { t: 'o'; props: Val_1642 } + : { t: 'u' }; +}; +type EV_1642 = Val_1642; + +interface Registry_16_42 { + entities: Map; + validators: EV_1642; + paths: Set; + merged: DeepMerge_1642; +} + +type CK_1642 = `p16.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_42, Registry_16_42, CK_1642, EP_1642, EV_1642, DeepMerge_1642 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-43.ts new file mode 100644 index 00000000..97e184bf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-43.ts @@ -0,0 +1,50 @@ +// pkg-16/types-43 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1643 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1643 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_43 | null; children: Entity_16_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1643: number; y1643: string; z1643: boolean }; +} + +type Path_1643 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1643}` }[keyof T & string] : never; +type EP_1643 = Path_1643; + +type Val_1643 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1643 } + : T[K] extends object ? { t: 'o'; props: Val_1643 } + : { t: 'u' }; +}; +type EV_1643 = Val_1643; + +interface Registry_16_43 { + entities: Map; + validators: EV_1643; + paths: Set; + merged: DeepMerge_1643; +} + +type CK_1643 = `p16.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_43, Registry_16_43, CK_1643, EP_1643, EV_1643, DeepMerge_1643 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-44.ts new file mode 100644 index 00000000..2d992562 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-44.ts @@ -0,0 +1,50 @@ +// pkg-16/types-44 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1644 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1644 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_44 | null; children: Entity_16_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1644: number; y1644: string; z1644: boolean }; +} + +type Path_1644 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1644}` }[keyof T & string] : never; +type EP_1644 = Path_1644; + +type Val_1644 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1644 } + : T[K] extends object ? { t: 'o'; props: Val_1644 } + : { t: 'u' }; +}; +type EV_1644 = Val_1644; + +interface Registry_16_44 { + entities: Map; + validators: EV_1644; + paths: Set; + merged: DeepMerge_1644; +} + +type CK_1644 = `p16.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_44, Registry_16_44, CK_1644, EP_1644, EV_1644, DeepMerge_1644 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-45.ts new file mode 100644 index 00000000..e6052302 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-45.ts @@ -0,0 +1,50 @@ +// pkg-16/types-45 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1645 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1645 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_45 | null; children: Entity_16_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1645: number; y1645: string; z1645: boolean }; +} + +type Path_1645 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1645}` }[keyof T & string] : never; +type EP_1645 = Path_1645; + +type Val_1645 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1645 } + : T[K] extends object ? { t: 'o'; props: Val_1645 } + : { t: 'u' }; +}; +type EV_1645 = Val_1645; + +interface Registry_16_45 { + entities: Map; + validators: EV_1645; + paths: Set; + merged: DeepMerge_1645; +} + +type CK_1645 = `p16.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_45, Registry_16_45, CK_1645, EP_1645, EV_1645, DeepMerge_1645 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-46.ts new file mode 100644 index 00000000..7acd784e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-46.ts @@ -0,0 +1,50 @@ +// pkg-16/types-46 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1646 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1646 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_46 | null; children: Entity_16_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1646: number; y1646: string; z1646: boolean }; +} + +type Path_1646 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1646}` }[keyof T & string] : never; +type EP_1646 = Path_1646; + +type Val_1646 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1646 } + : T[K] extends object ? { t: 'o'; props: Val_1646 } + : { t: 'u' }; +}; +type EV_1646 = Val_1646; + +interface Registry_16_46 { + entities: Map; + validators: EV_1646; + paths: Set; + merged: DeepMerge_1646; +} + +type CK_1646 = `p16.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_46, Registry_16_46, CK_1646, EP_1646, EV_1646, DeepMerge_1646 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-47.ts new file mode 100644 index 00000000..b45b8162 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-47.ts @@ -0,0 +1,50 @@ +// pkg-16/types-47 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1647 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1647 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_47 | null; children: Entity_16_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1647: number; y1647: string; z1647: boolean }; +} + +type Path_1647 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1647}` }[keyof T & string] : never; +type EP_1647 = Path_1647; + +type Val_1647 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1647 } + : T[K] extends object ? { t: 'o'; props: Val_1647 } + : { t: 'u' }; +}; +type EV_1647 = Val_1647; + +interface Registry_16_47 { + entities: Map; + validators: EV_1647; + paths: Set; + merged: DeepMerge_1647; +} + +type CK_1647 = `p16.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_47, Registry_16_47, CK_1647, EP_1647, EV_1647, DeepMerge_1647 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-48.ts new file mode 100644 index 00000000..0ab51011 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-48.ts @@ -0,0 +1,50 @@ +// pkg-16/types-48 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1648 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1648 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_48 | null; children: Entity_16_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1648: number; y1648: string; z1648: boolean }; +} + +type Path_1648 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1648}` }[keyof T & string] : never; +type EP_1648 = Path_1648; + +type Val_1648 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1648 } + : T[K] extends object ? { t: 'o'; props: Val_1648 } + : { t: 'u' }; +}; +type EV_1648 = Val_1648; + +interface Registry_16_48 { + entities: Map; + validators: EV_1648; + paths: Set; + merged: DeepMerge_1648; +} + +type CK_1648 = `p16.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_48, Registry_16_48, CK_1648, EP_1648, EV_1648, DeepMerge_1648 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-49.ts new file mode 100644 index 00000000..bc2ecf70 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-49.ts @@ -0,0 +1,50 @@ +// pkg-16/types-49 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1649 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1649 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_49 | null; children: Entity_16_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1649: number; y1649: string; z1649: boolean }; +} + +type Path_1649 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1649}` }[keyof T & string] : never; +type EP_1649 = Path_1649; + +type Val_1649 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1649 } + : T[K] extends object ? { t: 'o'; props: Val_1649 } + : { t: 'u' }; +}; +type EV_1649 = Val_1649; + +interface Registry_16_49 { + entities: Map; + validators: EV_1649; + paths: Set; + merged: DeepMerge_1649; +} + +type CK_1649 = `p16.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_49, Registry_16_49, CK_1649, EP_1649, EV_1649, DeepMerge_1649 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-16/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-16/types-50.ts new file mode 100644 index 00000000..fd335c10 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-16/types-50.ts @@ -0,0 +1,50 @@ +// pkg-16/types-50 - heavy interconnected types + +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; +import type { Entity_13_01, Registry_13_01 } from '../pkg-13/types-01'; +import type { Entity_13_10, Registry_13_10 } from '../pkg-13/types-10'; +import type { Entity_13_20, Registry_13_20 } from '../pkg-13/types-20'; + +type DeepMerge_1650 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1650 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_16_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_16_50 | null; children: Entity_16_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1650: number; y1650: string; z1650: boolean }; +} + +type Path_1650 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1650}` }[keyof T & string] : never; +type EP_1650 = Path_1650; + +type Val_1650 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1650 } + : T[K] extends object ? { t: 'o'; props: Val_1650 } + : { t: 'u' }; +}; +type EV_1650 = Val_1650; + +interface Registry_16_50 { + entities: Map; + validators: EV_1650; + paths: Set; + merged: DeepMerge_1650; +} + +type CK_1650 = `p16.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_16_50, Registry_16_50, CK_1650, EP_1650, EV_1650, DeepMerge_1650 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-17/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-01.ts new file mode 100644 index 00000000..d7c003de --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-01.ts @@ -0,0 +1,50 @@ +// pkg-17/types-01 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1701 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1701 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_01 | null; children: Entity_17_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1701: number; y1701: string; z1701: boolean }; +} + +type Path_1701 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1701}` }[keyof T & string] : never; +type EP_1701 = Path_1701; + +type Val_1701 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1701 } + : T[K] extends object ? { t: 'o'; props: Val_1701 } + : { t: 'u' }; +}; +type EV_1701 = Val_1701; + +interface Registry_17_01 { + entities: Map; + validators: EV_1701; + paths: Set; + merged: DeepMerge_1701; +} + +type CK_1701 = `p17.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_01, Registry_17_01, CK_1701, EP_1701, EV_1701, DeepMerge_1701 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-02.ts new file mode 100644 index 00000000..5b61efbd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-02.ts @@ -0,0 +1,50 @@ +// pkg-17/types-02 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1702 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1702 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_02 | null; children: Entity_17_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1702: number; y1702: string; z1702: boolean }; +} + +type Path_1702 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1702}` }[keyof T & string] : never; +type EP_1702 = Path_1702; + +type Val_1702 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1702 } + : T[K] extends object ? { t: 'o'; props: Val_1702 } + : { t: 'u' }; +}; +type EV_1702 = Val_1702; + +interface Registry_17_02 { + entities: Map; + validators: EV_1702; + paths: Set; + merged: DeepMerge_1702; +} + +type CK_1702 = `p17.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_02, Registry_17_02, CK_1702, EP_1702, EV_1702, DeepMerge_1702 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-03.ts new file mode 100644 index 00000000..2fd69a78 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-03.ts @@ -0,0 +1,50 @@ +// pkg-17/types-03 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1703 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1703 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_03 | null; children: Entity_17_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1703: number; y1703: string; z1703: boolean }; +} + +type Path_1703 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1703}` }[keyof T & string] : never; +type EP_1703 = Path_1703; + +type Val_1703 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1703 } + : T[K] extends object ? { t: 'o'; props: Val_1703 } + : { t: 'u' }; +}; +type EV_1703 = Val_1703; + +interface Registry_17_03 { + entities: Map; + validators: EV_1703; + paths: Set; + merged: DeepMerge_1703; +} + +type CK_1703 = `p17.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_03, Registry_17_03, CK_1703, EP_1703, EV_1703, DeepMerge_1703 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-04.ts new file mode 100644 index 00000000..016991fd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-04.ts @@ -0,0 +1,50 @@ +// pkg-17/types-04 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1704 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1704 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_04 | null; children: Entity_17_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1704: number; y1704: string; z1704: boolean }; +} + +type Path_1704 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1704}` }[keyof T & string] : never; +type EP_1704 = Path_1704; + +type Val_1704 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1704 } + : T[K] extends object ? { t: 'o'; props: Val_1704 } + : { t: 'u' }; +}; +type EV_1704 = Val_1704; + +interface Registry_17_04 { + entities: Map; + validators: EV_1704; + paths: Set; + merged: DeepMerge_1704; +} + +type CK_1704 = `p17.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_04, Registry_17_04, CK_1704, EP_1704, EV_1704, DeepMerge_1704 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-05.ts new file mode 100644 index 00000000..071bbe17 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-05.ts @@ -0,0 +1,50 @@ +// pkg-17/types-05 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1705 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1705 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_05 | null; children: Entity_17_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1705: number; y1705: string; z1705: boolean }; +} + +type Path_1705 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1705}` }[keyof T & string] : never; +type EP_1705 = Path_1705; + +type Val_1705 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1705 } + : T[K] extends object ? { t: 'o'; props: Val_1705 } + : { t: 'u' }; +}; +type EV_1705 = Val_1705; + +interface Registry_17_05 { + entities: Map; + validators: EV_1705; + paths: Set; + merged: DeepMerge_1705; +} + +type CK_1705 = `p17.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_05, Registry_17_05, CK_1705, EP_1705, EV_1705, DeepMerge_1705 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-06.ts new file mode 100644 index 00000000..9fcb4bd8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-06.ts @@ -0,0 +1,50 @@ +// pkg-17/types-06 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1706 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1706 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_06 | null; children: Entity_17_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1706: number; y1706: string; z1706: boolean }; +} + +type Path_1706 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1706}` }[keyof T & string] : never; +type EP_1706 = Path_1706; + +type Val_1706 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1706 } + : T[K] extends object ? { t: 'o'; props: Val_1706 } + : { t: 'u' }; +}; +type EV_1706 = Val_1706; + +interface Registry_17_06 { + entities: Map; + validators: EV_1706; + paths: Set; + merged: DeepMerge_1706; +} + +type CK_1706 = `p17.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_06, Registry_17_06, CK_1706, EP_1706, EV_1706, DeepMerge_1706 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-07.ts new file mode 100644 index 00000000..60491187 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-07.ts @@ -0,0 +1,50 @@ +// pkg-17/types-07 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1707 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1707 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_07 | null; children: Entity_17_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1707: number; y1707: string; z1707: boolean }; +} + +type Path_1707 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1707}` }[keyof T & string] : never; +type EP_1707 = Path_1707; + +type Val_1707 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1707 } + : T[K] extends object ? { t: 'o'; props: Val_1707 } + : { t: 'u' }; +}; +type EV_1707 = Val_1707; + +interface Registry_17_07 { + entities: Map; + validators: EV_1707; + paths: Set; + merged: DeepMerge_1707; +} + +type CK_1707 = `p17.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_07, Registry_17_07, CK_1707, EP_1707, EV_1707, DeepMerge_1707 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-08.ts new file mode 100644 index 00000000..9bcc406e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-08.ts @@ -0,0 +1,50 @@ +// pkg-17/types-08 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1708 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1708 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_08 | null; children: Entity_17_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1708: number; y1708: string; z1708: boolean }; +} + +type Path_1708 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1708}` }[keyof T & string] : never; +type EP_1708 = Path_1708; + +type Val_1708 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1708 } + : T[K] extends object ? { t: 'o'; props: Val_1708 } + : { t: 'u' }; +}; +type EV_1708 = Val_1708; + +interface Registry_17_08 { + entities: Map; + validators: EV_1708; + paths: Set; + merged: DeepMerge_1708; +} + +type CK_1708 = `p17.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_08, Registry_17_08, CK_1708, EP_1708, EV_1708, DeepMerge_1708 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-09.ts new file mode 100644 index 00000000..395f1e4e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-09.ts @@ -0,0 +1,50 @@ +// pkg-17/types-09 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1709 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1709 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_09 | null; children: Entity_17_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1709: number; y1709: string; z1709: boolean }; +} + +type Path_1709 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1709}` }[keyof T & string] : never; +type EP_1709 = Path_1709; + +type Val_1709 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1709 } + : T[K] extends object ? { t: 'o'; props: Val_1709 } + : { t: 'u' }; +}; +type EV_1709 = Val_1709; + +interface Registry_17_09 { + entities: Map; + validators: EV_1709; + paths: Set; + merged: DeepMerge_1709; +} + +type CK_1709 = `p17.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_09, Registry_17_09, CK_1709, EP_1709, EV_1709, DeepMerge_1709 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-10.ts new file mode 100644 index 00000000..7f2f6571 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-10.ts @@ -0,0 +1,50 @@ +// pkg-17/types-10 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1710 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1710 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_10 | null; children: Entity_17_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1710: number; y1710: string; z1710: boolean }; +} + +type Path_1710 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1710}` }[keyof T & string] : never; +type EP_1710 = Path_1710; + +type Val_1710 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1710 } + : T[K] extends object ? { t: 'o'; props: Val_1710 } + : { t: 'u' }; +}; +type EV_1710 = Val_1710; + +interface Registry_17_10 { + entities: Map; + validators: EV_1710; + paths: Set; + merged: DeepMerge_1710; +} + +type CK_1710 = `p17.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_10, Registry_17_10, CK_1710, EP_1710, EV_1710, DeepMerge_1710 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-11.ts new file mode 100644 index 00000000..066d0b88 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-11.ts @@ -0,0 +1,50 @@ +// pkg-17/types-11 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1711 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1711 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_11 | null; children: Entity_17_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1711: number; y1711: string; z1711: boolean }; +} + +type Path_1711 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1711}` }[keyof T & string] : never; +type EP_1711 = Path_1711; + +type Val_1711 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1711 } + : T[K] extends object ? { t: 'o'; props: Val_1711 } + : { t: 'u' }; +}; +type EV_1711 = Val_1711; + +interface Registry_17_11 { + entities: Map; + validators: EV_1711; + paths: Set; + merged: DeepMerge_1711; +} + +type CK_1711 = `p17.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_11, Registry_17_11, CK_1711, EP_1711, EV_1711, DeepMerge_1711 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-12.ts new file mode 100644 index 00000000..45e35ec1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-12.ts @@ -0,0 +1,50 @@ +// pkg-17/types-12 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1712 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1712 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_12 | null; children: Entity_17_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1712: number; y1712: string; z1712: boolean }; +} + +type Path_1712 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1712}` }[keyof T & string] : never; +type EP_1712 = Path_1712; + +type Val_1712 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1712 } + : T[K] extends object ? { t: 'o'; props: Val_1712 } + : { t: 'u' }; +}; +type EV_1712 = Val_1712; + +interface Registry_17_12 { + entities: Map; + validators: EV_1712; + paths: Set; + merged: DeepMerge_1712; +} + +type CK_1712 = `p17.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_12, Registry_17_12, CK_1712, EP_1712, EV_1712, DeepMerge_1712 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-13.ts new file mode 100644 index 00000000..5ccf84d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-13.ts @@ -0,0 +1,50 @@ +// pkg-17/types-13 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1713 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1713 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_13 | null; children: Entity_17_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1713: number; y1713: string; z1713: boolean }; +} + +type Path_1713 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1713}` }[keyof T & string] : never; +type EP_1713 = Path_1713; + +type Val_1713 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1713 } + : T[K] extends object ? { t: 'o'; props: Val_1713 } + : { t: 'u' }; +}; +type EV_1713 = Val_1713; + +interface Registry_17_13 { + entities: Map; + validators: EV_1713; + paths: Set; + merged: DeepMerge_1713; +} + +type CK_1713 = `p17.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_13, Registry_17_13, CK_1713, EP_1713, EV_1713, DeepMerge_1713 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-14.ts new file mode 100644 index 00000000..f0b999ab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-14.ts @@ -0,0 +1,50 @@ +// pkg-17/types-14 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1714 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1714 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_14 | null; children: Entity_17_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1714: number; y1714: string; z1714: boolean }; +} + +type Path_1714 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1714}` }[keyof T & string] : never; +type EP_1714 = Path_1714; + +type Val_1714 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1714 } + : T[K] extends object ? { t: 'o'; props: Val_1714 } + : { t: 'u' }; +}; +type EV_1714 = Val_1714; + +interface Registry_17_14 { + entities: Map; + validators: EV_1714; + paths: Set; + merged: DeepMerge_1714; +} + +type CK_1714 = `p17.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_14, Registry_17_14, CK_1714, EP_1714, EV_1714, DeepMerge_1714 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-15.ts new file mode 100644 index 00000000..04d7f996 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-15.ts @@ -0,0 +1,50 @@ +// pkg-17/types-15 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1715 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1715 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_15 | null; children: Entity_17_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1715: number; y1715: string; z1715: boolean }; +} + +type Path_1715 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1715}` }[keyof T & string] : never; +type EP_1715 = Path_1715; + +type Val_1715 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1715 } + : T[K] extends object ? { t: 'o'; props: Val_1715 } + : { t: 'u' }; +}; +type EV_1715 = Val_1715; + +interface Registry_17_15 { + entities: Map; + validators: EV_1715; + paths: Set; + merged: DeepMerge_1715; +} + +type CK_1715 = `p17.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_15, Registry_17_15, CK_1715, EP_1715, EV_1715, DeepMerge_1715 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-16.ts new file mode 100644 index 00000000..0969b26f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-16.ts @@ -0,0 +1,50 @@ +// pkg-17/types-16 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1716 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1716 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_16 | null; children: Entity_17_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1716: number; y1716: string; z1716: boolean }; +} + +type Path_1716 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1716}` }[keyof T & string] : never; +type EP_1716 = Path_1716; + +type Val_1716 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1716 } + : T[K] extends object ? { t: 'o'; props: Val_1716 } + : { t: 'u' }; +}; +type EV_1716 = Val_1716; + +interface Registry_17_16 { + entities: Map; + validators: EV_1716; + paths: Set; + merged: DeepMerge_1716; +} + +type CK_1716 = `p17.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_16, Registry_17_16, CK_1716, EP_1716, EV_1716, DeepMerge_1716 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-17.ts new file mode 100644 index 00000000..594d9ad2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-17.ts @@ -0,0 +1,50 @@ +// pkg-17/types-17 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1717 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1717 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_17 | null; children: Entity_17_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1717: number; y1717: string; z1717: boolean }; +} + +type Path_1717 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1717}` }[keyof T & string] : never; +type EP_1717 = Path_1717; + +type Val_1717 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1717 } + : T[K] extends object ? { t: 'o'; props: Val_1717 } + : { t: 'u' }; +}; +type EV_1717 = Val_1717; + +interface Registry_17_17 { + entities: Map; + validators: EV_1717; + paths: Set; + merged: DeepMerge_1717; +} + +type CK_1717 = `p17.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_17, Registry_17_17, CK_1717, EP_1717, EV_1717, DeepMerge_1717 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-18.ts new file mode 100644 index 00000000..b93f4081 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-18.ts @@ -0,0 +1,50 @@ +// pkg-17/types-18 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1718 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1718 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_18 | null; children: Entity_17_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1718: number; y1718: string; z1718: boolean }; +} + +type Path_1718 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1718}` }[keyof T & string] : never; +type EP_1718 = Path_1718; + +type Val_1718 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1718 } + : T[K] extends object ? { t: 'o'; props: Val_1718 } + : { t: 'u' }; +}; +type EV_1718 = Val_1718; + +interface Registry_17_18 { + entities: Map; + validators: EV_1718; + paths: Set; + merged: DeepMerge_1718; +} + +type CK_1718 = `p17.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_18, Registry_17_18, CK_1718, EP_1718, EV_1718, DeepMerge_1718 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-19.ts new file mode 100644 index 00000000..af64b289 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-19.ts @@ -0,0 +1,50 @@ +// pkg-17/types-19 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1719 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1719 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_19 | null; children: Entity_17_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1719: number; y1719: string; z1719: boolean }; +} + +type Path_1719 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1719}` }[keyof T & string] : never; +type EP_1719 = Path_1719; + +type Val_1719 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1719 } + : T[K] extends object ? { t: 'o'; props: Val_1719 } + : { t: 'u' }; +}; +type EV_1719 = Val_1719; + +interface Registry_17_19 { + entities: Map; + validators: EV_1719; + paths: Set; + merged: DeepMerge_1719; +} + +type CK_1719 = `p17.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_19, Registry_17_19, CK_1719, EP_1719, EV_1719, DeepMerge_1719 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-20.ts new file mode 100644 index 00000000..f317af1c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-20.ts @@ -0,0 +1,50 @@ +// pkg-17/types-20 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1720 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1720 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_20 | null; children: Entity_17_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1720: number; y1720: string; z1720: boolean }; +} + +type Path_1720 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1720}` }[keyof T & string] : never; +type EP_1720 = Path_1720; + +type Val_1720 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1720 } + : T[K] extends object ? { t: 'o'; props: Val_1720 } + : { t: 'u' }; +}; +type EV_1720 = Val_1720; + +interface Registry_17_20 { + entities: Map; + validators: EV_1720; + paths: Set; + merged: DeepMerge_1720; +} + +type CK_1720 = `p17.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_20, Registry_17_20, CK_1720, EP_1720, EV_1720, DeepMerge_1720 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-21.ts new file mode 100644 index 00000000..dc5d42ba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-21.ts @@ -0,0 +1,50 @@ +// pkg-17/types-21 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1721 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1721 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_21 | null; children: Entity_17_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1721: number; y1721: string; z1721: boolean }; +} + +type Path_1721 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1721}` }[keyof T & string] : never; +type EP_1721 = Path_1721; + +type Val_1721 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1721 } + : T[K] extends object ? { t: 'o'; props: Val_1721 } + : { t: 'u' }; +}; +type EV_1721 = Val_1721; + +interface Registry_17_21 { + entities: Map; + validators: EV_1721; + paths: Set; + merged: DeepMerge_1721; +} + +type CK_1721 = `p17.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_21, Registry_17_21, CK_1721, EP_1721, EV_1721, DeepMerge_1721 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-22.ts new file mode 100644 index 00000000..32fd05b0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-22.ts @@ -0,0 +1,50 @@ +// pkg-17/types-22 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1722 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1722 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_22 | null; children: Entity_17_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1722: number; y1722: string; z1722: boolean }; +} + +type Path_1722 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1722}` }[keyof T & string] : never; +type EP_1722 = Path_1722; + +type Val_1722 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1722 } + : T[K] extends object ? { t: 'o'; props: Val_1722 } + : { t: 'u' }; +}; +type EV_1722 = Val_1722; + +interface Registry_17_22 { + entities: Map; + validators: EV_1722; + paths: Set; + merged: DeepMerge_1722; +} + +type CK_1722 = `p17.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_22, Registry_17_22, CK_1722, EP_1722, EV_1722, DeepMerge_1722 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-23.ts new file mode 100644 index 00000000..d8d69db3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-23.ts @@ -0,0 +1,50 @@ +// pkg-17/types-23 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1723 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1723 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_23 | null; children: Entity_17_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1723: number; y1723: string; z1723: boolean }; +} + +type Path_1723 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1723}` }[keyof T & string] : never; +type EP_1723 = Path_1723; + +type Val_1723 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1723 } + : T[K] extends object ? { t: 'o'; props: Val_1723 } + : { t: 'u' }; +}; +type EV_1723 = Val_1723; + +interface Registry_17_23 { + entities: Map; + validators: EV_1723; + paths: Set; + merged: DeepMerge_1723; +} + +type CK_1723 = `p17.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_23, Registry_17_23, CK_1723, EP_1723, EV_1723, DeepMerge_1723 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-24.ts new file mode 100644 index 00000000..cd0d7fe3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-24.ts @@ -0,0 +1,50 @@ +// pkg-17/types-24 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1724 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1724 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_24 | null; children: Entity_17_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1724: number; y1724: string; z1724: boolean }; +} + +type Path_1724 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1724}` }[keyof T & string] : never; +type EP_1724 = Path_1724; + +type Val_1724 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1724 } + : T[K] extends object ? { t: 'o'; props: Val_1724 } + : { t: 'u' }; +}; +type EV_1724 = Val_1724; + +interface Registry_17_24 { + entities: Map; + validators: EV_1724; + paths: Set; + merged: DeepMerge_1724; +} + +type CK_1724 = `p17.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_24, Registry_17_24, CK_1724, EP_1724, EV_1724, DeepMerge_1724 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-25.ts new file mode 100644 index 00000000..0481bb66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-25.ts @@ -0,0 +1,50 @@ +// pkg-17/types-25 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1725 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1725 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_25 | null; children: Entity_17_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1725: number; y1725: string; z1725: boolean }; +} + +type Path_1725 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1725}` }[keyof T & string] : never; +type EP_1725 = Path_1725; + +type Val_1725 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1725 } + : T[K] extends object ? { t: 'o'; props: Val_1725 } + : { t: 'u' }; +}; +type EV_1725 = Val_1725; + +interface Registry_17_25 { + entities: Map; + validators: EV_1725; + paths: Set; + merged: DeepMerge_1725; +} + +type CK_1725 = `p17.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_25, Registry_17_25, CK_1725, EP_1725, EV_1725, DeepMerge_1725 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-26.ts new file mode 100644 index 00000000..7d224bde --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-26.ts @@ -0,0 +1,50 @@ +// pkg-17/types-26 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1726 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1726 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_26 | null; children: Entity_17_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1726: number; y1726: string; z1726: boolean }; +} + +type Path_1726 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1726}` }[keyof T & string] : never; +type EP_1726 = Path_1726; + +type Val_1726 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1726 } + : T[K] extends object ? { t: 'o'; props: Val_1726 } + : { t: 'u' }; +}; +type EV_1726 = Val_1726; + +interface Registry_17_26 { + entities: Map; + validators: EV_1726; + paths: Set; + merged: DeepMerge_1726; +} + +type CK_1726 = `p17.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_26, Registry_17_26, CK_1726, EP_1726, EV_1726, DeepMerge_1726 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-27.ts new file mode 100644 index 00000000..0851b7a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-27.ts @@ -0,0 +1,50 @@ +// pkg-17/types-27 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1727 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1727 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_27 | null; children: Entity_17_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1727: number; y1727: string; z1727: boolean }; +} + +type Path_1727 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1727}` }[keyof T & string] : never; +type EP_1727 = Path_1727; + +type Val_1727 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1727 } + : T[K] extends object ? { t: 'o'; props: Val_1727 } + : { t: 'u' }; +}; +type EV_1727 = Val_1727; + +interface Registry_17_27 { + entities: Map; + validators: EV_1727; + paths: Set; + merged: DeepMerge_1727; +} + +type CK_1727 = `p17.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_27, Registry_17_27, CK_1727, EP_1727, EV_1727, DeepMerge_1727 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-28.ts new file mode 100644 index 00000000..334ad9e1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-28.ts @@ -0,0 +1,50 @@ +// pkg-17/types-28 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1728 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1728 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_28 | null; children: Entity_17_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1728: number; y1728: string; z1728: boolean }; +} + +type Path_1728 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1728}` }[keyof T & string] : never; +type EP_1728 = Path_1728; + +type Val_1728 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1728 } + : T[K] extends object ? { t: 'o'; props: Val_1728 } + : { t: 'u' }; +}; +type EV_1728 = Val_1728; + +interface Registry_17_28 { + entities: Map; + validators: EV_1728; + paths: Set; + merged: DeepMerge_1728; +} + +type CK_1728 = `p17.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_28, Registry_17_28, CK_1728, EP_1728, EV_1728, DeepMerge_1728 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-29.ts new file mode 100644 index 00000000..92d66750 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-29.ts @@ -0,0 +1,50 @@ +// pkg-17/types-29 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1729 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1729 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_29 | null; children: Entity_17_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1729: number; y1729: string; z1729: boolean }; +} + +type Path_1729 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1729}` }[keyof T & string] : never; +type EP_1729 = Path_1729; + +type Val_1729 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1729 } + : T[K] extends object ? { t: 'o'; props: Val_1729 } + : { t: 'u' }; +}; +type EV_1729 = Val_1729; + +interface Registry_17_29 { + entities: Map; + validators: EV_1729; + paths: Set; + merged: DeepMerge_1729; +} + +type CK_1729 = `p17.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_29, Registry_17_29, CK_1729, EP_1729, EV_1729, DeepMerge_1729 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-30.ts new file mode 100644 index 00000000..ced3bef3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-30.ts @@ -0,0 +1,50 @@ +// pkg-17/types-30 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1730 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1730 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_30 | null; children: Entity_17_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1730: number; y1730: string; z1730: boolean }; +} + +type Path_1730 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1730}` }[keyof T & string] : never; +type EP_1730 = Path_1730; + +type Val_1730 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1730 } + : T[K] extends object ? { t: 'o'; props: Val_1730 } + : { t: 'u' }; +}; +type EV_1730 = Val_1730; + +interface Registry_17_30 { + entities: Map; + validators: EV_1730; + paths: Set; + merged: DeepMerge_1730; +} + +type CK_1730 = `p17.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_30, Registry_17_30, CK_1730, EP_1730, EV_1730, DeepMerge_1730 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-31.ts new file mode 100644 index 00000000..441717e4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-31.ts @@ -0,0 +1,50 @@ +// pkg-17/types-31 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1731 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1731 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_31 | null; children: Entity_17_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1731: number; y1731: string; z1731: boolean }; +} + +type Path_1731 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1731}` }[keyof T & string] : never; +type EP_1731 = Path_1731; + +type Val_1731 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1731 } + : T[K] extends object ? { t: 'o'; props: Val_1731 } + : { t: 'u' }; +}; +type EV_1731 = Val_1731; + +interface Registry_17_31 { + entities: Map; + validators: EV_1731; + paths: Set; + merged: DeepMerge_1731; +} + +type CK_1731 = `p17.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_31, Registry_17_31, CK_1731, EP_1731, EV_1731, DeepMerge_1731 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-32.ts new file mode 100644 index 00000000..ea757e4a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-32.ts @@ -0,0 +1,50 @@ +// pkg-17/types-32 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1732 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1732 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_32 | null; children: Entity_17_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1732: number; y1732: string; z1732: boolean }; +} + +type Path_1732 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1732}` }[keyof T & string] : never; +type EP_1732 = Path_1732; + +type Val_1732 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1732 } + : T[K] extends object ? { t: 'o'; props: Val_1732 } + : { t: 'u' }; +}; +type EV_1732 = Val_1732; + +interface Registry_17_32 { + entities: Map; + validators: EV_1732; + paths: Set; + merged: DeepMerge_1732; +} + +type CK_1732 = `p17.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_32, Registry_17_32, CK_1732, EP_1732, EV_1732, DeepMerge_1732 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-33.ts new file mode 100644 index 00000000..35f36914 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-33.ts @@ -0,0 +1,50 @@ +// pkg-17/types-33 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1733 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1733 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_33 | null; children: Entity_17_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1733: number; y1733: string; z1733: boolean }; +} + +type Path_1733 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1733}` }[keyof T & string] : never; +type EP_1733 = Path_1733; + +type Val_1733 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1733 } + : T[K] extends object ? { t: 'o'; props: Val_1733 } + : { t: 'u' }; +}; +type EV_1733 = Val_1733; + +interface Registry_17_33 { + entities: Map; + validators: EV_1733; + paths: Set; + merged: DeepMerge_1733; +} + +type CK_1733 = `p17.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_33, Registry_17_33, CK_1733, EP_1733, EV_1733, DeepMerge_1733 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-34.ts new file mode 100644 index 00000000..14c0bf0d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-34.ts @@ -0,0 +1,50 @@ +// pkg-17/types-34 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1734 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1734 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_34 | null; children: Entity_17_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1734: number; y1734: string; z1734: boolean }; +} + +type Path_1734 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1734}` }[keyof T & string] : never; +type EP_1734 = Path_1734; + +type Val_1734 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1734 } + : T[K] extends object ? { t: 'o'; props: Val_1734 } + : { t: 'u' }; +}; +type EV_1734 = Val_1734; + +interface Registry_17_34 { + entities: Map; + validators: EV_1734; + paths: Set; + merged: DeepMerge_1734; +} + +type CK_1734 = `p17.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_34, Registry_17_34, CK_1734, EP_1734, EV_1734, DeepMerge_1734 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-35.ts new file mode 100644 index 00000000..c53f3b6b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-35.ts @@ -0,0 +1,50 @@ +// pkg-17/types-35 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1735 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1735 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_35 | null; children: Entity_17_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1735: number; y1735: string; z1735: boolean }; +} + +type Path_1735 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1735}` }[keyof T & string] : never; +type EP_1735 = Path_1735; + +type Val_1735 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1735 } + : T[K] extends object ? { t: 'o'; props: Val_1735 } + : { t: 'u' }; +}; +type EV_1735 = Val_1735; + +interface Registry_17_35 { + entities: Map; + validators: EV_1735; + paths: Set; + merged: DeepMerge_1735; +} + +type CK_1735 = `p17.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_35, Registry_17_35, CK_1735, EP_1735, EV_1735, DeepMerge_1735 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-36.ts new file mode 100644 index 00000000..912f1a58 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-36.ts @@ -0,0 +1,50 @@ +// pkg-17/types-36 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1736 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1736 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_36 | null; children: Entity_17_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1736: number; y1736: string; z1736: boolean }; +} + +type Path_1736 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1736}` }[keyof T & string] : never; +type EP_1736 = Path_1736; + +type Val_1736 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1736 } + : T[K] extends object ? { t: 'o'; props: Val_1736 } + : { t: 'u' }; +}; +type EV_1736 = Val_1736; + +interface Registry_17_36 { + entities: Map; + validators: EV_1736; + paths: Set; + merged: DeepMerge_1736; +} + +type CK_1736 = `p17.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_36, Registry_17_36, CK_1736, EP_1736, EV_1736, DeepMerge_1736 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-37.ts new file mode 100644 index 00000000..1f3dbccb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-37.ts @@ -0,0 +1,50 @@ +// pkg-17/types-37 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1737 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1737 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_37 | null; children: Entity_17_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1737: number; y1737: string; z1737: boolean }; +} + +type Path_1737 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1737}` }[keyof T & string] : never; +type EP_1737 = Path_1737; + +type Val_1737 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1737 } + : T[K] extends object ? { t: 'o'; props: Val_1737 } + : { t: 'u' }; +}; +type EV_1737 = Val_1737; + +interface Registry_17_37 { + entities: Map; + validators: EV_1737; + paths: Set; + merged: DeepMerge_1737; +} + +type CK_1737 = `p17.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_37, Registry_17_37, CK_1737, EP_1737, EV_1737, DeepMerge_1737 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-38.ts new file mode 100644 index 00000000..dd5ee776 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-38.ts @@ -0,0 +1,50 @@ +// pkg-17/types-38 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1738 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1738 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_38 | null; children: Entity_17_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1738: number; y1738: string; z1738: boolean }; +} + +type Path_1738 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1738}` }[keyof T & string] : never; +type EP_1738 = Path_1738; + +type Val_1738 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1738 } + : T[K] extends object ? { t: 'o'; props: Val_1738 } + : { t: 'u' }; +}; +type EV_1738 = Val_1738; + +interface Registry_17_38 { + entities: Map; + validators: EV_1738; + paths: Set; + merged: DeepMerge_1738; +} + +type CK_1738 = `p17.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_38, Registry_17_38, CK_1738, EP_1738, EV_1738, DeepMerge_1738 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-39.ts new file mode 100644 index 00000000..0365080e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-39.ts @@ -0,0 +1,50 @@ +// pkg-17/types-39 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1739 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1739 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_39 | null; children: Entity_17_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1739: number; y1739: string; z1739: boolean }; +} + +type Path_1739 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1739}` }[keyof T & string] : never; +type EP_1739 = Path_1739; + +type Val_1739 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1739 } + : T[K] extends object ? { t: 'o'; props: Val_1739 } + : { t: 'u' }; +}; +type EV_1739 = Val_1739; + +interface Registry_17_39 { + entities: Map; + validators: EV_1739; + paths: Set; + merged: DeepMerge_1739; +} + +type CK_1739 = `p17.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_39, Registry_17_39, CK_1739, EP_1739, EV_1739, DeepMerge_1739 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-40.ts new file mode 100644 index 00000000..93352209 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-40.ts @@ -0,0 +1,50 @@ +// pkg-17/types-40 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1740 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1740 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_40 | null; children: Entity_17_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1740: number; y1740: string; z1740: boolean }; +} + +type Path_1740 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1740}` }[keyof T & string] : never; +type EP_1740 = Path_1740; + +type Val_1740 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1740 } + : T[K] extends object ? { t: 'o'; props: Val_1740 } + : { t: 'u' }; +}; +type EV_1740 = Val_1740; + +interface Registry_17_40 { + entities: Map; + validators: EV_1740; + paths: Set; + merged: DeepMerge_1740; +} + +type CK_1740 = `p17.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_40, Registry_17_40, CK_1740, EP_1740, EV_1740, DeepMerge_1740 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-41.ts new file mode 100644 index 00000000..a8ac0050 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-41.ts @@ -0,0 +1,50 @@ +// pkg-17/types-41 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1741 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1741 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_41 | null; children: Entity_17_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1741: number; y1741: string; z1741: boolean }; +} + +type Path_1741 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1741}` }[keyof T & string] : never; +type EP_1741 = Path_1741; + +type Val_1741 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1741 } + : T[K] extends object ? { t: 'o'; props: Val_1741 } + : { t: 'u' }; +}; +type EV_1741 = Val_1741; + +interface Registry_17_41 { + entities: Map; + validators: EV_1741; + paths: Set; + merged: DeepMerge_1741; +} + +type CK_1741 = `p17.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_41, Registry_17_41, CK_1741, EP_1741, EV_1741, DeepMerge_1741 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-42.ts new file mode 100644 index 00000000..91b19718 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-42.ts @@ -0,0 +1,50 @@ +// pkg-17/types-42 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1742 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1742 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_42 | null; children: Entity_17_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1742: number; y1742: string; z1742: boolean }; +} + +type Path_1742 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1742}` }[keyof T & string] : never; +type EP_1742 = Path_1742; + +type Val_1742 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1742 } + : T[K] extends object ? { t: 'o'; props: Val_1742 } + : { t: 'u' }; +}; +type EV_1742 = Val_1742; + +interface Registry_17_42 { + entities: Map; + validators: EV_1742; + paths: Set; + merged: DeepMerge_1742; +} + +type CK_1742 = `p17.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_42, Registry_17_42, CK_1742, EP_1742, EV_1742, DeepMerge_1742 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-43.ts new file mode 100644 index 00000000..43c7e4d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-43.ts @@ -0,0 +1,50 @@ +// pkg-17/types-43 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1743 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1743 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_43 | null; children: Entity_17_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1743: number; y1743: string; z1743: boolean }; +} + +type Path_1743 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1743}` }[keyof T & string] : never; +type EP_1743 = Path_1743; + +type Val_1743 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1743 } + : T[K] extends object ? { t: 'o'; props: Val_1743 } + : { t: 'u' }; +}; +type EV_1743 = Val_1743; + +interface Registry_17_43 { + entities: Map; + validators: EV_1743; + paths: Set; + merged: DeepMerge_1743; +} + +type CK_1743 = `p17.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_43, Registry_17_43, CK_1743, EP_1743, EV_1743, DeepMerge_1743 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-44.ts new file mode 100644 index 00000000..e606f599 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-44.ts @@ -0,0 +1,50 @@ +// pkg-17/types-44 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1744 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1744 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_44 | null; children: Entity_17_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1744: number; y1744: string; z1744: boolean }; +} + +type Path_1744 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1744}` }[keyof T & string] : never; +type EP_1744 = Path_1744; + +type Val_1744 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1744 } + : T[K] extends object ? { t: 'o'; props: Val_1744 } + : { t: 'u' }; +}; +type EV_1744 = Val_1744; + +interface Registry_17_44 { + entities: Map; + validators: EV_1744; + paths: Set; + merged: DeepMerge_1744; +} + +type CK_1744 = `p17.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_44, Registry_17_44, CK_1744, EP_1744, EV_1744, DeepMerge_1744 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-45.ts new file mode 100644 index 00000000..baa763bd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-45.ts @@ -0,0 +1,50 @@ +// pkg-17/types-45 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1745 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1745 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_45 | null; children: Entity_17_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1745: number; y1745: string; z1745: boolean }; +} + +type Path_1745 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1745}` }[keyof T & string] : never; +type EP_1745 = Path_1745; + +type Val_1745 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1745 } + : T[K] extends object ? { t: 'o'; props: Val_1745 } + : { t: 'u' }; +}; +type EV_1745 = Val_1745; + +interface Registry_17_45 { + entities: Map; + validators: EV_1745; + paths: Set; + merged: DeepMerge_1745; +} + +type CK_1745 = `p17.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_45, Registry_17_45, CK_1745, EP_1745, EV_1745, DeepMerge_1745 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-46.ts new file mode 100644 index 00000000..056f4dbc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-46.ts @@ -0,0 +1,50 @@ +// pkg-17/types-46 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1746 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1746 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_46 | null; children: Entity_17_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1746: number; y1746: string; z1746: boolean }; +} + +type Path_1746 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1746}` }[keyof T & string] : never; +type EP_1746 = Path_1746; + +type Val_1746 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1746 } + : T[K] extends object ? { t: 'o'; props: Val_1746 } + : { t: 'u' }; +}; +type EV_1746 = Val_1746; + +interface Registry_17_46 { + entities: Map; + validators: EV_1746; + paths: Set; + merged: DeepMerge_1746; +} + +type CK_1746 = `p17.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_46, Registry_17_46, CK_1746, EP_1746, EV_1746, DeepMerge_1746 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-47.ts new file mode 100644 index 00000000..35dd0fde --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-47.ts @@ -0,0 +1,50 @@ +// pkg-17/types-47 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1747 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1747 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_47 | null; children: Entity_17_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1747: number; y1747: string; z1747: boolean }; +} + +type Path_1747 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1747}` }[keyof T & string] : never; +type EP_1747 = Path_1747; + +type Val_1747 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1747 } + : T[K] extends object ? { t: 'o'; props: Val_1747 } + : { t: 'u' }; +}; +type EV_1747 = Val_1747; + +interface Registry_17_47 { + entities: Map; + validators: EV_1747; + paths: Set; + merged: DeepMerge_1747; +} + +type CK_1747 = `p17.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_47, Registry_17_47, CK_1747, EP_1747, EV_1747, DeepMerge_1747 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-48.ts new file mode 100644 index 00000000..815638af --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-48.ts @@ -0,0 +1,50 @@ +// pkg-17/types-48 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1748 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1748 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_48 | null; children: Entity_17_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1748: number; y1748: string; z1748: boolean }; +} + +type Path_1748 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1748}` }[keyof T & string] : never; +type EP_1748 = Path_1748; + +type Val_1748 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1748 } + : T[K] extends object ? { t: 'o'; props: Val_1748 } + : { t: 'u' }; +}; +type EV_1748 = Val_1748; + +interface Registry_17_48 { + entities: Map; + validators: EV_1748; + paths: Set; + merged: DeepMerge_1748; +} + +type CK_1748 = `p17.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_48, Registry_17_48, CK_1748, EP_1748, EV_1748, DeepMerge_1748 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-49.ts new file mode 100644 index 00000000..0fa3804e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-49.ts @@ -0,0 +1,50 @@ +// pkg-17/types-49 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1749 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1749 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_49 | null; children: Entity_17_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1749: number; y1749: string; z1749: boolean }; +} + +type Path_1749 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1749}` }[keyof T & string] : never; +type EP_1749 = Path_1749; + +type Val_1749 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1749 } + : T[K] extends object ? { t: 'o'; props: Val_1749 } + : { t: 'u' }; +}; +type EV_1749 = Val_1749; + +interface Registry_17_49 { + entities: Map; + validators: EV_1749; + paths: Set; + merged: DeepMerge_1749; +} + +type CK_1749 = `p17.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_49, Registry_17_49, CK_1749, EP_1749, EV_1749, DeepMerge_1749 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-17/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-17/types-50.ts new file mode 100644 index 00000000..5bc1383e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-17/types-50.ts @@ -0,0 +1,50 @@ +// pkg-17/types-50 - heavy interconnected types + +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; +import type { Entity_14_01, Registry_14_01 } from '../pkg-14/types-01'; +import type { Entity_14_10, Registry_14_10 } from '../pkg-14/types-10'; +import type { Entity_14_20, Registry_14_20 } from '../pkg-14/types-20'; + +type DeepMerge_1750 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1750 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_17_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_17_50 | null; children: Entity_17_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1750: number; y1750: string; z1750: boolean }; +} + +type Path_1750 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1750}` }[keyof T & string] : never; +type EP_1750 = Path_1750; + +type Val_1750 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1750 } + : T[K] extends object ? { t: 'o'; props: Val_1750 } + : { t: 'u' }; +}; +type EV_1750 = Val_1750; + +interface Registry_17_50 { + entities: Map; + validators: EV_1750; + paths: Set; + merged: DeepMerge_1750; +} + +type CK_1750 = `p17.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_17_50, Registry_17_50, CK_1750, EP_1750, EV_1750, DeepMerge_1750 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-18/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-01.ts new file mode 100644 index 00000000..9c6cfbc3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-01.ts @@ -0,0 +1,50 @@ +// pkg-18/types-01 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1801 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1801 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_01 | null; children: Entity_18_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1801: number; y1801: string; z1801: boolean }; +} + +type Path_1801 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1801}` }[keyof T & string] : never; +type EP_1801 = Path_1801; + +type Val_1801 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1801 } + : T[K] extends object ? { t: 'o'; props: Val_1801 } + : { t: 'u' }; +}; +type EV_1801 = Val_1801; + +interface Registry_18_01 { + entities: Map; + validators: EV_1801; + paths: Set; + merged: DeepMerge_1801; +} + +type CK_1801 = `p18.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_01, Registry_18_01, CK_1801, EP_1801, EV_1801, DeepMerge_1801 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-02.ts new file mode 100644 index 00000000..d103dc9a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-02.ts @@ -0,0 +1,50 @@ +// pkg-18/types-02 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1802 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1802 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_02 | null; children: Entity_18_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1802: number; y1802: string; z1802: boolean }; +} + +type Path_1802 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1802}` }[keyof T & string] : never; +type EP_1802 = Path_1802; + +type Val_1802 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1802 } + : T[K] extends object ? { t: 'o'; props: Val_1802 } + : { t: 'u' }; +}; +type EV_1802 = Val_1802; + +interface Registry_18_02 { + entities: Map; + validators: EV_1802; + paths: Set; + merged: DeepMerge_1802; +} + +type CK_1802 = `p18.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_02, Registry_18_02, CK_1802, EP_1802, EV_1802, DeepMerge_1802 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-03.ts new file mode 100644 index 00000000..8c7b16c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-03.ts @@ -0,0 +1,50 @@ +// pkg-18/types-03 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1803 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1803 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_03 | null; children: Entity_18_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1803: number; y1803: string; z1803: boolean }; +} + +type Path_1803 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1803}` }[keyof T & string] : never; +type EP_1803 = Path_1803; + +type Val_1803 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1803 } + : T[K] extends object ? { t: 'o'; props: Val_1803 } + : { t: 'u' }; +}; +type EV_1803 = Val_1803; + +interface Registry_18_03 { + entities: Map; + validators: EV_1803; + paths: Set; + merged: DeepMerge_1803; +} + +type CK_1803 = `p18.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_03, Registry_18_03, CK_1803, EP_1803, EV_1803, DeepMerge_1803 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-04.ts new file mode 100644 index 00000000..aa9085c1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-04.ts @@ -0,0 +1,50 @@ +// pkg-18/types-04 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1804 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1804 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_04 | null; children: Entity_18_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1804: number; y1804: string; z1804: boolean }; +} + +type Path_1804 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1804}` }[keyof T & string] : never; +type EP_1804 = Path_1804; + +type Val_1804 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1804 } + : T[K] extends object ? { t: 'o'; props: Val_1804 } + : { t: 'u' }; +}; +type EV_1804 = Val_1804; + +interface Registry_18_04 { + entities: Map; + validators: EV_1804; + paths: Set; + merged: DeepMerge_1804; +} + +type CK_1804 = `p18.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_04, Registry_18_04, CK_1804, EP_1804, EV_1804, DeepMerge_1804 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-05.ts new file mode 100644 index 00000000..317e351f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-05.ts @@ -0,0 +1,50 @@ +// pkg-18/types-05 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1805 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1805 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_05 | null; children: Entity_18_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1805: number; y1805: string; z1805: boolean }; +} + +type Path_1805 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1805}` }[keyof T & string] : never; +type EP_1805 = Path_1805; + +type Val_1805 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1805 } + : T[K] extends object ? { t: 'o'; props: Val_1805 } + : { t: 'u' }; +}; +type EV_1805 = Val_1805; + +interface Registry_18_05 { + entities: Map; + validators: EV_1805; + paths: Set; + merged: DeepMerge_1805; +} + +type CK_1805 = `p18.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_05, Registry_18_05, CK_1805, EP_1805, EV_1805, DeepMerge_1805 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-06.ts new file mode 100644 index 00000000..f68b86f2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-06.ts @@ -0,0 +1,50 @@ +// pkg-18/types-06 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1806 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1806 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_06 | null; children: Entity_18_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1806: number; y1806: string; z1806: boolean }; +} + +type Path_1806 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1806}` }[keyof T & string] : never; +type EP_1806 = Path_1806; + +type Val_1806 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1806 } + : T[K] extends object ? { t: 'o'; props: Val_1806 } + : { t: 'u' }; +}; +type EV_1806 = Val_1806; + +interface Registry_18_06 { + entities: Map; + validators: EV_1806; + paths: Set; + merged: DeepMerge_1806; +} + +type CK_1806 = `p18.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_06, Registry_18_06, CK_1806, EP_1806, EV_1806, DeepMerge_1806 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-07.ts new file mode 100644 index 00000000..fa983c28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-07.ts @@ -0,0 +1,50 @@ +// pkg-18/types-07 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1807 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1807 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_07 | null; children: Entity_18_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1807: number; y1807: string; z1807: boolean }; +} + +type Path_1807 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1807}` }[keyof T & string] : never; +type EP_1807 = Path_1807; + +type Val_1807 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1807 } + : T[K] extends object ? { t: 'o'; props: Val_1807 } + : { t: 'u' }; +}; +type EV_1807 = Val_1807; + +interface Registry_18_07 { + entities: Map; + validators: EV_1807; + paths: Set; + merged: DeepMerge_1807; +} + +type CK_1807 = `p18.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_07, Registry_18_07, CK_1807, EP_1807, EV_1807, DeepMerge_1807 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-08.ts new file mode 100644 index 00000000..f292a7cf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-08.ts @@ -0,0 +1,50 @@ +// pkg-18/types-08 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1808 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1808 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_08 | null; children: Entity_18_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1808: number; y1808: string; z1808: boolean }; +} + +type Path_1808 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1808}` }[keyof T & string] : never; +type EP_1808 = Path_1808; + +type Val_1808 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1808 } + : T[K] extends object ? { t: 'o'; props: Val_1808 } + : { t: 'u' }; +}; +type EV_1808 = Val_1808; + +interface Registry_18_08 { + entities: Map; + validators: EV_1808; + paths: Set; + merged: DeepMerge_1808; +} + +type CK_1808 = `p18.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_08, Registry_18_08, CK_1808, EP_1808, EV_1808, DeepMerge_1808 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-09.ts new file mode 100644 index 00000000..4e8bab6f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-09.ts @@ -0,0 +1,50 @@ +// pkg-18/types-09 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1809 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1809 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_09 | null; children: Entity_18_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1809: number; y1809: string; z1809: boolean }; +} + +type Path_1809 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1809}` }[keyof T & string] : never; +type EP_1809 = Path_1809; + +type Val_1809 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1809 } + : T[K] extends object ? { t: 'o'; props: Val_1809 } + : { t: 'u' }; +}; +type EV_1809 = Val_1809; + +interface Registry_18_09 { + entities: Map; + validators: EV_1809; + paths: Set; + merged: DeepMerge_1809; +} + +type CK_1809 = `p18.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_09, Registry_18_09, CK_1809, EP_1809, EV_1809, DeepMerge_1809 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-10.ts new file mode 100644 index 00000000..3fe2b682 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-10.ts @@ -0,0 +1,50 @@ +// pkg-18/types-10 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1810 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1810 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_10 | null; children: Entity_18_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1810: number; y1810: string; z1810: boolean }; +} + +type Path_1810 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1810}` }[keyof T & string] : never; +type EP_1810 = Path_1810; + +type Val_1810 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1810 } + : T[K] extends object ? { t: 'o'; props: Val_1810 } + : { t: 'u' }; +}; +type EV_1810 = Val_1810; + +interface Registry_18_10 { + entities: Map; + validators: EV_1810; + paths: Set; + merged: DeepMerge_1810; +} + +type CK_1810 = `p18.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_10, Registry_18_10, CK_1810, EP_1810, EV_1810, DeepMerge_1810 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-11.ts new file mode 100644 index 00000000..82297b05 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-11.ts @@ -0,0 +1,50 @@ +// pkg-18/types-11 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1811 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1811 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_11 | null; children: Entity_18_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1811: number; y1811: string; z1811: boolean }; +} + +type Path_1811 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1811}` }[keyof T & string] : never; +type EP_1811 = Path_1811; + +type Val_1811 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1811 } + : T[K] extends object ? { t: 'o'; props: Val_1811 } + : { t: 'u' }; +}; +type EV_1811 = Val_1811; + +interface Registry_18_11 { + entities: Map; + validators: EV_1811; + paths: Set; + merged: DeepMerge_1811; +} + +type CK_1811 = `p18.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_11, Registry_18_11, CK_1811, EP_1811, EV_1811, DeepMerge_1811 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-12.ts new file mode 100644 index 00000000..5422b815 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-12.ts @@ -0,0 +1,50 @@ +// pkg-18/types-12 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1812 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1812 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_12 | null; children: Entity_18_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1812: number; y1812: string; z1812: boolean }; +} + +type Path_1812 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1812}` }[keyof T & string] : never; +type EP_1812 = Path_1812; + +type Val_1812 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1812 } + : T[K] extends object ? { t: 'o'; props: Val_1812 } + : { t: 'u' }; +}; +type EV_1812 = Val_1812; + +interface Registry_18_12 { + entities: Map; + validators: EV_1812; + paths: Set; + merged: DeepMerge_1812; +} + +type CK_1812 = `p18.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_12, Registry_18_12, CK_1812, EP_1812, EV_1812, DeepMerge_1812 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-13.ts new file mode 100644 index 00000000..f57d30a5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-13.ts @@ -0,0 +1,50 @@ +// pkg-18/types-13 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1813 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1813 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_13 | null; children: Entity_18_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1813: number; y1813: string; z1813: boolean }; +} + +type Path_1813 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1813}` }[keyof T & string] : never; +type EP_1813 = Path_1813; + +type Val_1813 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1813 } + : T[K] extends object ? { t: 'o'; props: Val_1813 } + : { t: 'u' }; +}; +type EV_1813 = Val_1813; + +interface Registry_18_13 { + entities: Map; + validators: EV_1813; + paths: Set; + merged: DeepMerge_1813; +} + +type CK_1813 = `p18.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_13, Registry_18_13, CK_1813, EP_1813, EV_1813, DeepMerge_1813 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-14.ts new file mode 100644 index 00000000..1b865615 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-14.ts @@ -0,0 +1,50 @@ +// pkg-18/types-14 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1814 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1814 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_14 | null; children: Entity_18_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1814: number; y1814: string; z1814: boolean }; +} + +type Path_1814 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1814}` }[keyof T & string] : never; +type EP_1814 = Path_1814; + +type Val_1814 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1814 } + : T[K] extends object ? { t: 'o'; props: Val_1814 } + : { t: 'u' }; +}; +type EV_1814 = Val_1814; + +interface Registry_18_14 { + entities: Map; + validators: EV_1814; + paths: Set; + merged: DeepMerge_1814; +} + +type CK_1814 = `p18.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_14, Registry_18_14, CK_1814, EP_1814, EV_1814, DeepMerge_1814 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-15.ts new file mode 100644 index 00000000..621298cb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-15.ts @@ -0,0 +1,50 @@ +// pkg-18/types-15 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1815 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1815 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_15 | null; children: Entity_18_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1815: number; y1815: string; z1815: boolean }; +} + +type Path_1815 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1815}` }[keyof T & string] : never; +type EP_1815 = Path_1815; + +type Val_1815 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1815 } + : T[K] extends object ? { t: 'o'; props: Val_1815 } + : { t: 'u' }; +}; +type EV_1815 = Val_1815; + +interface Registry_18_15 { + entities: Map; + validators: EV_1815; + paths: Set; + merged: DeepMerge_1815; +} + +type CK_1815 = `p18.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_15, Registry_18_15, CK_1815, EP_1815, EV_1815, DeepMerge_1815 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-16.ts new file mode 100644 index 00000000..b8fd035a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-16.ts @@ -0,0 +1,50 @@ +// pkg-18/types-16 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1816 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1816 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_16 | null; children: Entity_18_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1816: number; y1816: string; z1816: boolean }; +} + +type Path_1816 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1816}` }[keyof T & string] : never; +type EP_1816 = Path_1816; + +type Val_1816 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1816 } + : T[K] extends object ? { t: 'o'; props: Val_1816 } + : { t: 'u' }; +}; +type EV_1816 = Val_1816; + +interface Registry_18_16 { + entities: Map; + validators: EV_1816; + paths: Set; + merged: DeepMerge_1816; +} + +type CK_1816 = `p18.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_16, Registry_18_16, CK_1816, EP_1816, EV_1816, DeepMerge_1816 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-17.ts new file mode 100644 index 00000000..fa7a3cbd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-17.ts @@ -0,0 +1,50 @@ +// pkg-18/types-17 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1817 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1817 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_17 | null; children: Entity_18_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1817: number; y1817: string; z1817: boolean }; +} + +type Path_1817 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1817}` }[keyof T & string] : never; +type EP_1817 = Path_1817; + +type Val_1817 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1817 } + : T[K] extends object ? { t: 'o'; props: Val_1817 } + : { t: 'u' }; +}; +type EV_1817 = Val_1817; + +interface Registry_18_17 { + entities: Map; + validators: EV_1817; + paths: Set; + merged: DeepMerge_1817; +} + +type CK_1817 = `p18.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_17, Registry_18_17, CK_1817, EP_1817, EV_1817, DeepMerge_1817 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-18.ts new file mode 100644 index 00000000..6681cb2c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-18.ts @@ -0,0 +1,50 @@ +// pkg-18/types-18 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1818 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1818 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_18 | null; children: Entity_18_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1818: number; y1818: string; z1818: boolean }; +} + +type Path_1818 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1818}` }[keyof T & string] : never; +type EP_1818 = Path_1818; + +type Val_1818 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1818 } + : T[K] extends object ? { t: 'o'; props: Val_1818 } + : { t: 'u' }; +}; +type EV_1818 = Val_1818; + +interface Registry_18_18 { + entities: Map; + validators: EV_1818; + paths: Set; + merged: DeepMerge_1818; +} + +type CK_1818 = `p18.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_18, Registry_18_18, CK_1818, EP_1818, EV_1818, DeepMerge_1818 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-19.ts new file mode 100644 index 00000000..7dbd8f88 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-19.ts @@ -0,0 +1,50 @@ +// pkg-18/types-19 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1819 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1819 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_19 | null; children: Entity_18_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1819: number; y1819: string; z1819: boolean }; +} + +type Path_1819 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1819}` }[keyof T & string] : never; +type EP_1819 = Path_1819; + +type Val_1819 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1819 } + : T[K] extends object ? { t: 'o'; props: Val_1819 } + : { t: 'u' }; +}; +type EV_1819 = Val_1819; + +interface Registry_18_19 { + entities: Map; + validators: EV_1819; + paths: Set; + merged: DeepMerge_1819; +} + +type CK_1819 = `p18.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_19, Registry_18_19, CK_1819, EP_1819, EV_1819, DeepMerge_1819 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-20.ts new file mode 100644 index 00000000..6b14d3d5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-20.ts @@ -0,0 +1,50 @@ +// pkg-18/types-20 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1820 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1820 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_20 | null; children: Entity_18_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1820: number; y1820: string; z1820: boolean }; +} + +type Path_1820 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1820}` }[keyof T & string] : never; +type EP_1820 = Path_1820; + +type Val_1820 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1820 } + : T[K] extends object ? { t: 'o'; props: Val_1820 } + : { t: 'u' }; +}; +type EV_1820 = Val_1820; + +interface Registry_18_20 { + entities: Map; + validators: EV_1820; + paths: Set; + merged: DeepMerge_1820; +} + +type CK_1820 = `p18.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_20, Registry_18_20, CK_1820, EP_1820, EV_1820, DeepMerge_1820 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-21.ts new file mode 100644 index 00000000..74b888ce --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-21.ts @@ -0,0 +1,50 @@ +// pkg-18/types-21 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1821 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1821 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_21 | null; children: Entity_18_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1821: number; y1821: string; z1821: boolean }; +} + +type Path_1821 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1821}` }[keyof T & string] : never; +type EP_1821 = Path_1821; + +type Val_1821 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1821 } + : T[K] extends object ? { t: 'o'; props: Val_1821 } + : { t: 'u' }; +}; +type EV_1821 = Val_1821; + +interface Registry_18_21 { + entities: Map; + validators: EV_1821; + paths: Set; + merged: DeepMerge_1821; +} + +type CK_1821 = `p18.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_21, Registry_18_21, CK_1821, EP_1821, EV_1821, DeepMerge_1821 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-22.ts new file mode 100644 index 00000000..6e964379 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-22.ts @@ -0,0 +1,50 @@ +// pkg-18/types-22 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1822 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1822 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_22 | null; children: Entity_18_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1822: number; y1822: string; z1822: boolean }; +} + +type Path_1822 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1822}` }[keyof T & string] : never; +type EP_1822 = Path_1822; + +type Val_1822 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1822 } + : T[K] extends object ? { t: 'o'; props: Val_1822 } + : { t: 'u' }; +}; +type EV_1822 = Val_1822; + +interface Registry_18_22 { + entities: Map; + validators: EV_1822; + paths: Set; + merged: DeepMerge_1822; +} + +type CK_1822 = `p18.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_22, Registry_18_22, CK_1822, EP_1822, EV_1822, DeepMerge_1822 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-23.ts new file mode 100644 index 00000000..f7c65c0a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-23.ts @@ -0,0 +1,50 @@ +// pkg-18/types-23 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1823 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1823 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_23 | null; children: Entity_18_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1823: number; y1823: string; z1823: boolean }; +} + +type Path_1823 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1823}` }[keyof T & string] : never; +type EP_1823 = Path_1823; + +type Val_1823 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1823 } + : T[K] extends object ? { t: 'o'; props: Val_1823 } + : { t: 'u' }; +}; +type EV_1823 = Val_1823; + +interface Registry_18_23 { + entities: Map; + validators: EV_1823; + paths: Set; + merged: DeepMerge_1823; +} + +type CK_1823 = `p18.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_23, Registry_18_23, CK_1823, EP_1823, EV_1823, DeepMerge_1823 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-24.ts new file mode 100644 index 00000000..5ac4d324 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-24.ts @@ -0,0 +1,50 @@ +// pkg-18/types-24 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1824 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1824 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_24 | null; children: Entity_18_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1824: number; y1824: string; z1824: boolean }; +} + +type Path_1824 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1824}` }[keyof T & string] : never; +type EP_1824 = Path_1824; + +type Val_1824 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1824 } + : T[K] extends object ? { t: 'o'; props: Val_1824 } + : { t: 'u' }; +}; +type EV_1824 = Val_1824; + +interface Registry_18_24 { + entities: Map; + validators: EV_1824; + paths: Set; + merged: DeepMerge_1824; +} + +type CK_1824 = `p18.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_24, Registry_18_24, CK_1824, EP_1824, EV_1824, DeepMerge_1824 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-25.ts new file mode 100644 index 00000000..ef91b467 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-25.ts @@ -0,0 +1,50 @@ +// pkg-18/types-25 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1825 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1825 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_25 | null; children: Entity_18_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1825: number; y1825: string; z1825: boolean }; +} + +type Path_1825 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1825}` }[keyof T & string] : never; +type EP_1825 = Path_1825; + +type Val_1825 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1825 } + : T[K] extends object ? { t: 'o'; props: Val_1825 } + : { t: 'u' }; +}; +type EV_1825 = Val_1825; + +interface Registry_18_25 { + entities: Map; + validators: EV_1825; + paths: Set; + merged: DeepMerge_1825; +} + +type CK_1825 = `p18.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_25, Registry_18_25, CK_1825, EP_1825, EV_1825, DeepMerge_1825 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-26.ts new file mode 100644 index 00000000..cb529a81 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-26.ts @@ -0,0 +1,50 @@ +// pkg-18/types-26 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1826 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1826 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_26 | null; children: Entity_18_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1826: number; y1826: string; z1826: boolean }; +} + +type Path_1826 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1826}` }[keyof T & string] : never; +type EP_1826 = Path_1826; + +type Val_1826 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1826 } + : T[K] extends object ? { t: 'o'; props: Val_1826 } + : { t: 'u' }; +}; +type EV_1826 = Val_1826; + +interface Registry_18_26 { + entities: Map; + validators: EV_1826; + paths: Set; + merged: DeepMerge_1826; +} + +type CK_1826 = `p18.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_26, Registry_18_26, CK_1826, EP_1826, EV_1826, DeepMerge_1826 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-27.ts new file mode 100644 index 00000000..5a7723d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-27.ts @@ -0,0 +1,50 @@ +// pkg-18/types-27 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1827 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1827 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_27 | null; children: Entity_18_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1827: number; y1827: string; z1827: boolean }; +} + +type Path_1827 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1827}` }[keyof T & string] : never; +type EP_1827 = Path_1827; + +type Val_1827 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1827 } + : T[K] extends object ? { t: 'o'; props: Val_1827 } + : { t: 'u' }; +}; +type EV_1827 = Val_1827; + +interface Registry_18_27 { + entities: Map; + validators: EV_1827; + paths: Set; + merged: DeepMerge_1827; +} + +type CK_1827 = `p18.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_27, Registry_18_27, CK_1827, EP_1827, EV_1827, DeepMerge_1827 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-28.ts new file mode 100644 index 00000000..e5fbee70 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-28.ts @@ -0,0 +1,50 @@ +// pkg-18/types-28 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1828 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1828 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_28 | null; children: Entity_18_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1828: number; y1828: string; z1828: boolean }; +} + +type Path_1828 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1828}` }[keyof T & string] : never; +type EP_1828 = Path_1828; + +type Val_1828 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1828 } + : T[K] extends object ? { t: 'o'; props: Val_1828 } + : { t: 'u' }; +}; +type EV_1828 = Val_1828; + +interface Registry_18_28 { + entities: Map; + validators: EV_1828; + paths: Set; + merged: DeepMerge_1828; +} + +type CK_1828 = `p18.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_28, Registry_18_28, CK_1828, EP_1828, EV_1828, DeepMerge_1828 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-29.ts new file mode 100644 index 00000000..a1a2ff4f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-29.ts @@ -0,0 +1,50 @@ +// pkg-18/types-29 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1829 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1829 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_29 | null; children: Entity_18_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1829: number; y1829: string; z1829: boolean }; +} + +type Path_1829 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1829}` }[keyof T & string] : never; +type EP_1829 = Path_1829; + +type Val_1829 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1829 } + : T[K] extends object ? { t: 'o'; props: Val_1829 } + : { t: 'u' }; +}; +type EV_1829 = Val_1829; + +interface Registry_18_29 { + entities: Map; + validators: EV_1829; + paths: Set; + merged: DeepMerge_1829; +} + +type CK_1829 = `p18.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_29, Registry_18_29, CK_1829, EP_1829, EV_1829, DeepMerge_1829 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-30.ts new file mode 100644 index 00000000..d95ee7ff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-30.ts @@ -0,0 +1,50 @@ +// pkg-18/types-30 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1830 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1830 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_30 | null; children: Entity_18_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1830: number; y1830: string; z1830: boolean }; +} + +type Path_1830 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1830}` }[keyof T & string] : never; +type EP_1830 = Path_1830; + +type Val_1830 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1830 } + : T[K] extends object ? { t: 'o'; props: Val_1830 } + : { t: 'u' }; +}; +type EV_1830 = Val_1830; + +interface Registry_18_30 { + entities: Map; + validators: EV_1830; + paths: Set; + merged: DeepMerge_1830; +} + +type CK_1830 = `p18.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_30, Registry_18_30, CK_1830, EP_1830, EV_1830, DeepMerge_1830 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-31.ts new file mode 100644 index 00000000..45215fd5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-31.ts @@ -0,0 +1,50 @@ +// pkg-18/types-31 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1831 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1831 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_31 | null; children: Entity_18_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1831: number; y1831: string; z1831: boolean }; +} + +type Path_1831 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1831}` }[keyof T & string] : never; +type EP_1831 = Path_1831; + +type Val_1831 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1831 } + : T[K] extends object ? { t: 'o'; props: Val_1831 } + : { t: 'u' }; +}; +type EV_1831 = Val_1831; + +interface Registry_18_31 { + entities: Map; + validators: EV_1831; + paths: Set; + merged: DeepMerge_1831; +} + +type CK_1831 = `p18.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_31, Registry_18_31, CK_1831, EP_1831, EV_1831, DeepMerge_1831 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-32.ts new file mode 100644 index 00000000..f67d6871 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-32.ts @@ -0,0 +1,50 @@ +// pkg-18/types-32 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1832 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1832 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_32 | null; children: Entity_18_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1832: number; y1832: string; z1832: boolean }; +} + +type Path_1832 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1832}` }[keyof T & string] : never; +type EP_1832 = Path_1832; + +type Val_1832 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1832 } + : T[K] extends object ? { t: 'o'; props: Val_1832 } + : { t: 'u' }; +}; +type EV_1832 = Val_1832; + +interface Registry_18_32 { + entities: Map; + validators: EV_1832; + paths: Set; + merged: DeepMerge_1832; +} + +type CK_1832 = `p18.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_32, Registry_18_32, CK_1832, EP_1832, EV_1832, DeepMerge_1832 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-33.ts new file mode 100644 index 00000000..ce291564 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-33.ts @@ -0,0 +1,50 @@ +// pkg-18/types-33 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1833 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1833 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_33 | null; children: Entity_18_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1833: number; y1833: string; z1833: boolean }; +} + +type Path_1833 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1833}` }[keyof T & string] : never; +type EP_1833 = Path_1833; + +type Val_1833 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1833 } + : T[K] extends object ? { t: 'o'; props: Val_1833 } + : { t: 'u' }; +}; +type EV_1833 = Val_1833; + +interface Registry_18_33 { + entities: Map; + validators: EV_1833; + paths: Set; + merged: DeepMerge_1833; +} + +type CK_1833 = `p18.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_33, Registry_18_33, CK_1833, EP_1833, EV_1833, DeepMerge_1833 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-34.ts new file mode 100644 index 00000000..d65f45e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-34.ts @@ -0,0 +1,50 @@ +// pkg-18/types-34 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1834 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1834 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_34 | null; children: Entity_18_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1834: number; y1834: string; z1834: boolean }; +} + +type Path_1834 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1834}` }[keyof T & string] : never; +type EP_1834 = Path_1834; + +type Val_1834 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1834 } + : T[K] extends object ? { t: 'o'; props: Val_1834 } + : { t: 'u' }; +}; +type EV_1834 = Val_1834; + +interface Registry_18_34 { + entities: Map; + validators: EV_1834; + paths: Set; + merged: DeepMerge_1834; +} + +type CK_1834 = `p18.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_34, Registry_18_34, CK_1834, EP_1834, EV_1834, DeepMerge_1834 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-35.ts new file mode 100644 index 00000000..91280e93 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-35.ts @@ -0,0 +1,50 @@ +// pkg-18/types-35 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1835 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1835 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_35 | null; children: Entity_18_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1835: number; y1835: string; z1835: boolean }; +} + +type Path_1835 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1835}` }[keyof T & string] : never; +type EP_1835 = Path_1835; + +type Val_1835 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1835 } + : T[K] extends object ? { t: 'o'; props: Val_1835 } + : { t: 'u' }; +}; +type EV_1835 = Val_1835; + +interface Registry_18_35 { + entities: Map; + validators: EV_1835; + paths: Set; + merged: DeepMerge_1835; +} + +type CK_1835 = `p18.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_35, Registry_18_35, CK_1835, EP_1835, EV_1835, DeepMerge_1835 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-36.ts new file mode 100644 index 00000000..60cea08f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-36.ts @@ -0,0 +1,50 @@ +// pkg-18/types-36 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1836 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1836 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_36 | null; children: Entity_18_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1836: number; y1836: string; z1836: boolean }; +} + +type Path_1836 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1836}` }[keyof T & string] : never; +type EP_1836 = Path_1836; + +type Val_1836 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1836 } + : T[K] extends object ? { t: 'o'; props: Val_1836 } + : { t: 'u' }; +}; +type EV_1836 = Val_1836; + +interface Registry_18_36 { + entities: Map; + validators: EV_1836; + paths: Set; + merged: DeepMerge_1836; +} + +type CK_1836 = `p18.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_36, Registry_18_36, CK_1836, EP_1836, EV_1836, DeepMerge_1836 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-37.ts new file mode 100644 index 00000000..dabc9992 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-37.ts @@ -0,0 +1,50 @@ +// pkg-18/types-37 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1837 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1837 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_37 | null; children: Entity_18_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1837: number; y1837: string; z1837: boolean }; +} + +type Path_1837 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1837}` }[keyof T & string] : never; +type EP_1837 = Path_1837; + +type Val_1837 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1837 } + : T[K] extends object ? { t: 'o'; props: Val_1837 } + : { t: 'u' }; +}; +type EV_1837 = Val_1837; + +interface Registry_18_37 { + entities: Map; + validators: EV_1837; + paths: Set; + merged: DeepMerge_1837; +} + +type CK_1837 = `p18.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_37, Registry_18_37, CK_1837, EP_1837, EV_1837, DeepMerge_1837 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-38.ts new file mode 100644 index 00000000..1c259745 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-38.ts @@ -0,0 +1,50 @@ +// pkg-18/types-38 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1838 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1838 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_38 | null; children: Entity_18_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1838: number; y1838: string; z1838: boolean }; +} + +type Path_1838 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1838}` }[keyof T & string] : never; +type EP_1838 = Path_1838; + +type Val_1838 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1838 } + : T[K] extends object ? { t: 'o'; props: Val_1838 } + : { t: 'u' }; +}; +type EV_1838 = Val_1838; + +interface Registry_18_38 { + entities: Map; + validators: EV_1838; + paths: Set; + merged: DeepMerge_1838; +} + +type CK_1838 = `p18.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_38, Registry_18_38, CK_1838, EP_1838, EV_1838, DeepMerge_1838 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-39.ts new file mode 100644 index 00000000..253532f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-39.ts @@ -0,0 +1,50 @@ +// pkg-18/types-39 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1839 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1839 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_39 | null; children: Entity_18_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1839: number; y1839: string; z1839: boolean }; +} + +type Path_1839 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1839}` }[keyof T & string] : never; +type EP_1839 = Path_1839; + +type Val_1839 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1839 } + : T[K] extends object ? { t: 'o'; props: Val_1839 } + : { t: 'u' }; +}; +type EV_1839 = Val_1839; + +interface Registry_18_39 { + entities: Map; + validators: EV_1839; + paths: Set; + merged: DeepMerge_1839; +} + +type CK_1839 = `p18.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_39, Registry_18_39, CK_1839, EP_1839, EV_1839, DeepMerge_1839 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-40.ts new file mode 100644 index 00000000..3bf3b7d3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-40.ts @@ -0,0 +1,50 @@ +// pkg-18/types-40 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1840 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1840 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_40 | null; children: Entity_18_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1840: number; y1840: string; z1840: boolean }; +} + +type Path_1840 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1840}` }[keyof T & string] : never; +type EP_1840 = Path_1840; + +type Val_1840 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1840 } + : T[K] extends object ? { t: 'o'; props: Val_1840 } + : { t: 'u' }; +}; +type EV_1840 = Val_1840; + +interface Registry_18_40 { + entities: Map; + validators: EV_1840; + paths: Set; + merged: DeepMerge_1840; +} + +type CK_1840 = `p18.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_40, Registry_18_40, CK_1840, EP_1840, EV_1840, DeepMerge_1840 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-41.ts new file mode 100644 index 00000000..f145db33 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-41.ts @@ -0,0 +1,50 @@ +// pkg-18/types-41 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1841 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1841 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_41 | null; children: Entity_18_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1841: number; y1841: string; z1841: boolean }; +} + +type Path_1841 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1841}` }[keyof T & string] : never; +type EP_1841 = Path_1841; + +type Val_1841 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1841 } + : T[K] extends object ? { t: 'o'; props: Val_1841 } + : { t: 'u' }; +}; +type EV_1841 = Val_1841; + +interface Registry_18_41 { + entities: Map; + validators: EV_1841; + paths: Set; + merged: DeepMerge_1841; +} + +type CK_1841 = `p18.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_41, Registry_18_41, CK_1841, EP_1841, EV_1841, DeepMerge_1841 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-42.ts new file mode 100644 index 00000000..f725c681 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-42.ts @@ -0,0 +1,50 @@ +// pkg-18/types-42 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1842 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1842 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_42 | null; children: Entity_18_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1842: number; y1842: string; z1842: boolean }; +} + +type Path_1842 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1842}` }[keyof T & string] : never; +type EP_1842 = Path_1842; + +type Val_1842 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1842 } + : T[K] extends object ? { t: 'o'; props: Val_1842 } + : { t: 'u' }; +}; +type EV_1842 = Val_1842; + +interface Registry_18_42 { + entities: Map; + validators: EV_1842; + paths: Set; + merged: DeepMerge_1842; +} + +type CK_1842 = `p18.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_42, Registry_18_42, CK_1842, EP_1842, EV_1842, DeepMerge_1842 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-43.ts new file mode 100644 index 00000000..be8f39b6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-43.ts @@ -0,0 +1,50 @@ +// pkg-18/types-43 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1843 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1843 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_43 | null; children: Entity_18_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1843: number; y1843: string; z1843: boolean }; +} + +type Path_1843 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1843}` }[keyof T & string] : never; +type EP_1843 = Path_1843; + +type Val_1843 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1843 } + : T[K] extends object ? { t: 'o'; props: Val_1843 } + : { t: 'u' }; +}; +type EV_1843 = Val_1843; + +interface Registry_18_43 { + entities: Map; + validators: EV_1843; + paths: Set; + merged: DeepMerge_1843; +} + +type CK_1843 = `p18.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_43, Registry_18_43, CK_1843, EP_1843, EV_1843, DeepMerge_1843 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-44.ts new file mode 100644 index 00000000..485f231f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-44.ts @@ -0,0 +1,50 @@ +// pkg-18/types-44 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1844 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1844 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_44 | null; children: Entity_18_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1844: number; y1844: string; z1844: boolean }; +} + +type Path_1844 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1844}` }[keyof T & string] : never; +type EP_1844 = Path_1844; + +type Val_1844 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1844 } + : T[K] extends object ? { t: 'o'; props: Val_1844 } + : { t: 'u' }; +}; +type EV_1844 = Val_1844; + +interface Registry_18_44 { + entities: Map; + validators: EV_1844; + paths: Set; + merged: DeepMerge_1844; +} + +type CK_1844 = `p18.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_44, Registry_18_44, CK_1844, EP_1844, EV_1844, DeepMerge_1844 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-45.ts new file mode 100644 index 00000000..aaa7d1bc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-45.ts @@ -0,0 +1,50 @@ +// pkg-18/types-45 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1845 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1845 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_45 | null; children: Entity_18_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1845: number; y1845: string; z1845: boolean }; +} + +type Path_1845 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1845}` }[keyof T & string] : never; +type EP_1845 = Path_1845; + +type Val_1845 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1845 } + : T[K] extends object ? { t: 'o'; props: Val_1845 } + : { t: 'u' }; +}; +type EV_1845 = Val_1845; + +interface Registry_18_45 { + entities: Map; + validators: EV_1845; + paths: Set; + merged: DeepMerge_1845; +} + +type CK_1845 = `p18.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_45, Registry_18_45, CK_1845, EP_1845, EV_1845, DeepMerge_1845 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-46.ts new file mode 100644 index 00000000..e885bdfe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-46.ts @@ -0,0 +1,50 @@ +// pkg-18/types-46 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1846 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1846 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_46 | null; children: Entity_18_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1846: number; y1846: string; z1846: boolean }; +} + +type Path_1846 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1846}` }[keyof T & string] : never; +type EP_1846 = Path_1846; + +type Val_1846 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1846 } + : T[K] extends object ? { t: 'o'; props: Val_1846 } + : { t: 'u' }; +}; +type EV_1846 = Val_1846; + +interface Registry_18_46 { + entities: Map; + validators: EV_1846; + paths: Set; + merged: DeepMerge_1846; +} + +type CK_1846 = `p18.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_46, Registry_18_46, CK_1846, EP_1846, EV_1846, DeepMerge_1846 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-47.ts new file mode 100644 index 00000000..8f286a57 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-47.ts @@ -0,0 +1,50 @@ +// pkg-18/types-47 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1847 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1847 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_47 | null; children: Entity_18_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1847: number; y1847: string; z1847: boolean }; +} + +type Path_1847 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1847}` }[keyof T & string] : never; +type EP_1847 = Path_1847; + +type Val_1847 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1847 } + : T[K] extends object ? { t: 'o'; props: Val_1847 } + : { t: 'u' }; +}; +type EV_1847 = Val_1847; + +interface Registry_18_47 { + entities: Map; + validators: EV_1847; + paths: Set; + merged: DeepMerge_1847; +} + +type CK_1847 = `p18.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_47, Registry_18_47, CK_1847, EP_1847, EV_1847, DeepMerge_1847 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-48.ts new file mode 100644 index 00000000..0f84d080 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-48.ts @@ -0,0 +1,50 @@ +// pkg-18/types-48 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1848 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1848 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_48 | null; children: Entity_18_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1848: number; y1848: string; z1848: boolean }; +} + +type Path_1848 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1848}` }[keyof T & string] : never; +type EP_1848 = Path_1848; + +type Val_1848 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1848 } + : T[K] extends object ? { t: 'o'; props: Val_1848 } + : { t: 'u' }; +}; +type EV_1848 = Val_1848; + +interface Registry_18_48 { + entities: Map; + validators: EV_1848; + paths: Set; + merged: DeepMerge_1848; +} + +type CK_1848 = `p18.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_48, Registry_18_48, CK_1848, EP_1848, EV_1848, DeepMerge_1848 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-49.ts new file mode 100644 index 00000000..9292afa8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-49.ts @@ -0,0 +1,50 @@ +// pkg-18/types-49 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1849 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1849 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_49 | null; children: Entity_18_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1849: number; y1849: string; z1849: boolean }; +} + +type Path_1849 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1849}` }[keyof T & string] : never; +type EP_1849 = Path_1849; + +type Val_1849 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1849 } + : T[K] extends object ? { t: 'o'; props: Val_1849 } + : { t: 'u' }; +}; +type EV_1849 = Val_1849; + +interface Registry_18_49 { + entities: Map; + validators: EV_1849; + paths: Set; + merged: DeepMerge_1849; +} + +type CK_1849 = `p18.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_49, Registry_18_49, CK_1849, EP_1849, EV_1849, DeepMerge_1849 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-18/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-18/types-50.ts new file mode 100644 index 00000000..0e2c1f51 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-18/types-50.ts @@ -0,0 +1,50 @@ +// pkg-18/types-50 - heavy interconnected types + +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; +import type { Entity_15_01, Registry_15_01 } from '../pkg-15/types-01'; +import type { Entity_15_10, Registry_15_10 } from '../pkg-15/types-10'; +import type { Entity_15_20, Registry_15_20 } from '../pkg-15/types-20'; + +type DeepMerge_1850 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1850 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_18_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_18_50 | null; children: Entity_18_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1850: number; y1850: string; z1850: boolean }; +} + +type Path_1850 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1850}` }[keyof T & string] : never; +type EP_1850 = Path_1850; + +type Val_1850 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1850 } + : T[K] extends object ? { t: 'o'; props: Val_1850 } + : { t: 'u' }; +}; +type EV_1850 = Val_1850; + +interface Registry_18_50 { + entities: Map; + validators: EV_1850; + paths: Set; + merged: DeepMerge_1850; +} + +type CK_1850 = `p18.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_18_50, Registry_18_50, CK_1850, EP_1850, EV_1850, DeepMerge_1850 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-19/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-01.ts new file mode 100644 index 00000000..b7eb9897 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-01.ts @@ -0,0 +1,50 @@ +// pkg-19/types-01 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1901 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1901 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_01 | null; children: Entity_19_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x1901: number; y1901: string; z1901: boolean }; +} + +type Path_1901 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1901}` }[keyof T & string] : never; +type EP_1901 = Path_1901; + +type Val_1901 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1901 } + : T[K] extends object ? { t: 'o'; props: Val_1901 } + : { t: 'u' }; +}; +type EV_1901 = Val_1901; + +interface Registry_19_01 { + entities: Map; + validators: EV_1901; + paths: Set; + merged: DeepMerge_1901; +} + +type CK_1901 = `p19.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_01, Registry_19_01, CK_1901, EP_1901, EV_1901, DeepMerge_1901 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-02.ts new file mode 100644 index 00000000..ad1b38f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-02.ts @@ -0,0 +1,50 @@ +// pkg-19/types-02 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1902 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1902 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_02 | null; children: Entity_19_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x1902: number; y1902: string; z1902: boolean }; +} + +type Path_1902 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1902}` }[keyof T & string] : never; +type EP_1902 = Path_1902; + +type Val_1902 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1902 } + : T[K] extends object ? { t: 'o'; props: Val_1902 } + : { t: 'u' }; +}; +type EV_1902 = Val_1902; + +interface Registry_19_02 { + entities: Map; + validators: EV_1902; + paths: Set; + merged: DeepMerge_1902; +} + +type CK_1902 = `p19.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_02, Registry_19_02, CK_1902, EP_1902, EV_1902, DeepMerge_1902 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-03.ts new file mode 100644 index 00000000..41acc7b8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-03.ts @@ -0,0 +1,50 @@ +// pkg-19/types-03 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1903 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1903 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_03 | null; children: Entity_19_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x1903: number; y1903: string; z1903: boolean }; +} + +type Path_1903 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1903}` }[keyof T & string] : never; +type EP_1903 = Path_1903; + +type Val_1903 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1903 } + : T[K] extends object ? { t: 'o'; props: Val_1903 } + : { t: 'u' }; +}; +type EV_1903 = Val_1903; + +interface Registry_19_03 { + entities: Map; + validators: EV_1903; + paths: Set; + merged: DeepMerge_1903; +} + +type CK_1903 = `p19.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_03, Registry_19_03, CK_1903, EP_1903, EV_1903, DeepMerge_1903 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-04.ts new file mode 100644 index 00000000..fa7a9f17 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-04.ts @@ -0,0 +1,50 @@ +// pkg-19/types-04 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1904 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1904 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_04 | null; children: Entity_19_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x1904: number; y1904: string; z1904: boolean }; +} + +type Path_1904 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1904}` }[keyof T & string] : never; +type EP_1904 = Path_1904; + +type Val_1904 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1904 } + : T[K] extends object ? { t: 'o'; props: Val_1904 } + : { t: 'u' }; +}; +type EV_1904 = Val_1904; + +interface Registry_19_04 { + entities: Map; + validators: EV_1904; + paths: Set; + merged: DeepMerge_1904; +} + +type CK_1904 = `p19.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_04, Registry_19_04, CK_1904, EP_1904, EV_1904, DeepMerge_1904 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-05.ts new file mode 100644 index 00000000..d459b88f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-05.ts @@ -0,0 +1,50 @@ +// pkg-19/types-05 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1905 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1905 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_05 | null; children: Entity_19_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x1905: number; y1905: string; z1905: boolean }; +} + +type Path_1905 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1905}` }[keyof T & string] : never; +type EP_1905 = Path_1905; + +type Val_1905 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1905 } + : T[K] extends object ? { t: 'o'; props: Val_1905 } + : { t: 'u' }; +}; +type EV_1905 = Val_1905; + +interface Registry_19_05 { + entities: Map; + validators: EV_1905; + paths: Set; + merged: DeepMerge_1905; +} + +type CK_1905 = `p19.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_05, Registry_19_05, CK_1905, EP_1905, EV_1905, DeepMerge_1905 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-06.ts new file mode 100644 index 00000000..d944da61 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-06.ts @@ -0,0 +1,50 @@ +// pkg-19/types-06 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1906 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1906 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_06 | null; children: Entity_19_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x1906: number; y1906: string; z1906: boolean }; +} + +type Path_1906 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1906}` }[keyof T & string] : never; +type EP_1906 = Path_1906; + +type Val_1906 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1906 } + : T[K] extends object ? { t: 'o'; props: Val_1906 } + : { t: 'u' }; +}; +type EV_1906 = Val_1906; + +interface Registry_19_06 { + entities: Map; + validators: EV_1906; + paths: Set; + merged: DeepMerge_1906; +} + +type CK_1906 = `p19.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_06, Registry_19_06, CK_1906, EP_1906, EV_1906, DeepMerge_1906 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-07.ts new file mode 100644 index 00000000..cf5578c7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-07.ts @@ -0,0 +1,50 @@ +// pkg-19/types-07 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1907 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1907 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_07 | null; children: Entity_19_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x1907: number; y1907: string; z1907: boolean }; +} + +type Path_1907 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1907}` }[keyof T & string] : never; +type EP_1907 = Path_1907; + +type Val_1907 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1907 } + : T[K] extends object ? { t: 'o'; props: Val_1907 } + : { t: 'u' }; +}; +type EV_1907 = Val_1907; + +interface Registry_19_07 { + entities: Map; + validators: EV_1907; + paths: Set; + merged: DeepMerge_1907; +} + +type CK_1907 = `p19.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_07, Registry_19_07, CK_1907, EP_1907, EV_1907, DeepMerge_1907 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-08.ts new file mode 100644 index 00000000..db513c37 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-08.ts @@ -0,0 +1,50 @@ +// pkg-19/types-08 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1908 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1908 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_08 | null; children: Entity_19_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x1908: number; y1908: string; z1908: boolean }; +} + +type Path_1908 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1908}` }[keyof T & string] : never; +type EP_1908 = Path_1908; + +type Val_1908 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1908 } + : T[K] extends object ? { t: 'o'; props: Val_1908 } + : { t: 'u' }; +}; +type EV_1908 = Val_1908; + +interface Registry_19_08 { + entities: Map; + validators: EV_1908; + paths: Set; + merged: DeepMerge_1908; +} + +type CK_1908 = `p19.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_08, Registry_19_08, CK_1908, EP_1908, EV_1908, DeepMerge_1908 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-09.ts new file mode 100644 index 00000000..deb52232 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-09.ts @@ -0,0 +1,50 @@ +// pkg-19/types-09 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1909 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1909 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_09 | null; children: Entity_19_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x1909: number; y1909: string; z1909: boolean }; +} + +type Path_1909 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1909}` }[keyof T & string] : never; +type EP_1909 = Path_1909; + +type Val_1909 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1909 } + : T[K] extends object ? { t: 'o'; props: Val_1909 } + : { t: 'u' }; +}; +type EV_1909 = Val_1909; + +interface Registry_19_09 { + entities: Map; + validators: EV_1909; + paths: Set; + merged: DeepMerge_1909; +} + +type CK_1909 = `p19.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_09, Registry_19_09, CK_1909, EP_1909, EV_1909, DeepMerge_1909 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-10.ts new file mode 100644 index 00000000..ef94152e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-10.ts @@ -0,0 +1,50 @@ +// pkg-19/types-10 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1910 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1910 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_10 | null; children: Entity_19_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x1910: number; y1910: string; z1910: boolean }; +} + +type Path_1910 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1910}` }[keyof T & string] : never; +type EP_1910 = Path_1910; + +type Val_1910 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1910 } + : T[K] extends object ? { t: 'o'; props: Val_1910 } + : { t: 'u' }; +}; +type EV_1910 = Val_1910; + +interface Registry_19_10 { + entities: Map; + validators: EV_1910; + paths: Set; + merged: DeepMerge_1910; +} + +type CK_1910 = `p19.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_10, Registry_19_10, CK_1910, EP_1910, EV_1910, DeepMerge_1910 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-11.ts new file mode 100644 index 00000000..9a20a113 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-11.ts @@ -0,0 +1,50 @@ +// pkg-19/types-11 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1911 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1911 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_11 | null; children: Entity_19_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x1911: number; y1911: string; z1911: boolean }; +} + +type Path_1911 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1911}` }[keyof T & string] : never; +type EP_1911 = Path_1911; + +type Val_1911 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1911 } + : T[K] extends object ? { t: 'o'; props: Val_1911 } + : { t: 'u' }; +}; +type EV_1911 = Val_1911; + +interface Registry_19_11 { + entities: Map; + validators: EV_1911; + paths: Set; + merged: DeepMerge_1911; +} + +type CK_1911 = `p19.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_11, Registry_19_11, CK_1911, EP_1911, EV_1911, DeepMerge_1911 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-12.ts new file mode 100644 index 00000000..4dddf9ab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-12.ts @@ -0,0 +1,50 @@ +// pkg-19/types-12 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1912 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1912 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_12 | null; children: Entity_19_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x1912: number; y1912: string; z1912: boolean }; +} + +type Path_1912 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1912}` }[keyof T & string] : never; +type EP_1912 = Path_1912; + +type Val_1912 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1912 } + : T[K] extends object ? { t: 'o'; props: Val_1912 } + : { t: 'u' }; +}; +type EV_1912 = Val_1912; + +interface Registry_19_12 { + entities: Map; + validators: EV_1912; + paths: Set; + merged: DeepMerge_1912; +} + +type CK_1912 = `p19.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_12, Registry_19_12, CK_1912, EP_1912, EV_1912, DeepMerge_1912 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-13.ts new file mode 100644 index 00000000..7c446c9a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-13.ts @@ -0,0 +1,50 @@ +// pkg-19/types-13 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1913 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1913 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_13 | null; children: Entity_19_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x1913: number; y1913: string; z1913: boolean }; +} + +type Path_1913 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1913}` }[keyof T & string] : never; +type EP_1913 = Path_1913; + +type Val_1913 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1913 } + : T[K] extends object ? { t: 'o'; props: Val_1913 } + : { t: 'u' }; +}; +type EV_1913 = Val_1913; + +interface Registry_19_13 { + entities: Map; + validators: EV_1913; + paths: Set; + merged: DeepMerge_1913; +} + +type CK_1913 = `p19.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_13, Registry_19_13, CK_1913, EP_1913, EV_1913, DeepMerge_1913 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-14.ts new file mode 100644 index 00000000..0ffe65d3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-14.ts @@ -0,0 +1,50 @@ +// pkg-19/types-14 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1914 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1914 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_14 | null; children: Entity_19_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x1914: number; y1914: string; z1914: boolean }; +} + +type Path_1914 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1914}` }[keyof T & string] : never; +type EP_1914 = Path_1914; + +type Val_1914 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1914 } + : T[K] extends object ? { t: 'o'; props: Val_1914 } + : { t: 'u' }; +}; +type EV_1914 = Val_1914; + +interface Registry_19_14 { + entities: Map; + validators: EV_1914; + paths: Set; + merged: DeepMerge_1914; +} + +type CK_1914 = `p19.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_14, Registry_19_14, CK_1914, EP_1914, EV_1914, DeepMerge_1914 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-15.ts new file mode 100644 index 00000000..0f9495ae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-15.ts @@ -0,0 +1,50 @@ +// pkg-19/types-15 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1915 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1915 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_15 | null; children: Entity_19_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x1915: number; y1915: string; z1915: boolean }; +} + +type Path_1915 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1915}` }[keyof T & string] : never; +type EP_1915 = Path_1915; + +type Val_1915 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1915 } + : T[K] extends object ? { t: 'o'; props: Val_1915 } + : { t: 'u' }; +}; +type EV_1915 = Val_1915; + +interface Registry_19_15 { + entities: Map; + validators: EV_1915; + paths: Set; + merged: DeepMerge_1915; +} + +type CK_1915 = `p19.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_15, Registry_19_15, CK_1915, EP_1915, EV_1915, DeepMerge_1915 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-16.ts new file mode 100644 index 00000000..955fa23f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-16.ts @@ -0,0 +1,50 @@ +// pkg-19/types-16 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1916 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1916 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_16 | null; children: Entity_19_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x1916: number; y1916: string; z1916: boolean }; +} + +type Path_1916 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1916}` }[keyof T & string] : never; +type EP_1916 = Path_1916; + +type Val_1916 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1916 } + : T[K] extends object ? { t: 'o'; props: Val_1916 } + : { t: 'u' }; +}; +type EV_1916 = Val_1916; + +interface Registry_19_16 { + entities: Map; + validators: EV_1916; + paths: Set; + merged: DeepMerge_1916; +} + +type CK_1916 = `p19.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_16, Registry_19_16, CK_1916, EP_1916, EV_1916, DeepMerge_1916 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-17.ts new file mode 100644 index 00000000..cfb98f76 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-17.ts @@ -0,0 +1,50 @@ +// pkg-19/types-17 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1917 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1917 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_17 | null; children: Entity_19_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x1917: number; y1917: string; z1917: boolean }; +} + +type Path_1917 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1917}` }[keyof T & string] : never; +type EP_1917 = Path_1917; + +type Val_1917 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1917 } + : T[K] extends object ? { t: 'o'; props: Val_1917 } + : { t: 'u' }; +}; +type EV_1917 = Val_1917; + +interface Registry_19_17 { + entities: Map; + validators: EV_1917; + paths: Set; + merged: DeepMerge_1917; +} + +type CK_1917 = `p19.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_17, Registry_19_17, CK_1917, EP_1917, EV_1917, DeepMerge_1917 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-18.ts new file mode 100644 index 00000000..9d6a5fdf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-18.ts @@ -0,0 +1,50 @@ +// pkg-19/types-18 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1918 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1918 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_18 | null; children: Entity_19_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x1918: number; y1918: string; z1918: boolean }; +} + +type Path_1918 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1918}` }[keyof T & string] : never; +type EP_1918 = Path_1918; + +type Val_1918 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1918 } + : T[K] extends object ? { t: 'o'; props: Val_1918 } + : { t: 'u' }; +}; +type EV_1918 = Val_1918; + +interface Registry_19_18 { + entities: Map; + validators: EV_1918; + paths: Set; + merged: DeepMerge_1918; +} + +type CK_1918 = `p19.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_18, Registry_19_18, CK_1918, EP_1918, EV_1918, DeepMerge_1918 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-19.ts new file mode 100644 index 00000000..179505e5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-19.ts @@ -0,0 +1,50 @@ +// pkg-19/types-19 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1919 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1919 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_19 | null; children: Entity_19_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x1919: number; y1919: string; z1919: boolean }; +} + +type Path_1919 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1919}` }[keyof T & string] : never; +type EP_1919 = Path_1919; + +type Val_1919 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1919 } + : T[K] extends object ? { t: 'o'; props: Val_1919 } + : { t: 'u' }; +}; +type EV_1919 = Val_1919; + +interface Registry_19_19 { + entities: Map; + validators: EV_1919; + paths: Set; + merged: DeepMerge_1919; +} + +type CK_1919 = `p19.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_19, Registry_19_19, CK_1919, EP_1919, EV_1919, DeepMerge_1919 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-20.ts new file mode 100644 index 00000000..a6efaf38 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-20.ts @@ -0,0 +1,50 @@ +// pkg-19/types-20 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1920 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1920 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_20 | null; children: Entity_19_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x1920: number; y1920: string; z1920: boolean }; +} + +type Path_1920 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1920}` }[keyof T & string] : never; +type EP_1920 = Path_1920; + +type Val_1920 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1920 } + : T[K] extends object ? { t: 'o'; props: Val_1920 } + : { t: 'u' }; +}; +type EV_1920 = Val_1920; + +interface Registry_19_20 { + entities: Map; + validators: EV_1920; + paths: Set; + merged: DeepMerge_1920; +} + +type CK_1920 = `p19.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_20, Registry_19_20, CK_1920, EP_1920, EV_1920, DeepMerge_1920 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-21.ts new file mode 100644 index 00000000..10c6cc17 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-21.ts @@ -0,0 +1,50 @@ +// pkg-19/types-21 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1921 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1921 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_21 | null; children: Entity_19_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x1921: number; y1921: string; z1921: boolean }; +} + +type Path_1921 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1921}` }[keyof T & string] : never; +type EP_1921 = Path_1921; + +type Val_1921 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1921 } + : T[K] extends object ? { t: 'o'; props: Val_1921 } + : { t: 'u' }; +}; +type EV_1921 = Val_1921; + +interface Registry_19_21 { + entities: Map; + validators: EV_1921; + paths: Set; + merged: DeepMerge_1921; +} + +type CK_1921 = `p19.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_21, Registry_19_21, CK_1921, EP_1921, EV_1921, DeepMerge_1921 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-22.ts new file mode 100644 index 00000000..d38a7bbd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-22.ts @@ -0,0 +1,50 @@ +// pkg-19/types-22 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1922 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1922 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_22 | null; children: Entity_19_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x1922: number; y1922: string; z1922: boolean }; +} + +type Path_1922 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1922}` }[keyof T & string] : never; +type EP_1922 = Path_1922; + +type Val_1922 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1922 } + : T[K] extends object ? { t: 'o'; props: Val_1922 } + : { t: 'u' }; +}; +type EV_1922 = Val_1922; + +interface Registry_19_22 { + entities: Map; + validators: EV_1922; + paths: Set; + merged: DeepMerge_1922; +} + +type CK_1922 = `p19.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_22, Registry_19_22, CK_1922, EP_1922, EV_1922, DeepMerge_1922 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-23.ts new file mode 100644 index 00000000..80a884d9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-23.ts @@ -0,0 +1,50 @@ +// pkg-19/types-23 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1923 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1923 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_23 | null; children: Entity_19_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x1923: number; y1923: string; z1923: boolean }; +} + +type Path_1923 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1923}` }[keyof T & string] : never; +type EP_1923 = Path_1923; + +type Val_1923 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1923 } + : T[K] extends object ? { t: 'o'; props: Val_1923 } + : { t: 'u' }; +}; +type EV_1923 = Val_1923; + +interface Registry_19_23 { + entities: Map; + validators: EV_1923; + paths: Set; + merged: DeepMerge_1923; +} + +type CK_1923 = `p19.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_23, Registry_19_23, CK_1923, EP_1923, EV_1923, DeepMerge_1923 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-24.ts new file mode 100644 index 00000000..7efa0644 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-24.ts @@ -0,0 +1,50 @@ +// pkg-19/types-24 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1924 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1924 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_24 | null; children: Entity_19_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x1924: number; y1924: string; z1924: boolean }; +} + +type Path_1924 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1924}` }[keyof T & string] : never; +type EP_1924 = Path_1924; + +type Val_1924 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1924 } + : T[K] extends object ? { t: 'o'; props: Val_1924 } + : { t: 'u' }; +}; +type EV_1924 = Val_1924; + +interface Registry_19_24 { + entities: Map; + validators: EV_1924; + paths: Set; + merged: DeepMerge_1924; +} + +type CK_1924 = `p19.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_24, Registry_19_24, CK_1924, EP_1924, EV_1924, DeepMerge_1924 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-25.ts new file mode 100644 index 00000000..a02cf9bc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-25.ts @@ -0,0 +1,50 @@ +// pkg-19/types-25 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1925 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1925 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_25 | null; children: Entity_19_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x1925: number; y1925: string; z1925: boolean }; +} + +type Path_1925 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1925}` }[keyof T & string] : never; +type EP_1925 = Path_1925; + +type Val_1925 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1925 } + : T[K] extends object ? { t: 'o'; props: Val_1925 } + : { t: 'u' }; +}; +type EV_1925 = Val_1925; + +interface Registry_19_25 { + entities: Map; + validators: EV_1925; + paths: Set; + merged: DeepMerge_1925; +} + +type CK_1925 = `p19.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_25, Registry_19_25, CK_1925, EP_1925, EV_1925, DeepMerge_1925 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-26.ts new file mode 100644 index 00000000..c2486f67 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-26.ts @@ -0,0 +1,50 @@ +// pkg-19/types-26 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1926 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1926 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_26 | null; children: Entity_19_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x1926: number; y1926: string; z1926: boolean }; +} + +type Path_1926 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1926}` }[keyof T & string] : never; +type EP_1926 = Path_1926; + +type Val_1926 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1926 } + : T[K] extends object ? { t: 'o'; props: Val_1926 } + : { t: 'u' }; +}; +type EV_1926 = Val_1926; + +interface Registry_19_26 { + entities: Map; + validators: EV_1926; + paths: Set; + merged: DeepMerge_1926; +} + +type CK_1926 = `p19.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_26, Registry_19_26, CK_1926, EP_1926, EV_1926, DeepMerge_1926 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-27.ts new file mode 100644 index 00000000..cf448d2a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-27.ts @@ -0,0 +1,50 @@ +// pkg-19/types-27 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1927 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1927 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_27 | null; children: Entity_19_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x1927: number; y1927: string; z1927: boolean }; +} + +type Path_1927 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1927}` }[keyof T & string] : never; +type EP_1927 = Path_1927; + +type Val_1927 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1927 } + : T[K] extends object ? { t: 'o'; props: Val_1927 } + : { t: 'u' }; +}; +type EV_1927 = Val_1927; + +interface Registry_19_27 { + entities: Map; + validators: EV_1927; + paths: Set; + merged: DeepMerge_1927; +} + +type CK_1927 = `p19.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_27, Registry_19_27, CK_1927, EP_1927, EV_1927, DeepMerge_1927 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-28.ts new file mode 100644 index 00000000..178e7553 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-28.ts @@ -0,0 +1,50 @@ +// pkg-19/types-28 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1928 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1928 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_28 | null; children: Entity_19_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x1928: number; y1928: string; z1928: boolean }; +} + +type Path_1928 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1928}` }[keyof T & string] : never; +type EP_1928 = Path_1928; + +type Val_1928 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1928 } + : T[K] extends object ? { t: 'o'; props: Val_1928 } + : { t: 'u' }; +}; +type EV_1928 = Val_1928; + +interface Registry_19_28 { + entities: Map; + validators: EV_1928; + paths: Set; + merged: DeepMerge_1928; +} + +type CK_1928 = `p19.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_28, Registry_19_28, CK_1928, EP_1928, EV_1928, DeepMerge_1928 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-29.ts new file mode 100644 index 00000000..b13f678d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-29.ts @@ -0,0 +1,50 @@ +// pkg-19/types-29 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1929 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1929 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_29 | null; children: Entity_19_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x1929: number; y1929: string; z1929: boolean }; +} + +type Path_1929 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1929}` }[keyof T & string] : never; +type EP_1929 = Path_1929; + +type Val_1929 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1929 } + : T[K] extends object ? { t: 'o'; props: Val_1929 } + : { t: 'u' }; +}; +type EV_1929 = Val_1929; + +interface Registry_19_29 { + entities: Map; + validators: EV_1929; + paths: Set; + merged: DeepMerge_1929; +} + +type CK_1929 = `p19.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_29, Registry_19_29, CK_1929, EP_1929, EV_1929, DeepMerge_1929 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-30.ts new file mode 100644 index 00000000..efab8c02 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-30.ts @@ -0,0 +1,50 @@ +// pkg-19/types-30 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1930 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1930 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_30 | null; children: Entity_19_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x1930: number; y1930: string; z1930: boolean }; +} + +type Path_1930 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1930}` }[keyof T & string] : never; +type EP_1930 = Path_1930; + +type Val_1930 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1930 } + : T[K] extends object ? { t: 'o'; props: Val_1930 } + : { t: 'u' }; +}; +type EV_1930 = Val_1930; + +interface Registry_19_30 { + entities: Map; + validators: EV_1930; + paths: Set; + merged: DeepMerge_1930; +} + +type CK_1930 = `p19.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_30, Registry_19_30, CK_1930, EP_1930, EV_1930, DeepMerge_1930 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-31.ts new file mode 100644 index 00000000..277cdeba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-31.ts @@ -0,0 +1,50 @@ +// pkg-19/types-31 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1931 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1931 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_31 | null; children: Entity_19_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x1931: number; y1931: string; z1931: boolean }; +} + +type Path_1931 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1931}` }[keyof T & string] : never; +type EP_1931 = Path_1931; + +type Val_1931 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1931 } + : T[K] extends object ? { t: 'o'; props: Val_1931 } + : { t: 'u' }; +}; +type EV_1931 = Val_1931; + +interface Registry_19_31 { + entities: Map; + validators: EV_1931; + paths: Set; + merged: DeepMerge_1931; +} + +type CK_1931 = `p19.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_31, Registry_19_31, CK_1931, EP_1931, EV_1931, DeepMerge_1931 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-32.ts new file mode 100644 index 00000000..e456ecb4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-32.ts @@ -0,0 +1,50 @@ +// pkg-19/types-32 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1932 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1932 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_32 | null; children: Entity_19_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x1932: number; y1932: string; z1932: boolean }; +} + +type Path_1932 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1932}` }[keyof T & string] : never; +type EP_1932 = Path_1932; + +type Val_1932 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1932 } + : T[K] extends object ? { t: 'o'; props: Val_1932 } + : { t: 'u' }; +}; +type EV_1932 = Val_1932; + +interface Registry_19_32 { + entities: Map; + validators: EV_1932; + paths: Set; + merged: DeepMerge_1932; +} + +type CK_1932 = `p19.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_32, Registry_19_32, CK_1932, EP_1932, EV_1932, DeepMerge_1932 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-33.ts new file mode 100644 index 00000000..a0c393e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-33.ts @@ -0,0 +1,50 @@ +// pkg-19/types-33 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1933 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1933 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_33 | null; children: Entity_19_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x1933: number; y1933: string; z1933: boolean }; +} + +type Path_1933 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1933}` }[keyof T & string] : never; +type EP_1933 = Path_1933; + +type Val_1933 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1933 } + : T[K] extends object ? { t: 'o'; props: Val_1933 } + : { t: 'u' }; +}; +type EV_1933 = Val_1933; + +interface Registry_19_33 { + entities: Map; + validators: EV_1933; + paths: Set; + merged: DeepMerge_1933; +} + +type CK_1933 = `p19.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_33, Registry_19_33, CK_1933, EP_1933, EV_1933, DeepMerge_1933 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-34.ts new file mode 100644 index 00000000..cfbca7d9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-34.ts @@ -0,0 +1,50 @@ +// pkg-19/types-34 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1934 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1934 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_34 | null; children: Entity_19_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x1934: number; y1934: string; z1934: boolean }; +} + +type Path_1934 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1934}` }[keyof T & string] : never; +type EP_1934 = Path_1934; + +type Val_1934 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1934 } + : T[K] extends object ? { t: 'o'; props: Val_1934 } + : { t: 'u' }; +}; +type EV_1934 = Val_1934; + +interface Registry_19_34 { + entities: Map; + validators: EV_1934; + paths: Set; + merged: DeepMerge_1934; +} + +type CK_1934 = `p19.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_34, Registry_19_34, CK_1934, EP_1934, EV_1934, DeepMerge_1934 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-35.ts new file mode 100644 index 00000000..b4a70d28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-35.ts @@ -0,0 +1,50 @@ +// pkg-19/types-35 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1935 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1935 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_35 | null; children: Entity_19_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x1935: number; y1935: string; z1935: boolean }; +} + +type Path_1935 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1935}` }[keyof T & string] : never; +type EP_1935 = Path_1935; + +type Val_1935 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1935 } + : T[K] extends object ? { t: 'o'; props: Val_1935 } + : { t: 'u' }; +}; +type EV_1935 = Val_1935; + +interface Registry_19_35 { + entities: Map; + validators: EV_1935; + paths: Set; + merged: DeepMerge_1935; +} + +type CK_1935 = `p19.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_35, Registry_19_35, CK_1935, EP_1935, EV_1935, DeepMerge_1935 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-36.ts new file mode 100644 index 00000000..77ee9f4a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-36.ts @@ -0,0 +1,50 @@ +// pkg-19/types-36 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1936 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1936 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_36 | null; children: Entity_19_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x1936: number; y1936: string; z1936: boolean }; +} + +type Path_1936 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1936}` }[keyof T & string] : never; +type EP_1936 = Path_1936; + +type Val_1936 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1936 } + : T[K] extends object ? { t: 'o'; props: Val_1936 } + : { t: 'u' }; +}; +type EV_1936 = Val_1936; + +interface Registry_19_36 { + entities: Map; + validators: EV_1936; + paths: Set; + merged: DeepMerge_1936; +} + +type CK_1936 = `p19.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_36, Registry_19_36, CK_1936, EP_1936, EV_1936, DeepMerge_1936 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-37.ts new file mode 100644 index 00000000..13d336e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-37.ts @@ -0,0 +1,50 @@ +// pkg-19/types-37 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1937 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1937 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_37 | null; children: Entity_19_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x1937: number; y1937: string; z1937: boolean }; +} + +type Path_1937 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1937}` }[keyof T & string] : never; +type EP_1937 = Path_1937; + +type Val_1937 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1937 } + : T[K] extends object ? { t: 'o'; props: Val_1937 } + : { t: 'u' }; +}; +type EV_1937 = Val_1937; + +interface Registry_19_37 { + entities: Map; + validators: EV_1937; + paths: Set; + merged: DeepMerge_1937; +} + +type CK_1937 = `p19.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_37, Registry_19_37, CK_1937, EP_1937, EV_1937, DeepMerge_1937 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-38.ts new file mode 100644 index 00000000..2c889015 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-38.ts @@ -0,0 +1,50 @@ +// pkg-19/types-38 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1938 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1938 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_38 | null; children: Entity_19_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x1938: number; y1938: string; z1938: boolean }; +} + +type Path_1938 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1938}` }[keyof T & string] : never; +type EP_1938 = Path_1938; + +type Val_1938 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1938 } + : T[K] extends object ? { t: 'o'; props: Val_1938 } + : { t: 'u' }; +}; +type EV_1938 = Val_1938; + +interface Registry_19_38 { + entities: Map; + validators: EV_1938; + paths: Set; + merged: DeepMerge_1938; +} + +type CK_1938 = `p19.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_38, Registry_19_38, CK_1938, EP_1938, EV_1938, DeepMerge_1938 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-39.ts new file mode 100644 index 00000000..7f646e9c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-39.ts @@ -0,0 +1,50 @@ +// pkg-19/types-39 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1939 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1939 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_39 | null; children: Entity_19_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x1939: number; y1939: string; z1939: boolean }; +} + +type Path_1939 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1939}` }[keyof T & string] : never; +type EP_1939 = Path_1939; + +type Val_1939 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1939 } + : T[K] extends object ? { t: 'o'; props: Val_1939 } + : { t: 'u' }; +}; +type EV_1939 = Val_1939; + +interface Registry_19_39 { + entities: Map; + validators: EV_1939; + paths: Set; + merged: DeepMerge_1939; +} + +type CK_1939 = `p19.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_39, Registry_19_39, CK_1939, EP_1939, EV_1939, DeepMerge_1939 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-40.ts new file mode 100644 index 00000000..0260d175 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-40.ts @@ -0,0 +1,50 @@ +// pkg-19/types-40 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1940 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1940 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_40 | null; children: Entity_19_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x1940: number; y1940: string; z1940: boolean }; +} + +type Path_1940 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1940}` }[keyof T & string] : never; +type EP_1940 = Path_1940; + +type Val_1940 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1940 } + : T[K] extends object ? { t: 'o'; props: Val_1940 } + : { t: 'u' }; +}; +type EV_1940 = Val_1940; + +interface Registry_19_40 { + entities: Map; + validators: EV_1940; + paths: Set; + merged: DeepMerge_1940; +} + +type CK_1940 = `p19.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_40, Registry_19_40, CK_1940, EP_1940, EV_1940, DeepMerge_1940 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-41.ts new file mode 100644 index 00000000..aa5058ec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-41.ts @@ -0,0 +1,50 @@ +// pkg-19/types-41 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1941 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1941 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_41 | null; children: Entity_19_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x1941: number; y1941: string; z1941: boolean }; +} + +type Path_1941 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1941}` }[keyof T & string] : never; +type EP_1941 = Path_1941; + +type Val_1941 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1941 } + : T[K] extends object ? { t: 'o'; props: Val_1941 } + : { t: 'u' }; +}; +type EV_1941 = Val_1941; + +interface Registry_19_41 { + entities: Map; + validators: EV_1941; + paths: Set; + merged: DeepMerge_1941; +} + +type CK_1941 = `p19.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_41, Registry_19_41, CK_1941, EP_1941, EV_1941, DeepMerge_1941 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-42.ts new file mode 100644 index 00000000..59de2387 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-42.ts @@ -0,0 +1,50 @@ +// pkg-19/types-42 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1942 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1942 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_42 | null; children: Entity_19_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x1942: number; y1942: string; z1942: boolean }; +} + +type Path_1942 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1942}` }[keyof T & string] : never; +type EP_1942 = Path_1942; + +type Val_1942 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1942 } + : T[K] extends object ? { t: 'o'; props: Val_1942 } + : { t: 'u' }; +}; +type EV_1942 = Val_1942; + +interface Registry_19_42 { + entities: Map; + validators: EV_1942; + paths: Set; + merged: DeepMerge_1942; +} + +type CK_1942 = `p19.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_42, Registry_19_42, CK_1942, EP_1942, EV_1942, DeepMerge_1942 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-43.ts new file mode 100644 index 00000000..299f17e4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-43.ts @@ -0,0 +1,50 @@ +// pkg-19/types-43 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1943 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1943 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_43 | null; children: Entity_19_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x1943: number; y1943: string; z1943: boolean }; +} + +type Path_1943 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1943}` }[keyof T & string] : never; +type EP_1943 = Path_1943; + +type Val_1943 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1943 } + : T[K] extends object ? { t: 'o'; props: Val_1943 } + : { t: 'u' }; +}; +type EV_1943 = Val_1943; + +interface Registry_19_43 { + entities: Map; + validators: EV_1943; + paths: Set; + merged: DeepMerge_1943; +} + +type CK_1943 = `p19.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_43, Registry_19_43, CK_1943, EP_1943, EV_1943, DeepMerge_1943 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-44.ts new file mode 100644 index 00000000..837a6fc0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-44.ts @@ -0,0 +1,50 @@ +// pkg-19/types-44 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1944 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1944 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_44 | null; children: Entity_19_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x1944: number; y1944: string; z1944: boolean }; +} + +type Path_1944 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1944}` }[keyof T & string] : never; +type EP_1944 = Path_1944; + +type Val_1944 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1944 } + : T[K] extends object ? { t: 'o'; props: Val_1944 } + : { t: 'u' }; +}; +type EV_1944 = Val_1944; + +interface Registry_19_44 { + entities: Map; + validators: EV_1944; + paths: Set; + merged: DeepMerge_1944; +} + +type CK_1944 = `p19.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_44, Registry_19_44, CK_1944, EP_1944, EV_1944, DeepMerge_1944 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-45.ts new file mode 100644 index 00000000..3aa70495 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-45.ts @@ -0,0 +1,50 @@ +// pkg-19/types-45 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1945 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1945 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_45 | null; children: Entity_19_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x1945: number; y1945: string; z1945: boolean }; +} + +type Path_1945 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1945}` }[keyof T & string] : never; +type EP_1945 = Path_1945; + +type Val_1945 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1945 } + : T[K] extends object ? { t: 'o'; props: Val_1945 } + : { t: 'u' }; +}; +type EV_1945 = Val_1945; + +interface Registry_19_45 { + entities: Map; + validators: EV_1945; + paths: Set; + merged: DeepMerge_1945; +} + +type CK_1945 = `p19.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_45, Registry_19_45, CK_1945, EP_1945, EV_1945, DeepMerge_1945 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-46.ts new file mode 100644 index 00000000..660c3acf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-46.ts @@ -0,0 +1,50 @@ +// pkg-19/types-46 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1946 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1946 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_46 | null; children: Entity_19_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x1946: number; y1946: string; z1946: boolean }; +} + +type Path_1946 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1946}` }[keyof T & string] : never; +type EP_1946 = Path_1946; + +type Val_1946 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1946 } + : T[K] extends object ? { t: 'o'; props: Val_1946 } + : { t: 'u' }; +}; +type EV_1946 = Val_1946; + +interface Registry_19_46 { + entities: Map; + validators: EV_1946; + paths: Set; + merged: DeepMerge_1946; +} + +type CK_1946 = `p19.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_46, Registry_19_46, CK_1946, EP_1946, EV_1946, DeepMerge_1946 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-47.ts new file mode 100644 index 00000000..d493efa5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-47.ts @@ -0,0 +1,50 @@ +// pkg-19/types-47 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1947 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1947 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_47 | null; children: Entity_19_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x1947: number; y1947: string; z1947: boolean }; +} + +type Path_1947 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1947}` }[keyof T & string] : never; +type EP_1947 = Path_1947; + +type Val_1947 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1947 } + : T[K] extends object ? { t: 'o'; props: Val_1947 } + : { t: 'u' }; +}; +type EV_1947 = Val_1947; + +interface Registry_19_47 { + entities: Map; + validators: EV_1947; + paths: Set; + merged: DeepMerge_1947; +} + +type CK_1947 = `p19.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_47, Registry_19_47, CK_1947, EP_1947, EV_1947, DeepMerge_1947 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-48.ts new file mode 100644 index 00000000..cb633a09 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-48.ts @@ -0,0 +1,50 @@ +// pkg-19/types-48 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1948 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1948 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_48 | null; children: Entity_19_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x1948: number; y1948: string; z1948: boolean }; +} + +type Path_1948 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1948}` }[keyof T & string] : never; +type EP_1948 = Path_1948; + +type Val_1948 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1948 } + : T[K] extends object ? { t: 'o'; props: Val_1948 } + : { t: 'u' }; +}; +type EV_1948 = Val_1948; + +interface Registry_19_48 { + entities: Map; + validators: EV_1948; + paths: Set; + merged: DeepMerge_1948; +} + +type CK_1948 = `p19.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_48, Registry_19_48, CK_1948, EP_1948, EV_1948, DeepMerge_1948 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-49.ts new file mode 100644 index 00000000..39e13b6d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-49.ts @@ -0,0 +1,50 @@ +// pkg-19/types-49 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1949 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1949 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_49 | null; children: Entity_19_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x1949: number; y1949: string; z1949: boolean }; +} + +type Path_1949 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1949}` }[keyof T & string] : never; +type EP_1949 = Path_1949; + +type Val_1949 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1949 } + : T[K] extends object ? { t: 'o'; props: Val_1949 } + : { t: 'u' }; +}; +type EV_1949 = Val_1949; + +interface Registry_19_49 { + entities: Map; + validators: EV_1949; + paths: Set; + merged: DeepMerge_1949; +} + +type CK_1949 = `p19.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_49, Registry_19_49, CK_1949, EP_1949, EV_1949, DeepMerge_1949 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-19/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-19/types-50.ts new file mode 100644 index 00000000..0c0fed64 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-19/types-50.ts @@ -0,0 +1,50 @@ +// pkg-19/types-50 - heavy interconnected types + +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; +import type { Entity_16_01, Registry_16_01 } from '../pkg-16/types-01'; +import type { Entity_16_10, Registry_16_10 } from '../pkg-16/types-10'; +import type { Entity_16_20, Registry_16_20 } from '../pkg-16/types-20'; + +type DeepMerge_1950 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_1950 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_19_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_19_50 | null; children: Entity_19_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x1950: number; y1950: string; z1950: boolean }; +} + +type Path_1950 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_1950}` }[keyof T & string] : never; +type EP_1950 = Path_1950; + +type Val_1950 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_1950 } + : T[K] extends object ? { t: 'o'; props: Val_1950 } + : { t: 'u' }; +}; +type EV_1950 = Val_1950; + +interface Registry_19_50 { + entities: Map; + validators: EV_1950; + paths: Set; + merged: DeepMerge_1950; +} + +type CK_1950 = `p19.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_19_50, Registry_19_50, CK_1950, EP_1950, EV_1950, DeepMerge_1950 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-20/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-01.ts new file mode 100644 index 00000000..075f30b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-01.ts @@ -0,0 +1,50 @@ +// pkg-20/types-01 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2001 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2001 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_01 | null; children: Entity_20_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2001: number; y2001: string; z2001: boolean }; +} + +type Path_2001 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2001}` }[keyof T & string] : never; +type EP_2001 = Path_2001; + +type Val_2001 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2001 } + : T[K] extends object ? { t: 'o'; props: Val_2001 } + : { t: 'u' }; +}; +type EV_2001 = Val_2001; + +interface Registry_20_01 { + entities: Map; + validators: EV_2001; + paths: Set; + merged: DeepMerge_2001; +} + +type CK_2001 = `p20.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_01, Registry_20_01, CK_2001, EP_2001, EV_2001, DeepMerge_2001 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-02.ts new file mode 100644 index 00000000..45b181a0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-02.ts @@ -0,0 +1,50 @@ +// pkg-20/types-02 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2002 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2002 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_02 | null; children: Entity_20_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2002: number; y2002: string; z2002: boolean }; +} + +type Path_2002 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2002}` }[keyof T & string] : never; +type EP_2002 = Path_2002; + +type Val_2002 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2002 } + : T[K] extends object ? { t: 'o'; props: Val_2002 } + : { t: 'u' }; +}; +type EV_2002 = Val_2002; + +interface Registry_20_02 { + entities: Map; + validators: EV_2002; + paths: Set; + merged: DeepMerge_2002; +} + +type CK_2002 = `p20.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_02, Registry_20_02, CK_2002, EP_2002, EV_2002, DeepMerge_2002 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-03.ts new file mode 100644 index 00000000..f086674a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-03.ts @@ -0,0 +1,50 @@ +// pkg-20/types-03 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2003 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2003 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_03 | null; children: Entity_20_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2003: number; y2003: string; z2003: boolean }; +} + +type Path_2003 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2003}` }[keyof T & string] : never; +type EP_2003 = Path_2003; + +type Val_2003 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2003 } + : T[K] extends object ? { t: 'o'; props: Val_2003 } + : { t: 'u' }; +}; +type EV_2003 = Val_2003; + +interface Registry_20_03 { + entities: Map; + validators: EV_2003; + paths: Set; + merged: DeepMerge_2003; +} + +type CK_2003 = `p20.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_03, Registry_20_03, CK_2003, EP_2003, EV_2003, DeepMerge_2003 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-04.ts new file mode 100644 index 00000000..a4601818 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-04.ts @@ -0,0 +1,50 @@ +// pkg-20/types-04 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2004 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2004 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_04 | null; children: Entity_20_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2004: number; y2004: string; z2004: boolean }; +} + +type Path_2004 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2004}` }[keyof T & string] : never; +type EP_2004 = Path_2004; + +type Val_2004 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2004 } + : T[K] extends object ? { t: 'o'; props: Val_2004 } + : { t: 'u' }; +}; +type EV_2004 = Val_2004; + +interface Registry_20_04 { + entities: Map; + validators: EV_2004; + paths: Set; + merged: DeepMerge_2004; +} + +type CK_2004 = `p20.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_04, Registry_20_04, CK_2004, EP_2004, EV_2004, DeepMerge_2004 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-05.ts new file mode 100644 index 00000000..1592ce96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-05.ts @@ -0,0 +1,50 @@ +// pkg-20/types-05 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2005 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2005 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_05 | null; children: Entity_20_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2005: number; y2005: string; z2005: boolean }; +} + +type Path_2005 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2005}` }[keyof T & string] : never; +type EP_2005 = Path_2005; + +type Val_2005 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2005 } + : T[K] extends object ? { t: 'o'; props: Val_2005 } + : { t: 'u' }; +}; +type EV_2005 = Val_2005; + +interface Registry_20_05 { + entities: Map; + validators: EV_2005; + paths: Set; + merged: DeepMerge_2005; +} + +type CK_2005 = `p20.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_05, Registry_20_05, CK_2005, EP_2005, EV_2005, DeepMerge_2005 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-06.ts new file mode 100644 index 00000000..06b9d138 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-06.ts @@ -0,0 +1,50 @@ +// pkg-20/types-06 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2006 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2006 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_06 | null; children: Entity_20_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2006: number; y2006: string; z2006: boolean }; +} + +type Path_2006 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2006}` }[keyof T & string] : never; +type EP_2006 = Path_2006; + +type Val_2006 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2006 } + : T[K] extends object ? { t: 'o'; props: Val_2006 } + : { t: 'u' }; +}; +type EV_2006 = Val_2006; + +interface Registry_20_06 { + entities: Map; + validators: EV_2006; + paths: Set; + merged: DeepMerge_2006; +} + +type CK_2006 = `p20.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_06, Registry_20_06, CK_2006, EP_2006, EV_2006, DeepMerge_2006 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-07.ts new file mode 100644 index 00000000..4e415e06 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-07.ts @@ -0,0 +1,50 @@ +// pkg-20/types-07 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2007 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2007 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_07 | null; children: Entity_20_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2007: number; y2007: string; z2007: boolean }; +} + +type Path_2007 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2007}` }[keyof T & string] : never; +type EP_2007 = Path_2007; + +type Val_2007 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2007 } + : T[K] extends object ? { t: 'o'; props: Val_2007 } + : { t: 'u' }; +}; +type EV_2007 = Val_2007; + +interface Registry_20_07 { + entities: Map; + validators: EV_2007; + paths: Set; + merged: DeepMerge_2007; +} + +type CK_2007 = `p20.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_07, Registry_20_07, CK_2007, EP_2007, EV_2007, DeepMerge_2007 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-08.ts new file mode 100644 index 00000000..fcf4e267 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-08.ts @@ -0,0 +1,50 @@ +// pkg-20/types-08 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2008 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2008 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_08 | null; children: Entity_20_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2008: number; y2008: string; z2008: boolean }; +} + +type Path_2008 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2008}` }[keyof T & string] : never; +type EP_2008 = Path_2008; + +type Val_2008 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2008 } + : T[K] extends object ? { t: 'o'; props: Val_2008 } + : { t: 'u' }; +}; +type EV_2008 = Val_2008; + +interface Registry_20_08 { + entities: Map; + validators: EV_2008; + paths: Set; + merged: DeepMerge_2008; +} + +type CK_2008 = `p20.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_08, Registry_20_08, CK_2008, EP_2008, EV_2008, DeepMerge_2008 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-09.ts new file mode 100644 index 00000000..0d47b00e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-09.ts @@ -0,0 +1,50 @@ +// pkg-20/types-09 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2009 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2009 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_09 | null; children: Entity_20_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2009: number; y2009: string; z2009: boolean }; +} + +type Path_2009 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2009}` }[keyof T & string] : never; +type EP_2009 = Path_2009; + +type Val_2009 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2009 } + : T[K] extends object ? { t: 'o'; props: Val_2009 } + : { t: 'u' }; +}; +type EV_2009 = Val_2009; + +interface Registry_20_09 { + entities: Map; + validators: EV_2009; + paths: Set; + merged: DeepMerge_2009; +} + +type CK_2009 = `p20.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_09, Registry_20_09, CK_2009, EP_2009, EV_2009, DeepMerge_2009 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-10.ts new file mode 100644 index 00000000..51f5423e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-10.ts @@ -0,0 +1,50 @@ +// pkg-20/types-10 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2010 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2010 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_10 | null; children: Entity_20_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2010: number; y2010: string; z2010: boolean }; +} + +type Path_2010 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2010}` }[keyof T & string] : never; +type EP_2010 = Path_2010; + +type Val_2010 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2010 } + : T[K] extends object ? { t: 'o'; props: Val_2010 } + : { t: 'u' }; +}; +type EV_2010 = Val_2010; + +interface Registry_20_10 { + entities: Map; + validators: EV_2010; + paths: Set; + merged: DeepMerge_2010; +} + +type CK_2010 = `p20.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_10, Registry_20_10, CK_2010, EP_2010, EV_2010, DeepMerge_2010 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-11.ts new file mode 100644 index 00000000..f614c1e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-11.ts @@ -0,0 +1,50 @@ +// pkg-20/types-11 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2011 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2011 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_11 | null; children: Entity_20_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2011: number; y2011: string; z2011: boolean }; +} + +type Path_2011 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2011}` }[keyof T & string] : never; +type EP_2011 = Path_2011; + +type Val_2011 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2011 } + : T[K] extends object ? { t: 'o'; props: Val_2011 } + : { t: 'u' }; +}; +type EV_2011 = Val_2011; + +interface Registry_20_11 { + entities: Map; + validators: EV_2011; + paths: Set; + merged: DeepMerge_2011; +} + +type CK_2011 = `p20.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_11, Registry_20_11, CK_2011, EP_2011, EV_2011, DeepMerge_2011 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-12.ts new file mode 100644 index 00000000..84101f96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-12.ts @@ -0,0 +1,50 @@ +// pkg-20/types-12 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2012 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2012 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_12 | null; children: Entity_20_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2012: number; y2012: string; z2012: boolean }; +} + +type Path_2012 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2012}` }[keyof T & string] : never; +type EP_2012 = Path_2012; + +type Val_2012 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2012 } + : T[K] extends object ? { t: 'o'; props: Val_2012 } + : { t: 'u' }; +}; +type EV_2012 = Val_2012; + +interface Registry_20_12 { + entities: Map; + validators: EV_2012; + paths: Set; + merged: DeepMerge_2012; +} + +type CK_2012 = `p20.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_12, Registry_20_12, CK_2012, EP_2012, EV_2012, DeepMerge_2012 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-13.ts new file mode 100644 index 00000000..c08b9d19 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-13.ts @@ -0,0 +1,50 @@ +// pkg-20/types-13 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2013 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2013 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_13 | null; children: Entity_20_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2013: number; y2013: string; z2013: boolean }; +} + +type Path_2013 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2013}` }[keyof T & string] : never; +type EP_2013 = Path_2013; + +type Val_2013 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2013 } + : T[K] extends object ? { t: 'o'; props: Val_2013 } + : { t: 'u' }; +}; +type EV_2013 = Val_2013; + +interface Registry_20_13 { + entities: Map; + validators: EV_2013; + paths: Set; + merged: DeepMerge_2013; +} + +type CK_2013 = `p20.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_13, Registry_20_13, CK_2013, EP_2013, EV_2013, DeepMerge_2013 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-14.ts new file mode 100644 index 00000000..63e81b4e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-14.ts @@ -0,0 +1,50 @@ +// pkg-20/types-14 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2014 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2014 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_14 | null; children: Entity_20_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2014: number; y2014: string; z2014: boolean }; +} + +type Path_2014 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2014}` }[keyof T & string] : never; +type EP_2014 = Path_2014; + +type Val_2014 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2014 } + : T[K] extends object ? { t: 'o'; props: Val_2014 } + : { t: 'u' }; +}; +type EV_2014 = Val_2014; + +interface Registry_20_14 { + entities: Map; + validators: EV_2014; + paths: Set; + merged: DeepMerge_2014; +} + +type CK_2014 = `p20.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_14, Registry_20_14, CK_2014, EP_2014, EV_2014, DeepMerge_2014 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-15.ts new file mode 100644 index 00000000..30add67f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-15.ts @@ -0,0 +1,50 @@ +// pkg-20/types-15 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2015 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2015 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_15 | null; children: Entity_20_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2015: number; y2015: string; z2015: boolean }; +} + +type Path_2015 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2015}` }[keyof T & string] : never; +type EP_2015 = Path_2015; + +type Val_2015 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2015 } + : T[K] extends object ? { t: 'o'; props: Val_2015 } + : { t: 'u' }; +}; +type EV_2015 = Val_2015; + +interface Registry_20_15 { + entities: Map; + validators: EV_2015; + paths: Set; + merged: DeepMerge_2015; +} + +type CK_2015 = `p20.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_15, Registry_20_15, CK_2015, EP_2015, EV_2015, DeepMerge_2015 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-16.ts new file mode 100644 index 00000000..f0c768d8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-16.ts @@ -0,0 +1,50 @@ +// pkg-20/types-16 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2016 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2016 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_16 | null; children: Entity_20_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2016: number; y2016: string; z2016: boolean }; +} + +type Path_2016 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2016}` }[keyof T & string] : never; +type EP_2016 = Path_2016; + +type Val_2016 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2016 } + : T[K] extends object ? { t: 'o'; props: Val_2016 } + : { t: 'u' }; +}; +type EV_2016 = Val_2016; + +interface Registry_20_16 { + entities: Map; + validators: EV_2016; + paths: Set; + merged: DeepMerge_2016; +} + +type CK_2016 = `p20.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_16, Registry_20_16, CK_2016, EP_2016, EV_2016, DeepMerge_2016 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-17.ts new file mode 100644 index 00000000..38c02018 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-17.ts @@ -0,0 +1,50 @@ +// pkg-20/types-17 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2017 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2017 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_17 | null; children: Entity_20_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2017: number; y2017: string; z2017: boolean }; +} + +type Path_2017 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2017}` }[keyof T & string] : never; +type EP_2017 = Path_2017; + +type Val_2017 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2017 } + : T[K] extends object ? { t: 'o'; props: Val_2017 } + : { t: 'u' }; +}; +type EV_2017 = Val_2017; + +interface Registry_20_17 { + entities: Map; + validators: EV_2017; + paths: Set; + merged: DeepMerge_2017; +} + +type CK_2017 = `p20.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_17, Registry_20_17, CK_2017, EP_2017, EV_2017, DeepMerge_2017 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-18.ts new file mode 100644 index 00000000..5062d7fe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-18.ts @@ -0,0 +1,50 @@ +// pkg-20/types-18 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2018 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2018 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_18 | null; children: Entity_20_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2018: number; y2018: string; z2018: boolean }; +} + +type Path_2018 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2018}` }[keyof T & string] : never; +type EP_2018 = Path_2018; + +type Val_2018 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2018 } + : T[K] extends object ? { t: 'o'; props: Val_2018 } + : { t: 'u' }; +}; +type EV_2018 = Val_2018; + +interface Registry_20_18 { + entities: Map; + validators: EV_2018; + paths: Set; + merged: DeepMerge_2018; +} + +type CK_2018 = `p20.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_18, Registry_20_18, CK_2018, EP_2018, EV_2018, DeepMerge_2018 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-19.ts new file mode 100644 index 00000000..25de5cdf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-19.ts @@ -0,0 +1,50 @@ +// pkg-20/types-19 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2019 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2019 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_19 | null; children: Entity_20_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2019: number; y2019: string; z2019: boolean }; +} + +type Path_2019 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2019}` }[keyof T & string] : never; +type EP_2019 = Path_2019; + +type Val_2019 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2019 } + : T[K] extends object ? { t: 'o'; props: Val_2019 } + : { t: 'u' }; +}; +type EV_2019 = Val_2019; + +interface Registry_20_19 { + entities: Map; + validators: EV_2019; + paths: Set; + merged: DeepMerge_2019; +} + +type CK_2019 = `p20.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_19, Registry_20_19, CK_2019, EP_2019, EV_2019, DeepMerge_2019 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-20.ts new file mode 100644 index 00000000..13d6ce0a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-20.ts @@ -0,0 +1,50 @@ +// pkg-20/types-20 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2020 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2020 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_20 | null; children: Entity_20_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2020: number; y2020: string; z2020: boolean }; +} + +type Path_2020 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2020}` }[keyof T & string] : never; +type EP_2020 = Path_2020; + +type Val_2020 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2020 } + : T[K] extends object ? { t: 'o'; props: Val_2020 } + : { t: 'u' }; +}; +type EV_2020 = Val_2020; + +interface Registry_20_20 { + entities: Map; + validators: EV_2020; + paths: Set; + merged: DeepMerge_2020; +} + +type CK_2020 = `p20.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_20, Registry_20_20, CK_2020, EP_2020, EV_2020, DeepMerge_2020 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-21.ts new file mode 100644 index 00000000..57aa86cc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-21.ts @@ -0,0 +1,50 @@ +// pkg-20/types-21 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2021 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2021 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_21 | null; children: Entity_20_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2021: number; y2021: string; z2021: boolean }; +} + +type Path_2021 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2021}` }[keyof T & string] : never; +type EP_2021 = Path_2021; + +type Val_2021 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2021 } + : T[K] extends object ? { t: 'o'; props: Val_2021 } + : { t: 'u' }; +}; +type EV_2021 = Val_2021; + +interface Registry_20_21 { + entities: Map; + validators: EV_2021; + paths: Set; + merged: DeepMerge_2021; +} + +type CK_2021 = `p20.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_21, Registry_20_21, CK_2021, EP_2021, EV_2021, DeepMerge_2021 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-22.ts new file mode 100644 index 00000000..bc0f52d4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-22.ts @@ -0,0 +1,50 @@ +// pkg-20/types-22 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2022 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2022 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_22 | null; children: Entity_20_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2022: number; y2022: string; z2022: boolean }; +} + +type Path_2022 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2022}` }[keyof T & string] : never; +type EP_2022 = Path_2022; + +type Val_2022 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2022 } + : T[K] extends object ? { t: 'o'; props: Val_2022 } + : { t: 'u' }; +}; +type EV_2022 = Val_2022; + +interface Registry_20_22 { + entities: Map; + validators: EV_2022; + paths: Set; + merged: DeepMerge_2022; +} + +type CK_2022 = `p20.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_22, Registry_20_22, CK_2022, EP_2022, EV_2022, DeepMerge_2022 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-23.ts new file mode 100644 index 00000000..a9676032 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-23.ts @@ -0,0 +1,50 @@ +// pkg-20/types-23 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2023 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2023 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_23 | null; children: Entity_20_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2023: number; y2023: string; z2023: boolean }; +} + +type Path_2023 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2023}` }[keyof T & string] : never; +type EP_2023 = Path_2023; + +type Val_2023 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2023 } + : T[K] extends object ? { t: 'o'; props: Val_2023 } + : { t: 'u' }; +}; +type EV_2023 = Val_2023; + +interface Registry_20_23 { + entities: Map; + validators: EV_2023; + paths: Set; + merged: DeepMerge_2023; +} + +type CK_2023 = `p20.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_23, Registry_20_23, CK_2023, EP_2023, EV_2023, DeepMerge_2023 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-24.ts new file mode 100644 index 00000000..446642ac --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-24.ts @@ -0,0 +1,50 @@ +// pkg-20/types-24 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2024 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2024 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_24 | null; children: Entity_20_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2024: number; y2024: string; z2024: boolean }; +} + +type Path_2024 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2024}` }[keyof T & string] : never; +type EP_2024 = Path_2024; + +type Val_2024 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2024 } + : T[K] extends object ? { t: 'o'; props: Val_2024 } + : { t: 'u' }; +}; +type EV_2024 = Val_2024; + +interface Registry_20_24 { + entities: Map; + validators: EV_2024; + paths: Set; + merged: DeepMerge_2024; +} + +type CK_2024 = `p20.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_24, Registry_20_24, CK_2024, EP_2024, EV_2024, DeepMerge_2024 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-25.ts new file mode 100644 index 00000000..5b0c3985 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-25.ts @@ -0,0 +1,50 @@ +// pkg-20/types-25 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2025 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2025 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_25 | null; children: Entity_20_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2025: number; y2025: string; z2025: boolean }; +} + +type Path_2025 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2025}` }[keyof T & string] : never; +type EP_2025 = Path_2025; + +type Val_2025 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2025 } + : T[K] extends object ? { t: 'o'; props: Val_2025 } + : { t: 'u' }; +}; +type EV_2025 = Val_2025; + +interface Registry_20_25 { + entities: Map; + validators: EV_2025; + paths: Set; + merged: DeepMerge_2025; +} + +type CK_2025 = `p20.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_25, Registry_20_25, CK_2025, EP_2025, EV_2025, DeepMerge_2025 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-26.ts new file mode 100644 index 00000000..da699b43 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-26.ts @@ -0,0 +1,50 @@ +// pkg-20/types-26 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2026 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2026 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_26 | null; children: Entity_20_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2026: number; y2026: string; z2026: boolean }; +} + +type Path_2026 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2026}` }[keyof T & string] : never; +type EP_2026 = Path_2026; + +type Val_2026 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2026 } + : T[K] extends object ? { t: 'o'; props: Val_2026 } + : { t: 'u' }; +}; +type EV_2026 = Val_2026; + +interface Registry_20_26 { + entities: Map; + validators: EV_2026; + paths: Set; + merged: DeepMerge_2026; +} + +type CK_2026 = `p20.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_26, Registry_20_26, CK_2026, EP_2026, EV_2026, DeepMerge_2026 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-27.ts new file mode 100644 index 00000000..cd6d089c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-27.ts @@ -0,0 +1,50 @@ +// pkg-20/types-27 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2027 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2027 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_27 | null; children: Entity_20_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2027: number; y2027: string; z2027: boolean }; +} + +type Path_2027 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2027}` }[keyof T & string] : never; +type EP_2027 = Path_2027; + +type Val_2027 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2027 } + : T[K] extends object ? { t: 'o'; props: Val_2027 } + : { t: 'u' }; +}; +type EV_2027 = Val_2027; + +interface Registry_20_27 { + entities: Map; + validators: EV_2027; + paths: Set; + merged: DeepMerge_2027; +} + +type CK_2027 = `p20.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_27, Registry_20_27, CK_2027, EP_2027, EV_2027, DeepMerge_2027 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-28.ts new file mode 100644 index 00000000..5c890a3e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-28.ts @@ -0,0 +1,50 @@ +// pkg-20/types-28 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2028 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2028 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_28 | null; children: Entity_20_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2028: number; y2028: string; z2028: boolean }; +} + +type Path_2028 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2028}` }[keyof T & string] : never; +type EP_2028 = Path_2028; + +type Val_2028 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2028 } + : T[K] extends object ? { t: 'o'; props: Val_2028 } + : { t: 'u' }; +}; +type EV_2028 = Val_2028; + +interface Registry_20_28 { + entities: Map; + validators: EV_2028; + paths: Set; + merged: DeepMerge_2028; +} + +type CK_2028 = `p20.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_28, Registry_20_28, CK_2028, EP_2028, EV_2028, DeepMerge_2028 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-29.ts new file mode 100644 index 00000000..de60aa17 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-29.ts @@ -0,0 +1,50 @@ +// pkg-20/types-29 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2029 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2029 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_29 | null; children: Entity_20_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2029: number; y2029: string; z2029: boolean }; +} + +type Path_2029 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2029}` }[keyof T & string] : never; +type EP_2029 = Path_2029; + +type Val_2029 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2029 } + : T[K] extends object ? { t: 'o'; props: Val_2029 } + : { t: 'u' }; +}; +type EV_2029 = Val_2029; + +interface Registry_20_29 { + entities: Map; + validators: EV_2029; + paths: Set; + merged: DeepMerge_2029; +} + +type CK_2029 = `p20.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_29, Registry_20_29, CK_2029, EP_2029, EV_2029, DeepMerge_2029 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-30.ts new file mode 100644 index 00000000..d9f78335 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-30.ts @@ -0,0 +1,50 @@ +// pkg-20/types-30 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2030 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2030 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_30 | null; children: Entity_20_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2030: number; y2030: string; z2030: boolean }; +} + +type Path_2030 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2030}` }[keyof T & string] : never; +type EP_2030 = Path_2030; + +type Val_2030 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2030 } + : T[K] extends object ? { t: 'o'; props: Val_2030 } + : { t: 'u' }; +}; +type EV_2030 = Val_2030; + +interface Registry_20_30 { + entities: Map; + validators: EV_2030; + paths: Set; + merged: DeepMerge_2030; +} + +type CK_2030 = `p20.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_30, Registry_20_30, CK_2030, EP_2030, EV_2030, DeepMerge_2030 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-31.ts new file mode 100644 index 00000000..870d29c1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-31.ts @@ -0,0 +1,50 @@ +// pkg-20/types-31 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2031 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2031 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_31 | null; children: Entity_20_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2031: number; y2031: string; z2031: boolean }; +} + +type Path_2031 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2031}` }[keyof T & string] : never; +type EP_2031 = Path_2031; + +type Val_2031 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2031 } + : T[K] extends object ? { t: 'o'; props: Val_2031 } + : { t: 'u' }; +}; +type EV_2031 = Val_2031; + +interface Registry_20_31 { + entities: Map; + validators: EV_2031; + paths: Set; + merged: DeepMerge_2031; +} + +type CK_2031 = `p20.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_31, Registry_20_31, CK_2031, EP_2031, EV_2031, DeepMerge_2031 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-32.ts new file mode 100644 index 00000000..d7dcfefe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-32.ts @@ -0,0 +1,50 @@ +// pkg-20/types-32 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2032 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2032 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_32 | null; children: Entity_20_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2032: number; y2032: string; z2032: boolean }; +} + +type Path_2032 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2032}` }[keyof T & string] : never; +type EP_2032 = Path_2032; + +type Val_2032 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2032 } + : T[K] extends object ? { t: 'o'; props: Val_2032 } + : { t: 'u' }; +}; +type EV_2032 = Val_2032; + +interface Registry_20_32 { + entities: Map; + validators: EV_2032; + paths: Set; + merged: DeepMerge_2032; +} + +type CK_2032 = `p20.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_32, Registry_20_32, CK_2032, EP_2032, EV_2032, DeepMerge_2032 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-33.ts new file mode 100644 index 00000000..2f16eada --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-33.ts @@ -0,0 +1,50 @@ +// pkg-20/types-33 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2033 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2033 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_33 | null; children: Entity_20_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2033: number; y2033: string; z2033: boolean }; +} + +type Path_2033 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2033}` }[keyof T & string] : never; +type EP_2033 = Path_2033; + +type Val_2033 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2033 } + : T[K] extends object ? { t: 'o'; props: Val_2033 } + : { t: 'u' }; +}; +type EV_2033 = Val_2033; + +interface Registry_20_33 { + entities: Map; + validators: EV_2033; + paths: Set; + merged: DeepMerge_2033; +} + +type CK_2033 = `p20.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_33, Registry_20_33, CK_2033, EP_2033, EV_2033, DeepMerge_2033 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-34.ts new file mode 100644 index 00000000..bc5ec992 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-34.ts @@ -0,0 +1,50 @@ +// pkg-20/types-34 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2034 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2034 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_34 | null; children: Entity_20_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2034: number; y2034: string; z2034: boolean }; +} + +type Path_2034 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2034}` }[keyof T & string] : never; +type EP_2034 = Path_2034; + +type Val_2034 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2034 } + : T[K] extends object ? { t: 'o'; props: Val_2034 } + : { t: 'u' }; +}; +type EV_2034 = Val_2034; + +interface Registry_20_34 { + entities: Map; + validators: EV_2034; + paths: Set; + merged: DeepMerge_2034; +} + +type CK_2034 = `p20.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_34, Registry_20_34, CK_2034, EP_2034, EV_2034, DeepMerge_2034 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-35.ts new file mode 100644 index 00000000..04d73dcf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-35.ts @@ -0,0 +1,50 @@ +// pkg-20/types-35 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2035 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2035 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_35 | null; children: Entity_20_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2035: number; y2035: string; z2035: boolean }; +} + +type Path_2035 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2035}` }[keyof T & string] : never; +type EP_2035 = Path_2035; + +type Val_2035 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2035 } + : T[K] extends object ? { t: 'o'; props: Val_2035 } + : { t: 'u' }; +}; +type EV_2035 = Val_2035; + +interface Registry_20_35 { + entities: Map; + validators: EV_2035; + paths: Set; + merged: DeepMerge_2035; +} + +type CK_2035 = `p20.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_35, Registry_20_35, CK_2035, EP_2035, EV_2035, DeepMerge_2035 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-36.ts new file mode 100644 index 00000000..e2adbd32 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-36.ts @@ -0,0 +1,50 @@ +// pkg-20/types-36 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2036 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2036 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_36 | null; children: Entity_20_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2036: number; y2036: string; z2036: boolean }; +} + +type Path_2036 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2036}` }[keyof T & string] : never; +type EP_2036 = Path_2036; + +type Val_2036 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2036 } + : T[K] extends object ? { t: 'o'; props: Val_2036 } + : { t: 'u' }; +}; +type EV_2036 = Val_2036; + +interface Registry_20_36 { + entities: Map; + validators: EV_2036; + paths: Set; + merged: DeepMerge_2036; +} + +type CK_2036 = `p20.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_36, Registry_20_36, CK_2036, EP_2036, EV_2036, DeepMerge_2036 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-37.ts new file mode 100644 index 00000000..7dd03563 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-37.ts @@ -0,0 +1,50 @@ +// pkg-20/types-37 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2037 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2037 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_37 | null; children: Entity_20_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2037: number; y2037: string; z2037: boolean }; +} + +type Path_2037 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2037}` }[keyof T & string] : never; +type EP_2037 = Path_2037; + +type Val_2037 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2037 } + : T[K] extends object ? { t: 'o'; props: Val_2037 } + : { t: 'u' }; +}; +type EV_2037 = Val_2037; + +interface Registry_20_37 { + entities: Map; + validators: EV_2037; + paths: Set; + merged: DeepMerge_2037; +} + +type CK_2037 = `p20.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_37, Registry_20_37, CK_2037, EP_2037, EV_2037, DeepMerge_2037 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-38.ts new file mode 100644 index 00000000..809d1cd2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-38.ts @@ -0,0 +1,50 @@ +// pkg-20/types-38 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2038 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2038 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_38 | null; children: Entity_20_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2038: number; y2038: string; z2038: boolean }; +} + +type Path_2038 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2038}` }[keyof T & string] : never; +type EP_2038 = Path_2038; + +type Val_2038 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2038 } + : T[K] extends object ? { t: 'o'; props: Val_2038 } + : { t: 'u' }; +}; +type EV_2038 = Val_2038; + +interface Registry_20_38 { + entities: Map; + validators: EV_2038; + paths: Set; + merged: DeepMerge_2038; +} + +type CK_2038 = `p20.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_38, Registry_20_38, CK_2038, EP_2038, EV_2038, DeepMerge_2038 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-39.ts new file mode 100644 index 00000000..d4f06ae5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-39.ts @@ -0,0 +1,50 @@ +// pkg-20/types-39 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2039 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2039 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_39 | null; children: Entity_20_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2039: number; y2039: string; z2039: boolean }; +} + +type Path_2039 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2039}` }[keyof T & string] : never; +type EP_2039 = Path_2039; + +type Val_2039 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2039 } + : T[K] extends object ? { t: 'o'; props: Val_2039 } + : { t: 'u' }; +}; +type EV_2039 = Val_2039; + +interface Registry_20_39 { + entities: Map; + validators: EV_2039; + paths: Set; + merged: DeepMerge_2039; +} + +type CK_2039 = `p20.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_39, Registry_20_39, CK_2039, EP_2039, EV_2039, DeepMerge_2039 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-40.ts new file mode 100644 index 00000000..ad1eeeaa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-40.ts @@ -0,0 +1,50 @@ +// pkg-20/types-40 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2040 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2040 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_40 | null; children: Entity_20_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2040: number; y2040: string; z2040: boolean }; +} + +type Path_2040 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2040}` }[keyof T & string] : never; +type EP_2040 = Path_2040; + +type Val_2040 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2040 } + : T[K] extends object ? { t: 'o'; props: Val_2040 } + : { t: 'u' }; +}; +type EV_2040 = Val_2040; + +interface Registry_20_40 { + entities: Map; + validators: EV_2040; + paths: Set; + merged: DeepMerge_2040; +} + +type CK_2040 = `p20.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_40, Registry_20_40, CK_2040, EP_2040, EV_2040, DeepMerge_2040 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-41.ts new file mode 100644 index 00000000..5e09e581 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-41.ts @@ -0,0 +1,50 @@ +// pkg-20/types-41 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2041 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2041 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_41 | null; children: Entity_20_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2041: number; y2041: string; z2041: boolean }; +} + +type Path_2041 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2041}` }[keyof T & string] : never; +type EP_2041 = Path_2041; + +type Val_2041 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2041 } + : T[K] extends object ? { t: 'o'; props: Val_2041 } + : { t: 'u' }; +}; +type EV_2041 = Val_2041; + +interface Registry_20_41 { + entities: Map; + validators: EV_2041; + paths: Set; + merged: DeepMerge_2041; +} + +type CK_2041 = `p20.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_41, Registry_20_41, CK_2041, EP_2041, EV_2041, DeepMerge_2041 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-42.ts new file mode 100644 index 00000000..14e7203a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-42.ts @@ -0,0 +1,50 @@ +// pkg-20/types-42 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2042 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2042 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_42 | null; children: Entity_20_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2042: number; y2042: string; z2042: boolean }; +} + +type Path_2042 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2042}` }[keyof T & string] : never; +type EP_2042 = Path_2042; + +type Val_2042 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2042 } + : T[K] extends object ? { t: 'o'; props: Val_2042 } + : { t: 'u' }; +}; +type EV_2042 = Val_2042; + +interface Registry_20_42 { + entities: Map; + validators: EV_2042; + paths: Set; + merged: DeepMerge_2042; +} + +type CK_2042 = `p20.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_42, Registry_20_42, CK_2042, EP_2042, EV_2042, DeepMerge_2042 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-43.ts new file mode 100644 index 00000000..fda05417 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-43.ts @@ -0,0 +1,50 @@ +// pkg-20/types-43 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2043 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2043 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_43 | null; children: Entity_20_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2043: number; y2043: string; z2043: boolean }; +} + +type Path_2043 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2043}` }[keyof T & string] : never; +type EP_2043 = Path_2043; + +type Val_2043 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2043 } + : T[K] extends object ? { t: 'o'; props: Val_2043 } + : { t: 'u' }; +}; +type EV_2043 = Val_2043; + +interface Registry_20_43 { + entities: Map; + validators: EV_2043; + paths: Set; + merged: DeepMerge_2043; +} + +type CK_2043 = `p20.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_43, Registry_20_43, CK_2043, EP_2043, EV_2043, DeepMerge_2043 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-44.ts new file mode 100644 index 00000000..6f03cf3d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-44.ts @@ -0,0 +1,50 @@ +// pkg-20/types-44 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2044 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2044 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_44 | null; children: Entity_20_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2044: number; y2044: string; z2044: boolean }; +} + +type Path_2044 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2044}` }[keyof T & string] : never; +type EP_2044 = Path_2044; + +type Val_2044 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2044 } + : T[K] extends object ? { t: 'o'; props: Val_2044 } + : { t: 'u' }; +}; +type EV_2044 = Val_2044; + +interface Registry_20_44 { + entities: Map; + validators: EV_2044; + paths: Set; + merged: DeepMerge_2044; +} + +type CK_2044 = `p20.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_44, Registry_20_44, CK_2044, EP_2044, EV_2044, DeepMerge_2044 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-45.ts new file mode 100644 index 00000000..49f1ff89 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-45.ts @@ -0,0 +1,50 @@ +// pkg-20/types-45 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2045 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2045 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_45 | null; children: Entity_20_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2045: number; y2045: string; z2045: boolean }; +} + +type Path_2045 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2045}` }[keyof T & string] : never; +type EP_2045 = Path_2045; + +type Val_2045 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2045 } + : T[K] extends object ? { t: 'o'; props: Val_2045 } + : { t: 'u' }; +}; +type EV_2045 = Val_2045; + +interface Registry_20_45 { + entities: Map; + validators: EV_2045; + paths: Set; + merged: DeepMerge_2045; +} + +type CK_2045 = `p20.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_45, Registry_20_45, CK_2045, EP_2045, EV_2045, DeepMerge_2045 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-46.ts new file mode 100644 index 00000000..29708219 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-46.ts @@ -0,0 +1,50 @@ +// pkg-20/types-46 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2046 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2046 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_46 | null; children: Entity_20_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2046: number; y2046: string; z2046: boolean }; +} + +type Path_2046 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2046}` }[keyof T & string] : never; +type EP_2046 = Path_2046; + +type Val_2046 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2046 } + : T[K] extends object ? { t: 'o'; props: Val_2046 } + : { t: 'u' }; +}; +type EV_2046 = Val_2046; + +interface Registry_20_46 { + entities: Map; + validators: EV_2046; + paths: Set; + merged: DeepMerge_2046; +} + +type CK_2046 = `p20.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_46, Registry_20_46, CK_2046, EP_2046, EV_2046, DeepMerge_2046 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-47.ts new file mode 100644 index 00000000..b0f8975c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-47.ts @@ -0,0 +1,50 @@ +// pkg-20/types-47 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2047 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2047 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_47 | null; children: Entity_20_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2047: number; y2047: string; z2047: boolean }; +} + +type Path_2047 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2047}` }[keyof T & string] : never; +type EP_2047 = Path_2047; + +type Val_2047 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2047 } + : T[K] extends object ? { t: 'o'; props: Val_2047 } + : { t: 'u' }; +}; +type EV_2047 = Val_2047; + +interface Registry_20_47 { + entities: Map; + validators: EV_2047; + paths: Set; + merged: DeepMerge_2047; +} + +type CK_2047 = `p20.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_47, Registry_20_47, CK_2047, EP_2047, EV_2047, DeepMerge_2047 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-48.ts new file mode 100644 index 00000000..447c3154 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-48.ts @@ -0,0 +1,50 @@ +// pkg-20/types-48 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2048 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2048 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_48 | null; children: Entity_20_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2048: number; y2048: string; z2048: boolean }; +} + +type Path_2048 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2048}` }[keyof T & string] : never; +type EP_2048 = Path_2048; + +type Val_2048 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2048 } + : T[K] extends object ? { t: 'o'; props: Val_2048 } + : { t: 'u' }; +}; +type EV_2048 = Val_2048; + +interface Registry_20_48 { + entities: Map; + validators: EV_2048; + paths: Set; + merged: DeepMerge_2048; +} + +type CK_2048 = `p20.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_48, Registry_20_48, CK_2048, EP_2048, EV_2048, DeepMerge_2048 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-49.ts new file mode 100644 index 00000000..758b59d3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-49.ts @@ -0,0 +1,50 @@ +// pkg-20/types-49 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2049 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2049 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_49 | null; children: Entity_20_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2049: number; y2049: string; z2049: boolean }; +} + +type Path_2049 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2049}` }[keyof T & string] : never; +type EP_2049 = Path_2049; + +type Val_2049 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2049 } + : T[K] extends object ? { t: 'o'; props: Val_2049 } + : { t: 'u' }; +}; +type EV_2049 = Val_2049; + +interface Registry_20_49 { + entities: Map; + validators: EV_2049; + paths: Set; + merged: DeepMerge_2049; +} + +type CK_2049 = `p20.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_49, Registry_20_49, CK_2049, EP_2049, EV_2049, DeepMerge_2049 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-20/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-20/types-50.ts new file mode 100644 index 00000000..dde61296 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-20/types-50.ts @@ -0,0 +1,50 @@ +// pkg-20/types-50 - heavy interconnected types + +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; +import type { Entity_17_01, Registry_17_01 } from '../pkg-17/types-01'; +import type { Entity_17_10, Registry_17_10 } from '../pkg-17/types-10'; +import type { Entity_17_20, Registry_17_20 } from '../pkg-17/types-20'; + +type DeepMerge_2050 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2050 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_20_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_20_50 | null; children: Entity_20_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2050: number; y2050: string; z2050: boolean }; +} + +type Path_2050 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2050}` }[keyof T & string] : never; +type EP_2050 = Path_2050; + +type Val_2050 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2050 } + : T[K] extends object ? { t: 'o'; props: Val_2050 } + : { t: 'u' }; +}; +type EV_2050 = Val_2050; + +interface Registry_20_50 { + entities: Map; + validators: EV_2050; + paths: Set; + merged: DeepMerge_2050; +} + +type CK_2050 = `p20.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_20_50, Registry_20_50, CK_2050, EP_2050, EV_2050, DeepMerge_2050 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-21/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-01.ts new file mode 100644 index 00000000..6f066b1e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-01.ts @@ -0,0 +1,50 @@ +// pkg-21/types-01 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2101 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2101 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_01 | null; children: Entity_21_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2101: number; y2101: string; z2101: boolean }; +} + +type Path_2101 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2101}` }[keyof T & string] : never; +type EP_2101 = Path_2101; + +type Val_2101 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2101 } + : T[K] extends object ? { t: 'o'; props: Val_2101 } + : { t: 'u' }; +}; +type EV_2101 = Val_2101; + +interface Registry_21_01 { + entities: Map; + validators: EV_2101; + paths: Set; + merged: DeepMerge_2101; +} + +type CK_2101 = `p21.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_01, Registry_21_01, CK_2101, EP_2101, EV_2101, DeepMerge_2101 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-02.ts new file mode 100644 index 00000000..0057aeb8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-02.ts @@ -0,0 +1,50 @@ +// pkg-21/types-02 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2102 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2102 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_02 | null; children: Entity_21_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2102: number; y2102: string; z2102: boolean }; +} + +type Path_2102 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2102}` }[keyof T & string] : never; +type EP_2102 = Path_2102; + +type Val_2102 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2102 } + : T[K] extends object ? { t: 'o'; props: Val_2102 } + : { t: 'u' }; +}; +type EV_2102 = Val_2102; + +interface Registry_21_02 { + entities: Map; + validators: EV_2102; + paths: Set; + merged: DeepMerge_2102; +} + +type CK_2102 = `p21.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_02, Registry_21_02, CK_2102, EP_2102, EV_2102, DeepMerge_2102 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-03.ts new file mode 100644 index 00000000..f755d468 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-03.ts @@ -0,0 +1,50 @@ +// pkg-21/types-03 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2103 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2103 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_03 | null; children: Entity_21_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2103: number; y2103: string; z2103: boolean }; +} + +type Path_2103 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2103}` }[keyof T & string] : never; +type EP_2103 = Path_2103; + +type Val_2103 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2103 } + : T[K] extends object ? { t: 'o'; props: Val_2103 } + : { t: 'u' }; +}; +type EV_2103 = Val_2103; + +interface Registry_21_03 { + entities: Map; + validators: EV_2103; + paths: Set; + merged: DeepMerge_2103; +} + +type CK_2103 = `p21.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_03, Registry_21_03, CK_2103, EP_2103, EV_2103, DeepMerge_2103 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-04.ts new file mode 100644 index 00000000..9ddda125 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-04.ts @@ -0,0 +1,50 @@ +// pkg-21/types-04 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2104 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2104 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_04 | null; children: Entity_21_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2104: number; y2104: string; z2104: boolean }; +} + +type Path_2104 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2104}` }[keyof T & string] : never; +type EP_2104 = Path_2104; + +type Val_2104 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2104 } + : T[K] extends object ? { t: 'o'; props: Val_2104 } + : { t: 'u' }; +}; +type EV_2104 = Val_2104; + +interface Registry_21_04 { + entities: Map; + validators: EV_2104; + paths: Set; + merged: DeepMerge_2104; +} + +type CK_2104 = `p21.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_04, Registry_21_04, CK_2104, EP_2104, EV_2104, DeepMerge_2104 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-05.ts new file mode 100644 index 00000000..c234fda5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-05.ts @@ -0,0 +1,50 @@ +// pkg-21/types-05 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2105 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2105 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_05 | null; children: Entity_21_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2105: number; y2105: string; z2105: boolean }; +} + +type Path_2105 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2105}` }[keyof T & string] : never; +type EP_2105 = Path_2105; + +type Val_2105 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2105 } + : T[K] extends object ? { t: 'o'; props: Val_2105 } + : { t: 'u' }; +}; +type EV_2105 = Val_2105; + +interface Registry_21_05 { + entities: Map; + validators: EV_2105; + paths: Set; + merged: DeepMerge_2105; +} + +type CK_2105 = `p21.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_05, Registry_21_05, CK_2105, EP_2105, EV_2105, DeepMerge_2105 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-06.ts new file mode 100644 index 00000000..14132f87 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-06.ts @@ -0,0 +1,50 @@ +// pkg-21/types-06 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2106 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2106 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_06 | null; children: Entity_21_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2106: number; y2106: string; z2106: boolean }; +} + +type Path_2106 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2106}` }[keyof T & string] : never; +type EP_2106 = Path_2106; + +type Val_2106 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2106 } + : T[K] extends object ? { t: 'o'; props: Val_2106 } + : { t: 'u' }; +}; +type EV_2106 = Val_2106; + +interface Registry_21_06 { + entities: Map; + validators: EV_2106; + paths: Set; + merged: DeepMerge_2106; +} + +type CK_2106 = `p21.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_06, Registry_21_06, CK_2106, EP_2106, EV_2106, DeepMerge_2106 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-07.ts new file mode 100644 index 00000000..9942b7d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-07.ts @@ -0,0 +1,50 @@ +// pkg-21/types-07 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2107 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2107 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_07 | null; children: Entity_21_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2107: number; y2107: string; z2107: boolean }; +} + +type Path_2107 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2107}` }[keyof T & string] : never; +type EP_2107 = Path_2107; + +type Val_2107 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2107 } + : T[K] extends object ? { t: 'o'; props: Val_2107 } + : { t: 'u' }; +}; +type EV_2107 = Val_2107; + +interface Registry_21_07 { + entities: Map; + validators: EV_2107; + paths: Set; + merged: DeepMerge_2107; +} + +type CK_2107 = `p21.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_07, Registry_21_07, CK_2107, EP_2107, EV_2107, DeepMerge_2107 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-08.ts new file mode 100644 index 00000000..396efdc0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-08.ts @@ -0,0 +1,50 @@ +// pkg-21/types-08 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2108 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2108 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_08 | null; children: Entity_21_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2108: number; y2108: string; z2108: boolean }; +} + +type Path_2108 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2108}` }[keyof T & string] : never; +type EP_2108 = Path_2108; + +type Val_2108 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2108 } + : T[K] extends object ? { t: 'o'; props: Val_2108 } + : { t: 'u' }; +}; +type EV_2108 = Val_2108; + +interface Registry_21_08 { + entities: Map; + validators: EV_2108; + paths: Set; + merged: DeepMerge_2108; +} + +type CK_2108 = `p21.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_08, Registry_21_08, CK_2108, EP_2108, EV_2108, DeepMerge_2108 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-09.ts new file mode 100644 index 00000000..20acf5b3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-09.ts @@ -0,0 +1,50 @@ +// pkg-21/types-09 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2109 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2109 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_09 | null; children: Entity_21_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2109: number; y2109: string; z2109: boolean }; +} + +type Path_2109 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2109}` }[keyof T & string] : never; +type EP_2109 = Path_2109; + +type Val_2109 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2109 } + : T[K] extends object ? { t: 'o'; props: Val_2109 } + : { t: 'u' }; +}; +type EV_2109 = Val_2109; + +interface Registry_21_09 { + entities: Map; + validators: EV_2109; + paths: Set; + merged: DeepMerge_2109; +} + +type CK_2109 = `p21.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_09, Registry_21_09, CK_2109, EP_2109, EV_2109, DeepMerge_2109 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-10.ts new file mode 100644 index 00000000..a69a58b8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-10.ts @@ -0,0 +1,50 @@ +// pkg-21/types-10 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2110 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2110 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_10 | null; children: Entity_21_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2110: number; y2110: string; z2110: boolean }; +} + +type Path_2110 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2110}` }[keyof T & string] : never; +type EP_2110 = Path_2110; + +type Val_2110 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2110 } + : T[K] extends object ? { t: 'o'; props: Val_2110 } + : { t: 'u' }; +}; +type EV_2110 = Val_2110; + +interface Registry_21_10 { + entities: Map; + validators: EV_2110; + paths: Set; + merged: DeepMerge_2110; +} + +type CK_2110 = `p21.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_10, Registry_21_10, CK_2110, EP_2110, EV_2110, DeepMerge_2110 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-11.ts new file mode 100644 index 00000000..cb331879 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-11.ts @@ -0,0 +1,50 @@ +// pkg-21/types-11 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2111 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2111 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_11 | null; children: Entity_21_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2111: number; y2111: string; z2111: boolean }; +} + +type Path_2111 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2111}` }[keyof T & string] : never; +type EP_2111 = Path_2111; + +type Val_2111 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2111 } + : T[K] extends object ? { t: 'o'; props: Val_2111 } + : { t: 'u' }; +}; +type EV_2111 = Val_2111; + +interface Registry_21_11 { + entities: Map; + validators: EV_2111; + paths: Set; + merged: DeepMerge_2111; +} + +type CK_2111 = `p21.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_11, Registry_21_11, CK_2111, EP_2111, EV_2111, DeepMerge_2111 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-12.ts new file mode 100644 index 00000000..20236976 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-12.ts @@ -0,0 +1,50 @@ +// pkg-21/types-12 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2112 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2112 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_12 | null; children: Entity_21_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2112: number; y2112: string; z2112: boolean }; +} + +type Path_2112 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2112}` }[keyof T & string] : never; +type EP_2112 = Path_2112; + +type Val_2112 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2112 } + : T[K] extends object ? { t: 'o'; props: Val_2112 } + : { t: 'u' }; +}; +type EV_2112 = Val_2112; + +interface Registry_21_12 { + entities: Map; + validators: EV_2112; + paths: Set; + merged: DeepMerge_2112; +} + +type CK_2112 = `p21.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_12, Registry_21_12, CK_2112, EP_2112, EV_2112, DeepMerge_2112 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-13.ts new file mode 100644 index 00000000..ac8457f8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-13.ts @@ -0,0 +1,50 @@ +// pkg-21/types-13 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2113 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2113 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_13 | null; children: Entity_21_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2113: number; y2113: string; z2113: boolean }; +} + +type Path_2113 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2113}` }[keyof T & string] : never; +type EP_2113 = Path_2113; + +type Val_2113 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2113 } + : T[K] extends object ? { t: 'o'; props: Val_2113 } + : { t: 'u' }; +}; +type EV_2113 = Val_2113; + +interface Registry_21_13 { + entities: Map; + validators: EV_2113; + paths: Set; + merged: DeepMerge_2113; +} + +type CK_2113 = `p21.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_13, Registry_21_13, CK_2113, EP_2113, EV_2113, DeepMerge_2113 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-14.ts new file mode 100644 index 00000000..0af7999e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-14.ts @@ -0,0 +1,50 @@ +// pkg-21/types-14 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2114 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2114 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_14 | null; children: Entity_21_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2114: number; y2114: string; z2114: boolean }; +} + +type Path_2114 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2114}` }[keyof T & string] : never; +type EP_2114 = Path_2114; + +type Val_2114 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2114 } + : T[K] extends object ? { t: 'o'; props: Val_2114 } + : { t: 'u' }; +}; +type EV_2114 = Val_2114; + +interface Registry_21_14 { + entities: Map; + validators: EV_2114; + paths: Set; + merged: DeepMerge_2114; +} + +type CK_2114 = `p21.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_14, Registry_21_14, CK_2114, EP_2114, EV_2114, DeepMerge_2114 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-15.ts new file mode 100644 index 00000000..16d05c4a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-15.ts @@ -0,0 +1,50 @@ +// pkg-21/types-15 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2115 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2115 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_15 | null; children: Entity_21_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2115: number; y2115: string; z2115: boolean }; +} + +type Path_2115 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2115}` }[keyof T & string] : never; +type EP_2115 = Path_2115; + +type Val_2115 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2115 } + : T[K] extends object ? { t: 'o'; props: Val_2115 } + : { t: 'u' }; +}; +type EV_2115 = Val_2115; + +interface Registry_21_15 { + entities: Map; + validators: EV_2115; + paths: Set; + merged: DeepMerge_2115; +} + +type CK_2115 = `p21.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_15, Registry_21_15, CK_2115, EP_2115, EV_2115, DeepMerge_2115 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-16.ts new file mode 100644 index 00000000..8347b9d6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-16.ts @@ -0,0 +1,50 @@ +// pkg-21/types-16 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2116 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2116 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_16 | null; children: Entity_21_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2116: number; y2116: string; z2116: boolean }; +} + +type Path_2116 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2116}` }[keyof T & string] : never; +type EP_2116 = Path_2116; + +type Val_2116 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2116 } + : T[K] extends object ? { t: 'o'; props: Val_2116 } + : { t: 'u' }; +}; +type EV_2116 = Val_2116; + +interface Registry_21_16 { + entities: Map; + validators: EV_2116; + paths: Set; + merged: DeepMerge_2116; +} + +type CK_2116 = `p21.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_16, Registry_21_16, CK_2116, EP_2116, EV_2116, DeepMerge_2116 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-17.ts new file mode 100644 index 00000000..c819883b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-17.ts @@ -0,0 +1,50 @@ +// pkg-21/types-17 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2117 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2117 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_17 | null; children: Entity_21_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2117: number; y2117: string; z2117: boolean }; +} + +type Path_2117 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2117}` }[keyof T & string] : never; +type EP_2117 = Path_2117; + +type Val_2117 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2117 } + : T[K] extends object ? { t: 'o'; props: Val_2117 } + : { t: 'u' }; +}; +type EV_2117 = Val_2117; + +interface Registry_21_17 { + entities: Map; + validators: EV_2117; + paths: Set; + merged: DeepMerge_2117; +} + +type CK_2117 = `p21.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_17, Registry_21_17, CK_2117, EP_2117, EV_2117, DeepMerge_2117 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-18.ts new file mode 100644 index 00000000..1efdce09 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-18.ts @@ -0,0 +1,50 @@ +// pkg-21/types-18 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2118 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2118 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_18 | null; children: Entity_21_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2118: number; y2118: string; z2118: boolean }; +} + +type Path_2118 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2118}` }[keyof T & string] : never; +type EP_2118 = Path_2118; + +type Val_2118 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2118 } + : T[K] extends object ? { t: 'o'; props: Val_2118 } + : { t: 'u' }; +}; +type EV_2118 = Val_2118; + +interface Registry_21_18 { + entities: Map; + validators: EV_2118; + paths: Set; + merged: DeepMerge_2118; +} + +type CK_2118 = `p21.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_18, Registry_21_18, CK_2118, EP_2118, EV_2118, DeepMerge_2118 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-19.ts new file mode 100644 index 00000000..87e24867 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-19.ts @@ -0,0 +1,50 @@ +// pkg-21/types-19 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2119 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2119 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_19 | null; children: Entity_21_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2119: number; y2119: string; z2119: boolean }; +} + +type Path_2119 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2119}` }[keyof T & string] : never; +type EP_2119 = Path_2119; + +type Val_2119 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2119 } + : T[K] extends object ? { t: 'o'; props: Val_2119 } + : { t: 'u' }; +}; +type EV_2119 = Val_2119; + +interface Registry_21_19 { + entities: Map; + validators: EV_2119; + paths: Set; + merged: DeepMerge_2119; +} + +type CK_2119 = `p21.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_19, Registry_21_19, CK_2119, EP_2119, EV_2119, DeepMerge_2119 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-20.ts new file mode 100644 index 00000000..d08c8451 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-20.ts @@ -0,0 +1,50 @@ +// pkg-21/types-20 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2120 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2120 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_20 | null; children: Entity_21_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2120: number; y2120: string; z2120: boolean }; +} + +type Path_2120 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2120}` }[keyof T & string] : never; +type EP_2120 = Path_2120; + +type Val_2120 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2120 } + : T[K] extends object ? { t: 'o'; props: Val_2120 } + : { t: 'u' }; +}; +type EV_2120 = Val_2120; + +interface Registry_21_20 { + entities: Map; + validators: EV_2120; + paths: Set; + merged: DeepMerge_2120; +} + +type CK_2120 = `p21.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_20, Registry_21_20, CK_2120, EP_2120, EV_2120, DeepMerge_2120 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-21.ts new file mode 100644 index 00000000..9443cb78 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-21.ts @@ -0,0 +1,50 @@ +// pkg-21/types-21 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2121 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2121 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_21 | null; children: Entity_21_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2121: number; y2121: string; z2121: boolean }; +} + +type Path_2121 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2121}` }[keyof T & string] : never; +type EP_2121 = Path_2121; + +type Val_2121 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2121 } + : T[K] extends object ? { t: 'o'; props: Val_2121 } + : { t: 'u' }; +}; +type EV_2121 = Val_2121; + +interface Registry_21_21 { + entities: Map; + validators: EV_2121; + paths: Set; + merged: DeepMerge_2121; +} + +type CK_2121 = `p21.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_21, Registry_21_21, CK_2121, EP_2121, EV_2121, DeepMerge_2121 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-22.ts new file mode 100644 index 00000000..af7ce10b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-22.ts @@ -0,0 +1,50 @@ +// pkg-21/types-22 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2122 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2122 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_22 | null; children: Entity_21_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2122: number; y2122: string; z2122: boolean }; +} + +type Path_2122 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2122}` }[keyof T & string] : never; +type EP_2122 = Path_2122; + +type Val_2122 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2122 } + : T[K] extends object ? { t: 'o'; props: Val_2122 } + : { t: 'u' }; +}; +type EV_2122 = Val_2122; + +interface Registry_21_22 { + entities: Map; + validators: EV_2122; + paths: Set; + merged: DeepMerge_2122; +} + +type CK_2122 = `p21.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_22, Registry_21_22, CK_2122, EP_2122, EV_2122, DeepMerge_2122 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-23.ts new file mode 100644 index 00000000..8b4a73fa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-23.ts @@ -0,0 +1,50 @@ +// pkg-21/types-23 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2123 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2123 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_23 | null; children: Entity_21_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2123: number; y2123: string; z2123: boolean }; +} + +type Path_2123 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2123}` }[keyof T & string] : never; +type EP_2123 = Path_2123; + +type Val_2123 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2123 } + : T[K] extends object ? { t: 'o'; props: Val_2123 } + : { t: 'u' }; +}; +type EV_2123 = Val_2123; + +interface Registry_21_23 { + entities: Map; + validators: EV_2123; + paths: Set; + merged: DeepMerge_2123; +} + +type CK_2123 = `p21.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_23, Registry_21_23, CK_2123, EP_2123, EV_2123, DeepMerge_2123 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-24.ts new file mode 100644 index 00000000..a86df6c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-24.ts @@ -0,0 +1,50 @@ +// pkg-21/types-24 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2124 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2124 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_24 | null; children: Entity_21_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2124: number; y2124: string; z2124: boolean }; +} + +type Path_2124 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2124}` }[keyof T & string] : never; +type EP_2124 = Path_2124; + +type Val_2124 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2124 } + : T[K] extends object ? { t: 'o'; props: Val_2124 } + : { t: 'u' }; +}; +type EV_2124 = Val_2124; + +interface Registry_21_24 { + entities: Map; + validators: EV_2124; + paths: Set; + merged: DeepMerge_2124; +} + +type CK_2124 = `p21.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_24, Registry_21_24, CK_2124, EP_2124, EV_2124, DeepMerge_2124 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-25.ts new file mode 100644 index 00000000..8c95c284 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-25.ts @@ -0,0 +1,50 @@ +// pkg-21/types-25 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2125 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2125 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_25 | null; children: Entity_21_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2125: number; y2125: string; z2125: boolean }; +} + +type Path_2125 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2125}` }[keyof T & string] : never; +type EP_2125 = Path_2125; + +type Val_2125 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2125 } + : T[K] extends object ? { t: 'o'; props: Val_2125 } + : { t: 'u' }; +}; +type EV_2125 = Val_2125; + +interface Registry_21_25 { + entities: Map; + validators: EV_2125; + paths: Set; + merged: DeepMerge_2125; +} + +type CK_2125 = `p21.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_25, Registry_21_25, CK_2125, EP_2125, EV_2125, DeepMerge_2125 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-26.ts new file mode 100644 index 00000000..ee5f7e09 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-26.ts @@ -0,0 +1,50 @@ +// pkg-21/types-26 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2126 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2126 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_26 | null; children: Entity_21_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2126: number; y2126: string; z2126: boolean }; +} + +type Path_2126 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2126}` }[keyof T & string] : never; +type EP_2126 = Path_2126; + +type Val_2126 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2126 } + : T[K] extends object ? { t: 'o'; props: Val_2126 } + : { t: 'u' }; +}; +type EV_2126 = Val_2126; + +interface Registry_21_26 { + entities: Map; + validators: EV_2126; + paths: Set; + merged: DeepMerge_2126; +} + +type CK_2126 = `p21.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_26, Registry_21_26, CK_2126, EP_2126, EV_2126, DeepMerge_2126 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-27.ts new file mode 100644 index 00000000..8eea2df5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-27.ts @@ -0,0 +1,50 @@ +// pkg-21/types-27 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2127 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2127 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_27 | null; children: Entity_21_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2127: number; y2127: string; z2127: boolean }; +} + +type Path_2127 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2127}` }[keyof T & string] : never; +type EP_2127 = Path_2127; + +type Val_2127 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2127 } + : T[K] extends object ? { t: 'o'; props: Val_2127 } + : { t: 'u' }; +}; +type EV_2127 = Val_2127; + +interface Registry_21_27 { + entities: Map; + validators: EV_2127; + paths: Set; + merged: DeepMerge_2127; +} + +type CK_2127 = `p21.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_27, Registry_21_27, CK_2127, EP_2127, EV_2127, DeepMerge_2127 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-28.ts new file mode 100644 index 00000000..cb43ef1a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-28.ts @@ -0,0 +1,50 @@ +// pkg-21/types-28 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2128 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2128 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_28 | null; children: Entity_21_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2128: number; y2128: string; z2128: boolean }; +} + +type Path_2128 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2128}` }[keyof T & string] : never; +type EP_2128 = Path_2128; + +type Val_2128 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2128 } + : T[K] extends object ? { t: 'o'; props: Val_2128 } + : { t: 'u' }; +}; +type EV_2128 = Val_2128; + +interface Registry_21_28 { + entities: Map; + validators: EV_2128; + paths: Set; + merged: DeepMerge_2128; +} + +type CK_2128 = `p21.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_28, Registry_21_28, CK_2128, EP_2128, EV_2128, DeepMerge_2128 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-29.ts new file mode 100644 index 00000000..cd65a58b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-29.ts @@ -0,0 +1,50 @@ +// pkg-21/types-29 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2129 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2129 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_29 | null; children: Entity_21_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2129: number; y2129: string; z2129: boolean }; +} + +type Path_2129 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2129}` }[keyof T & string] : never; +type EP_2129 = Path_2129; + +type Val_2129 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2129 } + : T[K] extends object ? { t: 'o'; props: Val_2129 } + : { t: 'u' }; +}; +type EV_2129 = Val_2129; + +interface Registry_21_29 { + entities: Map; + validators: EV_2129; + paths: Set; + merged: DeepMerge_2129; +} + +type CK_2129 = `p21.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_29, Registry_21_29, CK_2129, EP_2129, EV_2129, DeepMerge_2129 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-30.ts new file mode 100644 index 00000000..a5d1a8c0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-30.ts @@ -0,0 +1,50 @@ +// pkg-21/types-30 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2130 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2130 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_30 | null; children: Entity_21_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2130: number; y2130: string; z2130: boolean }; +} + +type Path_2130 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2130}` }[keyof T & string] : never; +type EP_2130 = Path_2130; + +type Val_2130 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2130 } + : T[K] extends object ? { t: 'o'; props: Val_2130 } + : { t: 'u' }; +}; +type EV_2130 = Val_2130; + +interface Registry_21_30 { + entities: Map; + validators: EV_2130; + paths: Set; + merged: DeepMerge_2130; +} + +type CK_2130 = `p21.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_30, Registry_21_30, CK_2130, EP_2130, EV_2130, DeepMerge_2130 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-31.ts new file mode 100644 index 00000000..30c2092d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-31.ts @@ -0,0 +1,50 @@ +// pkg-21/types-31 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2131 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2131 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_31 | null; children: Entity_21_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2131: number; y2131: string; z2131: boolean }; +} + +type Path_2131 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2131}` }[keyof T & string] : never; +type EP_2131 = Path_2131; + +type Val_2131 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2131 } + : T[K] extends object ? { t: 'o'; props: Val_2131 } + : { t: 'u' }; +}; +type EV_2131 = Val_2131; + +interface Registry_21_31 { + entities: Map; + validators: EV_2131; + paths: Set; + merged: DeepMerge_2131; +} + +type CK_2131 = `p21.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_31, Registry_21_31, CK_2131, EP_2131, EV_2131, DeepMerge_2131 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-32.ts new file mode 100644 index 00000000..5dcebe87 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-32.ts @@ -0,0 +1,50 @@ +// pkg-21/types-32 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2132 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2132 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_32 | null; children: Entity_21_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2132: number; y2132: string; z2132: boolean }; +} + +type Path_2132 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2132}` }[keyof T & string] : never; +type EP_2132 = Path_2132; + +type Val_2132 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2132 } + : T[K] extends object ? { t: 'o'; props: Val_2132 } + : { t: 'u' }; +}; +type EV_2132 = Val_2132; + +interface Registry_21_32 { + entities: Map; + validators: EV_2132; + paths: Set; + merged: DeepMerge_2132; +} + +type CK_2132 = `p21.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_32, Registry_21_32, CK_2132, EP_2132, EV_2132, DeepMerge_2132 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-33.ts new file mode 100644 index 00000000..260d27a4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-33.ts @@ -0,0 +1,50 @@ +// pkg-21/types-33 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2133 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2133 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_33 | null; children: Entity_21_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2133: number; y2133: string; z2133: boolean }; +} + +type Path_2133 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2133}` }[keyof T & string] : never; +type EP_2133 = Path_2133; + +type Val_2133 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2133 } + : T[K] extends object ? { t: 'o'; props: Val_2133 } + : { t: 'u' }; +}; +type EV_2133 = Val_2133; + +interface Registry_21_33 { + entities: Map; + validators: EV_2133; + paths: Set; + merged: DeepMerge_2133; +} + +type CK_2133 = `p21.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_33, Registry_21_33, CK_2133, EP_2133, EV_2133, DeepMerge_2133 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-34.ts new file mode 100644 index 00000000..1393433d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-34.ts @@ -0,0 +1,50 @@ +// pkg-21/types-34 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2134 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2134 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_34 | null; children: Entity_21_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2134: number; y2134: string; z2134: boolean }; +} + +type Path_2134 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2134}` }[keyof T & string] : never; +type EP_2134 = Path_2134; + +type Val_2134 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2134 } + : T[K] extends object ? { t: 'o'; props: Val_2134 } + : { t: 'u' }; +}; +type EV_2134 = Val_2134; + +interface Registry_21_34 { + entities: Map; + validators: EV_2134; + paths: Set; + merged: DeepMerge_2134; +} + +type CK_2134 = `p21.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_34, Registry_21_34, CK_2134, EP_2134, EV_2134, DeepMerge_2134 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-35.ts new file mode 100644 index 00000000..44f8d28c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-35.ts @@ -0,0 +1,50 @@ +// pkg-21/types-35 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2135 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2135 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_35 | null; children: Entity_21_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2135: number; y2135: string; z2135: boolean }; +} + +type Path_2135 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2135}` }[keyof T & string] : never; +type EP_2135 = Path_2135; + +type Val_2135 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2135 } + : T[K] extends object ? { t: 'o'; props: Val_2135 } + : { t: 'u' }; +}; +type EV_2135 = Val_2135; + +interface Registry_21_35 { + entities: Map; + validators: EV_2135; + paths: Set; + merged: DeepMerge_2135; +} + +type CK_2135 = `p21.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_35, Registry_21_35, CK_2135, EP_2135, EV_2135, DeepMerge_2135 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-36.ts new file mode 100644 index 00000000..f79dc91c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-36.ts @@ -0,0 +1,50 @@ +// pkg-21/types-36 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2136 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2136 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_36 | null; children: Entity_21_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2136: number; y2136: string; z2136: boolean }; +} + +type Path_2136 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2136}` }[keyof T & string] : never; +type EP_2136 = Path_2136; + +type Val_2136 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2136 } + : T[K] extends object ? { t: 'o'; props: Val_2136 } + : { t: 'u' }; +}; +type EV_2136 = Val_2136; + +interface Registry_21_36 { + entities: Map; + validators: EV_2136; + paths: Set; + merged: DeepMerge_2136; +} + +type CK_2136 = `p21.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_36, Registry_21_36, CK_2136, EP_2136, EV_2136, DeepMerge_2136 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-37.ts new file mode 100644 index 00000000..5f76ac27 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-37.ts @@ -0,0 +1,50 @@ +// pkg-21/types-37 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2137 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2137 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_37 | null; children: Entity_21_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2137: number; y2137: string; z2137: boolean }; +} + +type Path_2137 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2137}` }[keyof T & string] : never; +type EP_2137 = Path_2137; + +type Val_2137 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2137 } + : T[K] extends object ? { t: 'o'; props: Val_2137 } + : { t: 'u' }; +}; +type EV_2137 = Val_2137; + +interface Registry_21_37 { + entities: Map; + validators: EV_2137; + paths: Set; + merged: DeepMerge_2137; +} + +type CK_2137 = `p21.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_37, Registry_21_37, CK_2137, EP_2137, EV_2137, DeepMerge_2137 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-38.ts new file mode 100644 index 00000000..a5373cd9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-38.ts @@ -0,0 +1,50 @@ +// pkg-21/types-38 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2138 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2138 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_38 | null; children: Entity_21_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2138: number; y2138: string; z2138: boolean }; +} + +type Path_2138 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2138}` }[keyof T & string] : never; +type EP_2138 = Path_2138; + +type Val_2138 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2138 } + : T[K] extends object ? { t: 'o'; props: Val_2138 } + : { t: 'u' }; +}; +type EV_2138 = Val_2138; + +interface Registry_21_38 { + entities: Map; + validators: EV_2138; + paths: Set; + merged: DeepMerge_2138; +} + +type CK_2138 = `p21.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_38, Registry_21_38, CK_2138, EP_2138, EV_2138, DeepMerge_2138 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-39.ts new file mode 100644 index 00000000..d5e4c81e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-39.ts @@ -0,0 +1,50 @@ +// pkg-21/types-39 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2139 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2139 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_39 | null; children: Entity_21_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2139: number; y2139: string; z2139: boolean }; +} + +type Path_2139 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2139}` }[keyof T & string] : never; +type EP_2139 = Path_2139; + +type Val_2139 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2139 } + : T[K] extends object ? { t: 'o'; props: Val_2139 } + : { t: 'u' }; +}; +type EV_2139 = Val_2139; + +interface Registry_21_39 { + entities: Map; + validators: EV_2139; + paths: Set; + merged: DeepMerge_2139; +} + +type CK_2139 = `p21.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_39, Registry_21_39, CK_2139, EP_2139, EV_2139, DeepMerge_2139 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-40.ts new file mode 100644 index 00000000..e7b2aec6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-40.ts @@ -0,0 +1,50 @@ +// pkg-21/types-40 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2140 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2140 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_40 | null; children: Entity_21_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2140: number; y2140: string; z2140: boolean }; +} + +type Path_2140 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2140}` }[keyof T & string] : never; +type EP_2140 = Path_2140; + +type Val_2140 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2140 } + : T[K] extends object ? { t: 'o'; props: Val_2140 } + : { t: 'u' }; +}; +type EV_2140 = Val_2140; + +interface Registry_21_40 { + entities: Map; + validators: EV_2140; + paths: Set; + merged: DeepMerge_2140; +} + +type CK_2140 = `p21.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_40, Registry_21_40, CK_2140, EP_2140, EV_2140, DeepMerge_2140 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-41.ts new file mode 100644 index 00000000..f20206a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-41.ts @@ -0,0 +1,50 @@ +// pkg-21/types-41 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2141 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2141 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_41 | null; children: Entity_21_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2141: number; y2141: string; z2141: boolean }; +} + +type Path_2141 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2141}` }[keyof T & string] : never; +type EP_2141 = Path_2141; + +type Val_2141 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2141 } + : T[K] extends object ? { t: 'o'; props: Val_2141 } + : { t: 'u' }; +}; +type EV_2141 = Val_2141; + +interface Registry_21_41 { + entities: Map; + validators: EV_2141; + paths: Set; + merged: DeepMerge_2141; +} + +type CK_2141 = `p21.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_41, Registry_21_41, CK_2141, EP_2141, EV_2141, DeepMerge_2141 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-42.ts new file mode 100644 index 00000000..f908987e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-42.ts @@ -0,0 +1,50 @@ +// pkg-21/types-42 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2142 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2142 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_42 | null; children: Entity_21_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2142: number; y2142: string; z2142: boolean }; +} + +type Path_2142 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2142}` }[keyof T & string] : never; +type EP_2142 = Path_2142; + +type Val_2142 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2142 } + : T[K] extends object ? { t: 'o'; props: Val_2142 } + : { t: 'u' }; +}; +type EV_2142 = Val_2142; + +interface Registry_21_42 { + entities: Map; + validators: EV_2142; + paths: Set; + merged: DeepMerge_2142; +} + +type CK_2142 = `p21.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_42, Registry_21_42, CK_2142, EP_2142, EV_2142, DeepMerge_2142 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-43.ts new file mode 100644 index 00000000..abdf3a59 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-43.ts @@ -0,0 +1,50 @@ +// pkg-21/types-43 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2143 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2143 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_43 | null; children: Entity_21_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2143: number; y2143: string; z2143: boolean }; +} + +type Path_2143 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2143}` }[keyof T & string] : never; +type EP_2143 = Path_2143; + +type Val_2143 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2143 } + : T[K] extends object ? { t: 'o'; props: Val_2143 } + : { t: 'u' }; +}; +type EV_2143 = Val_2143; + +interface Registry_21_43 { + entities: Map; + validators: EV_2143; + paths: Set; + merged: DeepMerge_2143; +} + +type CK_2143 = `p21.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_43, Registry_21_43, CK_2143, EP_2143, EV_2143, DeepMerge_2143 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-44.ts new file mode 100644 index 00000000..286a36f2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-44.ts @@ -0,0 +1,50 @@ +// pkg-21/types-44 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2144 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2144 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_44 | null; children: Entity_21_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2144: number; y2144: string; z2144: boolean }; +} + +type Path_2144 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2144}` }[keyof T & string] : never; +type EP_2144 = Path_2144; + +type Val_2144 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2144 } + : T[K] extends object ? { t: 'o'; props: Val_2144 } + : { t: 'u' }; +}; +type EV_2144 = Val_2144; + +interface Registry_21_44 { + entities: Map; + validators: EV_2144; + paths: Set; + merged: DeepMerge_2144; +} + +type CK_2144 = `p21.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_44, Registry_21_44, CK_2144, EP_2144, EV_2144, DeepMerge_2144 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-45.ts new file mode 100644 index 00000000..0e8cde14 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-45.ts @@ -0,0 +1,50 @@ +// pkg-21/types-45 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2145 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2145 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_45 | null; children: Entity_21_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2145: number; y2145: string; z2145: boolean }; +} + +type Path_2145 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2145}` }[keyof T & string] : never; +type EP_2145 = Path_2145; + +type Val_2145 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2145 } + : T[K] extends object ? { t: 'o'; props: Val_2145 } + : { t: 'u' }; +}; +type EV_2145 = Val_2145; + +interface Registry_21_45 { + entities: Map; + validators: EV_2145; + paths: Set; + merged: DeepMerge_2145; +} + +type CK_2145 = `p21.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_45, Registry_21_45, CK_2145, EP_2145, EV_2145, DeepMerge_2145 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-46.ts new file mode 100644 index 00000000..d8089890 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-46.ts @@ -0,0 +1,50 @@ +// pkg-21/types-46 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2146 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2146 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_46 | null; children: Entity_21_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2146: number; y2146: string; z2146: boolean }; +} + +type Path_2146 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2146}` }[keyof T & string] : never; +type EP_2146 = Path_2146; + +type Val_2146 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2146 } + : T[K] extends object ? { t: 'o'; props: Val_2146 } + : { t: 'u' }; +}; +type EV_2146 = Val_2146; + +interface Registry_21_46 { + entities: Map; + validators: EV_2146; + paths: Set; + merged: DeepMerge_2146; +} + +type CK_2146 = `p21.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_46, Registry_21_46, CK_2146, EP_2146, EV_2146, DeepMerge_2146 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-47.ts new file mode 100644 index 00000000..3c4a7019 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-47.ts @@ -0,0 +1,50 @@ +// pkg-21/types-47 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2147 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2147 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_47 | null; children: Entity_21_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2147: number; y2147: string; z2147: boolean }; +} + +type Path_2147 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2147}` }[keyof T & string] : never; +type EP_2147 = Path_2147; + +type Val_2147 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2147 } + : T[K] extends object ? { t: 'o'; props: Val_2147 } + : { t: 'u' }; +}; +type EV_2147 = Val_2147; + +interface Registry_21_47 { + entities: Map; + validators: EV_2147; + paths: Set; + merged: DeepMerge_2147; +} + +type CK_2147 = `p21.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_47, Registry_21_47, CK_2147, EP_2147, EV_2147, DeepMerge_2147 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-48.ts new file mode 100644 index 00000000..045b56dc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-48.ts @@ -0,0 +1,50 @@ +// pkg-21/types-48 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2148 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2148 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_48 | null; children: Entity_21_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2148: number; y2148: string; z2148: boolean }; +} + +type Path_2148 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2148}` }[keyof T & string] : never; +type EP_2148 = Path_2148; + +type Val_2148 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2148 } + : T[K] extends object ? { t: 'o'; props: Val_2148 } + : { t: 'u' }; +}; +type EV_2148 = Val_2148; + +interface Registry_21_48 { + entities: Map; + validators: EV_2148; + paths: Set; + merged: DeepMerge_2148; +} + +type CK_2148 = `p21.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_48, Registry_21_48, CK_2148, EP_2148, EV_2148, DeepMerge_2148 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-49.ts new file mode 100644 index 00000000..25cd6a37 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-49.ts @@ -0,0 +1,50 @@ +// pkg-21/types-49 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2149 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2149 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_49 | null; children: Entity_21_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2149: number; y2149: string; z2149: boolean }; +} + +type Path_2149 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2149}` }[keyof T & string] : never; +type EP_2149 = Path_2149; + +type Val_2149 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2149 } + : T[K] extends object ? { t: 'o'; props: Val_2149 } + : { t: 'u' }; +}; +type EV_2149 = Val_2149; + +interface Registry_21_49 { + entities: Map; + validators: EV_2149; + paths: Set; + merged: DeepMerge_2149; +} + +type CK_2149 = `p21.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_49, Registry_21_49, CK_2149, EP_2149, EV_2149, DeepMerge_2149 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-21/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-21/types-50.ts new file mode 100644 index 00000000..745fab2b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-21/types-50.ts @@ -0,0 +1,50 @@ +// pkg-21/types-50 - heavy interconnected types + +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; +import type { Entity_18_01, Registry_18_01 } from '../pkg-18/types-01'; +import type { Entity_18_10, Registry_18_10 } from '../pkg-18/types-10'; +import type { Entity_18_20, Registry_18_20 } from '../pkg-18/types-20'; + +type DeepMerge_2150 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2150 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_21_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_21_50 | null; children: Entity_21_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2150: number; y2150: string; z2150: boolean }; +} + +type Path_2150 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2150}` }[keyof T & string] : never; +type EP_2150 = Path_2150; + +type Val_2150 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2150 } + : T[K] extends object ? { t: 'o'; props: Val_2150 } + : { t: 'u' }; +}; +type EV_2150 = Val_2150; + +interface Registry_21_50 { + entities: Map; + validators: EV_2150; + paths: Set; + merged: DeepMerge_2150; +} + +type CK_2150 = `p21.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_21_50, Registry_21_50, CK_2150, EP_2150, EV_2150, DeepMerge_2150 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-22/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-01.ts new file mode 100644 index 00000000..726f9e97 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-01.ts @@ -0,0 +1,50 @@ +// pkg-22/types-01 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2201 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2201 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_01 | null; children: Entity_22_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2201: number; y2201: string; z2201: boolean }; +} + +type Path_2201 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2201}` }[keyof T & string] : never; +type EP_2201 = Path_2201; + +type Val_2201 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2201 } + : T[K] extends object ? { t: 'o'; props: Val_2201 } + : { t: 'u' }; +}; +type EV_2201 = Val_2201; + +interface Registry_22_01 { + entities: Map; + validators: EV_2201; + paths: Set; + merged: DeepMerge_2201; +} + +type CK_2201 = `p22.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_01, Registry_22_01, CK_2201, EP_2201, EV_2201, DeepMerge_2201 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-02.ts new file mode 100644 index 00000000..31247409 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-02.ts @@ -0,0 +1,50 @@ +// pkg-22/types-02 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2202 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2202 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_02 | null; children: Entity_22_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2202: number; y2202: string; z2202: boolean }; +} + +type Path_2202 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2202}` }[keyof T & string] : never; +type EP_2202 = Path_2202; + +type Val_2202 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2202 } + : T[K] extends object ? { t: 'o'; props: Val_2202 } + : { t: 'u' }; +}; +type EV_2202 = Val_2202; + +interface Registry_22_02 { + entities: Map; + validators: EV_2202; + paths: Set; + merged: DeepMerge_2202; +} + +type CK_2202 = `p22.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_02, Registry_22_02, CK_2202, EP_2202, EV_2202, DeepMerge_2202 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-03.ts new file mode 100644 index 00000000..a529ccf1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-03.ts @@ -0,0 +1,50 @@ +// pkg-22/types-03 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2203 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2203 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_03 | null; children: Entity_22_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2203: number; y2203: string; z2203: boolean }; +} + +type Path_2203 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2203}` }[keyof T & string] : never; +type EP_2203 = Path_2203; + +type Val_2203 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2203 } + : T[K] extends object ? { t: 'o'; props: Val_2203 } + : { t: 'u' }; +}; +type EV_2203 = Val_2203; + +interface Registry_22_03 { + entities: Map; + validators: EV_2203; + paths: Set; + merged: DeepMerge_2203; +} + +type CK_2203 = `p22.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_03, Registry_22_03, CK_2203, EP_2203, EV_2203, DeepMerge_2203 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-04.ts new file mode 100644 index 00000000..872d9c24 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-04.ts @@ -0,0 +1,50 @@ +// pkg-22/types-04 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2204 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2204 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_04 | null; children: Entity_22_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2204: number; y2204: string; z2204: boolean }; +} + +type Path_2204 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2204}` }[keyof T & string] : never; +type EP_2204 = Path_2204; + +type Val_2204 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2204 } + : T[K] extends object ? { t: 'o'; props: Val_2204 } + : { t: 'u' }; +}; +type EV_2204 = Val_2204; + +interface Registry_22_04 { + entities: Map; + validators: EV_2204; + paths: Set; + merged: DeepMerge_2204; +} + +type CK_2204 = `p22.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_04, Registry_22_04, CK_2204, EP_2204, EV_2204, DeepMerge_2204 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-05.ts new file mode 100644 index 00000000..042fe3f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-05.ts @@ -0,0 +1,50 @@ +// pkg-22/types-05 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2205 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2205 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_05 | null; children: Entity_22_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2205: number; y2205: string; z2205: boolean }; +} + +type Path_2205 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2205}` }[keyof T & string] : never; +type EP_2205 = Path_2205; + +type Val_2205 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2205 } + : T[K] extends object ? { t: 'o'; props: Val_2205 } + : { t: 'u' }; +}; +type EV_2205 = Val_2205; + +interface Registry_22_05 { + entities: Map; + validators: EV_2205; + paths: Set; + merged: DeepMerge_2205; +} + +type CK_2205 = `p22.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_05, Registry_22_05, CK_2205, EP_2205, EV_2205, DeepMerge_2205 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-06.ts new file mode 100644 index 00000000..ec3ed55e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-06.ts @@ -0,0 +1,50 @@ +// pkg-22/types-06 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2206 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2206 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_06 | null; children: Entity_22_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2206: number; y2206: string; z2206: boolean }; +} + +type Path_2206 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2206}` }[keyof T & string] : never; +type EP_2206 = Path_2206; + +type Val_2206 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2206 } + : T[K] extends object ? { t: 'o'; props: Val_2206 } + : { t: 'u' }; +}; +type EV_2206 = Val_2206; + +interface Registry_22_06 { + entities: Map; + validators: EV_2206; + paths: Set; + merged: DeepMerge_2206; +} + +type CK_2206 = `p22.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_06, Registry_22_06, CK_2206, EP_2206, EV_2206, DeepMerge_2206 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-07.ts new file mode 100644 index 00000000..4cbf9680 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-07.ts @@ -0,0 +1,50 @@ +// pkg-22/types-07 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2207 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2207 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_07 | null; children: Entity_22_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2207: number; y2207: string; z2207: boolean }; +} + +type Path_2207 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2207}` }[keyof T & string] : never; +type EP_2207 = Path_2207; + +type Val_2207 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2207 } + : T[K] extends object ? { t: 'o'; props: Val_2207 } + : { t: 'u' }; +}; +type EV_2207 = Val_2207; + +interface Registry_22_07 { + entities: Map; + validators: EV_2207; + paths: Set; + merged: DeepMerge_2207; +} + +type CK_2207 = `p22.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_07, Registry_22_07, CK_2207, EP_2207, EV_2207, DeepMerge_2207 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-08.ts new file mode 100644 index 00000000..34d01431 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-08.ts @@ -0,0 +1,50 @@ +// pkg-22/types-08 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2208 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2208 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_08 | null; children: Entity_22_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2208: number; y2208: string; z2208: boolean }; +} + +type Path_2208 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2208}` }[keyof T & string] : never; +type EP_2208 = Path_2208; + +type Val_2208 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2208 } + : T[K] extends object ? { t: 'o'; props: Val_2208 } + : { t: 'u' }; +}; +type EV_2208 = Val_2208; + +interface Registry_22_08 { + entities: Map; + validators: EV_2208; + paths: Set; + merged: DeepMerge_2208; +} + +type CK_2208 = `p22.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_08, Registry_22_08, CK_2208, EP_2208, EV_2208, DeepMerge_2208 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-09.ts new file mode 100644 index 00000000..6bd7d58a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-09.ts @@ -0,0 +1,50 @@ +// pkg-22/types-09 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2209 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2209 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_09 | null; children: Entity_22_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2209: number; y2209: string; z2209: boolean }; +} + +type Path_2209 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2209}` }[keyof T & string] : never; +type EP_2209 = Path_2209; + +type Val_2209 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2209 } + : T[K] extends object ? { t: 'o'; props: Val_2209 } + : { t: 'u' }; +}; +type EV_2209 = Val_2209; + +interface Registry_22_09 { + entities: Map; + validators: EV_2209; + paths: Set; + merged: DeepMerge_2209; +} + +type CK_2209 = `p22.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_09, Registry_22_09, CK_2209, EP_2209, EV_2209, DeepMerge_2209 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-10.ts new file mode 100644 index 00000000..18daae5f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-10.ts @@ -0,0 +1,50 @@ +// pkg-22/types-10 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2210 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2210 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_10 | null; children: Entity_22_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2210: number; y2210: string; z2210: boolean }; +} + +type Path_2210 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2210}` }[keyof T & string] : never; +type EP_2210 = Path_2210; + +type Val_2210 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2210 } + : T[K] extends object ? { t: 'o'; props: Val_2210 } + : { t: 'u' }; +}; +type EV_2210 = Val_2210; + +interface Registry_22_10 { + entities: Map; + validators: EV_2210; + paths: Set; + merged: DeepMerge_2210; +} + +type CK_2210 = `p22.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_10, Registry_22_10, CK_2210, EP_2210, EV_2210, DeepMerge_2210 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-11.ts new file mode 100644 index 00000000..67a79f1e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-11.ts @@ -0,0 +1,50 @@ +// pkg-22/types-11 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2211 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2211 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_11 | null; children: Entity_22_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2211: number; y2211: string; z2211: boolean }; +} + +type Path_2211 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2211}` }[keyof T & string] : never; +type EP_2211 = Path_2211; + +type Val_2211 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2211 } + : T[K] extends object ? { t: 'o'; props: Val_2211 } + : { t: 'u' }; +}; +type EV_2211 = Val_2211; + +interface Registry_22_11 { + entities: Map; + validators: EV_2211; + paths: Set; + merged: DeepMerge_2211; +} + +type CK_2211 = `p22.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_11, Registry_22_11, CK_2211, EP_2211, EV_2211, DeepMerge_2211 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-12.ts new file mode 100644 index 00000000..5bb81438 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-12.ts @@ -0,0 +1,50 @@ +// pkg-22/types-12 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2212 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2212 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_12 | null; children: Entity_22_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2212: number; y2212: string; z2212: boolean }; +} + +type Path_2212 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2212}` }[keyof T & string] : never; +type EP_2212 = Path_2212; + +type Val_2212 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2212 } + : T[K] extends object ? { t: 'o'; props: Val_2212 } + : { t: 'u' }; +}; +type EV_2212 = Val_2212; + +interface Registry_22_12 { + entities: Map; + validators: EV_2212; + paths: Set; + merged: DeepMerge_2212; +} + +type CK_2212 = `p22.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_12, Registry_22_12, CK_2212, EP_2212, EV_2212, DeepMerge_2212 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-13.ts new file mode 100644 index 00000000..cdbb9767 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-13.ts @@ -0,0 +1,50 @@ +// pkg-22/types-13 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2213 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2213 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_13 | null; children: Entity_22_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2213: number; y2213: string; z2213: boolean }; +} + +type Path_2213 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2213}` }[keyof T & string] : never; +type EP_2213 = Path_2213; + +type Val_2213 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2213 } + : T[K] extends object ? { t: 'o'; props: Val_2213 } + : { t: 'u' }; +}; +type EV_2213 = Val_2213; + +interface Registry_22_13 { + entities: Map; + validators: EV_2213; + paths: Set; + merged: DeepMerge_2213; +} + +type CK_2213 = `p22.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_13, Registry_22_13, CK_2213, EP_2213, EV_2213, DeepMerge_2213 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-14.ts new file mode 100644 index 00000000..a941bede --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-14.ts @@ -0,0 +1,50 @@ +// pkg-22/types-14 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2214 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2214 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_14 | null; children: Entity_22_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2214: number; y2214: string; z2214: boolean }; +} + +type Path_2214 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2214}` }[keyof T & string] : never; +type EP_2214 = Path_2214; + +type Val_2214 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2214 } + : T[K] extends object ? { t: 'o'; props: Val_2214 } + : { t: 'u' }; +}; +type EV_2214 = Val_2214; + +interface Registry_22_14 { + entities: Map; + validators: EV_2214; + paths: Set; + merged: DeepMerge_2214; +} + +type CK_2214 = `p22.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_14, Registry_22_14, CK_2214, EP_2214, EV_2214, DeepMerge_2214 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-15.ts new file mode 100644 index 00000000..59e52940 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-15.ts @@ -0,0 +1,50 @@ +// pkg-22/types-15 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2215 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2215 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_15 | null; children: Entity_22_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2215: number; y2215: string; z2215: boolean }; +} + +type Path_2215 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2215}` }[keyof T & string] : never; +type EP_2215 = Path_2215; + +type Val_2215 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2215 } + : T[K] extends object ? { t: 'o'; props: Val_2215 } + : { t: 'u' }; +}; +type EV_2215 = Val_2215; + +interface Registry_22_15 { + entities: Map; + validators: EV_2215; + paths: Set; + merged: DeepMerge_2215; +} + +type CK_2215 = `p22.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_15, Registry_22_15, CK_2215, EP_2215, EV_2215, DeepMerge_2215 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-16.ts new file mode 100644 index 00000000..dab6119b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-16.ts @@ -0,0 +1,50 @@ +// pkg-22/types-16 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2216 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2216 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_16 | null; children: Entity_22_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2216: number; y2216: string; z2216: boolean }; +} + +type Path_2216 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2216}` }[keyof T & string] : never; +type EP_2216 = Path_2216; + +type Val_2216 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2216 } + : T[K] extends object ? { t: 'o'; props: Val_2216 } + : { t: 'u' }; +}; +type EV_2216 = Val_2216; + +interface Registry_22_16 { + entities: Map; + validators: EV_2216; + paths: Set; + merged: DeepMerge_2216; +} + +type CK_2216 = `p22.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_16, Registry_22_16, CK_2216, EP_2216, EV_2216, DeepMerge_2216 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-17.ts new file mode 100644 index 00000000..ff1dbea8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-17.ts @@ -0,0 +1,50 @@ +// pkg-22/types-17 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2217 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2217 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_17 | null; children: Entity_22_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2217: number; y2217: string; z2217: boolean }; +} + +type Path_2217 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2217}` }[keyof T & string] : never; +type EP_2217 = Path_2217; + +type Val_2217 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2217 } + : T[K] extends object ? { t: 'o'; props: Val_2217 } + : { t: 'u' }; +}; +type EV_2217 = Val_2217; + +interface Registry_22_17 { + entities: Map; + validators: EV_2217; + paths: Set; + merged: DeepMerge_2217; +} + +type CK_2217 = `p22.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_17, Registry_22_17, CK_2217, EP_2217, EV_2217, DeepMerge_2217 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-18.ts new file mode 100644 index 00000000..7697d63f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-18.ts @@ -0,0 +1,50 @@ +// pkg-22/types-18 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2218 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2218 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_18 | null; children: Entity_22_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2218: number; y2218: string; z2218: boolean }; +} + +type Path_2218 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2218}` }[keyof T & string] : never; +type EP_2218 = Path_2218; + +type Val_2218 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2218 } + : T[K] extends object ? { t: 'o'; props: Val_2218 } + : { t: 'u' }; +}; +type EV_2218 = Val_2218; + +interface Registry_22_18 { + entities: Map; + validators: EV_2218; + paths: Set; + merged: DeepMerge_2218; +} + +type CK_2218 = `p22.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_18, Registry_22_18, CK_2218, EP_2218, EV_2218, DeepMerge_2218 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-19.ts new file mode 100644 index 00000000..39d1c147 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-19.ts @@ -0,0 +1,50 @@ +// pkg-22/types-19 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2219 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2219 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_19 | null; children: Entity_22_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2219: number; y2219: string; z2219: boolean }; +} + +type Path_2219 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2219}` }[keyof T & string] : never; +type EP_2219 = Path_2219; + +type Val_2219 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2219 } + : T[K] extends object ? { t: 'o'; props: Val_2219 } + : { t: 'u' }; +}; +type EV_2219 = Val_2219; + +interface Registry_22_19 { + entities: Map; + validators: EV_2219; + paths: Set; + merged: DeepMerge_2219; +} + +type CK_2219 = `p22.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_19, Registry_22_19, CK_2219, EP_2219, EV_2219, DeepMerge_2219 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-20.ts new file mode 100644 index 00000000..9dd72e57 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-20.ts @@ -0,0 +1,50 @@ +// pkg-22/types-20 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2220 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2220 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_20 | null; children: Entity_22_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2220: number; y2220: string; z2220: boolean }; +} + +type Path_2220 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2220}` }[keyof T & string] : never; +type EP_2220 = Path_2220; + +type Val_2220 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2220 } + : T[K] extends object ? { t: 'o'; props: Val_2220 } + : { t: 'u' }; +}; +type EV_2220 = Val_2220; + +interface Registry_22_20 { + entities: Map; + validators: EV_2220; + paths: Set; + merged: DeepMerge_2220; +} + +type CK_2220 = `p22.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_20, Registry_22_20, CK_2220, EP_2220, EV_2220, DeepMerge_2220 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-21.ts new file mode 100644 index 00000000..4fa4b1cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-21.ts @@ -0,0 +1,50 @@ +// pkg-22/types-21 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2221 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2221 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_21 | null; children: Entity_22_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2221: number; y2221: string; z2221: boolean }; +} + +type Path_2221 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2221}` }[keyof T & string] : never; +type EP_2221 = Path_2221; + +type Val_2221 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2221 } + : T[K] extends object ? { t: 'o'; props: Val_2221 } + : { t: 'u' }; +}; +type EV_2221 = Val_2221; + +interface Registry_22_21 { + entities: Map; + validators: EV_2221; + paths: Set; + merged: DeepMerge_2221; +} + +type CK_2221 = `p22.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_21, Registry_22_21, CK_2221, EP_2221, EV_2221, DeepMerge_2221 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-22.ts new file mode 100644 index 00000000..5b54a950 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-22.ts @@ -0,0 +1,50 @@ +// pkg-22/types-22 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2222 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2222 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_22 | null; children: Entity_22_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2222: number; y2222: string; z2222: boolean }; +} + +type Path_2222 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2222}` }[keyof T & string] : never; +type EP_2222 = Path_2222; + +type Val_2222 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2222 } + : T[K] extends object ? { t: 'o'; props: Val_2222 } + : { t: 'u' }; +}; +type EV_2222 = Val_2222; + +interface Registry_22_22 { + entities: Map; + validators: EV_2222; + paths: Set; + merged: DeepMerge_2222; +} + +type CK_2222 = `p22.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_22, Registry_22_22, CK_2222, EP_2222, EV_2222, DeepMerge_2222 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-23.ts new file mode 100644 index 00000000..3648b95d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-23.ts @@ -0,0 +1,50 @@ +// pkg-22/types-23 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2223 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2223 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_23 | null; children: Entity_22_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2223: number; y2223: string; z2223: boolean }; +} + +type Path_2223 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2223}` }[keyof T & string] : never; +type EP_2223 = Path_2223; + +type Val_2223 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2223 } + : T[K] extends object ? { t: 'o'; props: Val_2223 } + : { t: 'u' }; +}; +type EV_2223 = Val_2223; + +interface Registry_22_23 { + entities: Map; + validators: EV_2223; + paths: Set; + merged: DeepMerge_2223; +} + +type CK_2223 = `p22.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_23, Registry_22_23, CK_2223, EP_2223, EV_2223, DeepMerge_2223 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-24.ts new file mode 100644 index 00000000..151a5c40 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-24.ts @@ -0,0 +1,50 @@ +// pkg-22/types-24 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2224 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2224 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_24 | null; children: Entity_22_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2224: number; y2224: string; z2224: boolean }; +} + +type Path_2224 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2224}` }[keyof T & string] : never; +type EP_2224 = Path_2224; + +type Val_2224 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2224 } + : T[K] extends object ? { t: 'o'; props: Val_2224 } + : { t: 'u' }; +}; +type EV_2224 = Val_2224; + +interface Registry_22_24 { + entities: Map; + validators: EV_2224; + paths: Set; + merged: DeepMerge_2224; +} + +type CK_2224 = `p22.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_24, Registry_22_24, CK_2224, EP_2224, EV_2224, DeepMerge_2224 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-25.ts new file mode 100644 index 00000000..f20cbe39 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-25.ts @@ -0,0 +1,50 @@ +// pkg-22/types-25 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2225 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2225 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_25 | null; children: Entity_22_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2225: number; y2225: string; z2225: boolean }; +} + +type Path_2225 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2225}` }[keyof T & string] : never; +type EP_2225 = Path_2225; + +type Val_2225 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2225 } + : T[K] extends object ? { t: 'o'; props: Val_2225 } + : { t: 'u' }; +}; +type EV_2225 = Val_2225; + +interface Registry_22_25 { + entities: Map; + validators: EV_2225; + paths: Set; + merged: DeepMerge_2225; +} + +type CK_2225 = `p22.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_25, Registry_22_25, CK_2225, EP_2225, EV_2225, DeepMerge_2225 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-26.ts new file mode 100644 index 00000000..8190757a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-26.ts @@ -0,0 +1,50 @@ +// pkg-22/types-26 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2226 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2226 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_26 | null; children: Entity_22_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2226: number; y2226: string; z2226: boolean }; +} + +type Path_2226 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2226}` }[keyof T & string] : never; +type EP_2226 = Path_2226; + +type Val_2226 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2226 } + : T[K] extends object ? { t: 'o'; props: Val_2226 } + : { t: 'u' }; +}; +type EV_2226 = Val_2226; + +interface Registry_22_26 { + entities: Map; + validators: EV_2226; + paths: Set; + merged: DeepMerge_2226; +} + +type CK_2226 = `p22.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_26, Registry_22_26, CK_2226, EP_2226, EV_2226, DeepMerge_2226 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-27.ts new file mode 100644 index 00000000..92aa8afc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-27.ts @@ -0,0 +1,50 @@ +// pkg-22/types-27 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2227 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2227 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_27 | null; children: Entity_22_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2227: number; y2227: string; z2227: boolean }; +} + +type Path_2227 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2227}` }[keyof T & string] : never; +type EP_2227 = Path_2227; + +type Val_2227 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2227 } + : T[K] extends object ? { t: 'o'; props: Val_2227 } + : { t: 'u' }; +}; +type EV_2227 = Val_2227; + +interface Registry_22_27 { + entities: Map; + validators: EV_2227; + paths: Set; + merged: DeepMerge_2227; +} + +type CK_2227 = `p22.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_27, Registry_22_27, CK_2227, EP_2227, EV_2227, DeepMerge_2227 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-28.ts new file mode 100644 index 00000000..a63deb05 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-28.ts @@ -0,0 +1,50 @@ +// pkg-22/types-28 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2228 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2228 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_28 | null; children: Entity_22_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2228: number; y2228: string; z2228: boolean }; +} + +type Path_2228 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2228}` }[keyof T & string] : never; +type EP_2228 = Path_2228; + +type Val_2228 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2228 } + : T[K] extends object ? { t: 'o'; props: Val_2228 } + : { t: 'u' }; +}; +type EV_2228 = Val_2228; + +interface Registry_22_28 { + entities: Map; + validators: EV_2228; + paths: Set; + merged: DeepMerge_2228; +} + +type CK_2228 = `p22.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_28, Registry_22_28, CK_2228, EP_2228, EV_2228, DeepMerge_2228 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-29.ts new file mode 100644 index 00000000..13ec630f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-29.ts @@ -0,0 +1,50 @@ +// pkg-22/types-29 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2229 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2229 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_29 | null; children: Entity_22_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2229: number; y2229: string; z2229: boolean }; +} + +type Path_2229 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2229}` }[keyof T & string] : never; +type EP_2229 = Path_2229; + +type Val_2229 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2229 } + : T[K] extends object ? { t: 'o'; props: Val_2229 } + : { t: 'u' }; +}; +type EV_2229 = Val_2229; + +interface Registry_22_29 { + entities: Map; + validators: EV_2229; + paths: Set; + merged: DeepMerge_2229; +} + +type CK_2229 = `p22.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_29, Registry_22_29, CK_2229, EP_2229, EV_2229, DeepMerge_2229 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-30.ts new file mode 100644 index 00000000..2b32b09e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-30.ts @@ -0,0 +1,50 @@ +// pkg-22/types-30 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2230 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2230 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_30 | null; children: Entity_22_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2230: number; y2230: string; z2230: boolean }; +} + +type Path_2230 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2230}` }[keyof T & string] : never; +type EP_2230 = Path_2230; + +type Val_2230 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2230 } + : T[K] extends object ? { t: 'o'; props: Val_2230 } + : { t: 'u' }; +}; +type EV_2230 = Val_2230; + +interface Registry_22_30 { + entities: Map; + validators: EV_2230; + paths: Set; + merged: DeepMerge_2230; +} + +type CK_2230 = `p22.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_30, Registry_22_30, CK_2230, EP_2230, EV_2230, DeepMerge_2230 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-31.ts new file mode 100644 index 00000000..23c04168 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-31.ts @@ -0,0 +1,50 @@ +// pkg-22/types-31 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2231 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2231 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_31 | null; children: Entity_22_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2231: number; y2231: string; z2231: boolean }; +} + +type Path_2231 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2231}` }[keyof T & string] : never; +type EP_2231 = Path_2231; + +type Val_2231 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2231 } + : T[K] extends object ? { t: 'o'; props: Val_2231 } + : { t: 'u' }; +}; +type EV_2231 = Val_2231; + +interface Registry_22_31 { + entities: Map; + validators: EV_2231; + paths: Set; + merged: DeepMerge_2231; +} + +type CK_2231 = `p22.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_31, Registry_22_31, CK_2231, EP_2231, EV_2231, DeepMerge_2231 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-32.ts new file mode 100644 index 00000000..7df74b66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-32.ts @@ -0,0 +1,50 @@ +// pkg-22/types-32 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2232 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2232 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_32 | null; children: Entity_22_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2232: number; y2232: string; z2232: boolean }; +} + +type Path_2232 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2232}` }[keyof T & string] : never; +type EP_2232 = Path_2232; + +type Val_2232 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2232 } + : T[K] extends object ? { t: 'o'; props: Val_2232 } + : { t: 'u' }; +}; +type EV_2232 = Val_2232; + +interface Registry_22_32 { + entities: Map; + validators: EV_2232; + paths: Set; + merged: DeepMerge_2232; +} + +type CK_2232 = `p22.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_32, Registry_22_32, CK_2232, EP_2232, EV_2232, DeepMerge_2232 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-33.ts new file mode 100644 index 00000000..a3dd3890 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-33.ts @@ -0,0 +1,50 @@ +// pkg-22/types-33 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2233 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2233 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_33 | null; children: Entity_22_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2233: number; y2233: string; z2233: boolean }; +} + +type Path_2233 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2233}` }[keyof T & string] : never; +type EP_2233 = Path_2233; + +type Val_2233 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2233 } + : T[K] extends object ? { t: 'o'; props: Val_2233 } + : { t: 'u' }; +}; +type EV_2233 = Val_2233; + +interface Registry_22_33 { + entities: Map; + validators: EV_2233; + paths: Set; + merged: DeepMerge_2233; +} + +type CK_2233 = `p22.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_33, Registry_22_33, CK_2233, EP_2233, EV_2233, DeepMerge_2233 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-34.ts new file mode 100644 index 00000000..0a1adfdd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-34.ts @@ -0,0 +1,50 @@ +// pkg-22/types-34 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2234 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2234 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_34 | null; children: Entity_22_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2234: number; y2234: string; z2234: boolean }; +} + +type Path_2234 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2234}` }[keyof T & string] : never; +type EP_2234 = Path_2234; + +type Val_2234 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2234 } + : T[K] extends object ? { t: 'o'; props: Val_2234 } + : { t: 'u' }; +}; +type EV_2234 = Val_2234; + +interface Registry_22_34 { + entities: Map; + validators: EV_2234; + paths: Set; + merged: DeepMerge_2234; +} + +type CK_2234 = `p22.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_34, Registry_22_34, CK_2234, EP_2234, EV_2234, DeepMerge_2234 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-35.ts new file mode 100644 index 00000000..9a441622 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-35.ts @@ -0,0 +1,50 @@ +// pkg-22/types-35 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2235 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2235 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_35 | null; children: Entity_22_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2235: number; y2235: string; z2235: boolean }; +} + +type Path_2235 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2235}` }[keyof T & string] : never; +type EP_2235 = Path_2235; + +type Val_2235 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2235 } + : T[K] extends object ? { t: 'o'; props: Val_2235 } + : { t: 'u' }; +}; +type EV_2235 = Val_2235; + +interface Registry_22_35 { + entities: Map; + validators: EV_2235; + paths: Set; + merged: DeepMerge_2235; +} + +type CK_2235 = `p22.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_35, Registry_22_35, CK_2235, EP_2235, EV_2235, DeepMerge_2235 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-36.ts new file mode 100644 index 00000000..4da4f6dc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-36.ts @@ -0,0 +1,50 @@ +// pkg-22/types-36 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2236 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2236 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_36 | null; children: Entity_22_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2236: number; y2236: string; z2236: boolean }; +} + +type Path_2236 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2236}` }[keyof T & string] : never; +type EP_2236 = Path_2236; + +type Val_2236 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2236 } + : T[K] extends object ? { t: 'o'; props: Val_2236 } + : { t: 'u' }; +}; +type EV_2236 = Val_2236; + +interface Registry_22_36 { + entities: Map; + validators: EV_2236; + paths: Set; + merged: DeepMerge_2236; +} + +type CK_2236 = `p22.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_36, Registry_22_36, CK_2236, EP_2236, EV_2236, DeepMerge_2236 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-37.ts new file mode 100644 index 00000000..bc06931c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-37.ts @@ -0,0 +1,50 @@ +// pkg-22/types-37 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2237 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2237 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_37 | null; children: Entity_22_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2237: number; y2237: string; z2237: boolean }; +} + +type Path_2237 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2237}` }[keyof T & string] : never; +type EP_2237 = Path_2237; + +type Val_2237 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2237 } + : T[K] extends object ? { t: 'o'; props: Val_2237 } + : { t: 'u' }; +}; +type EV_2237 = Val_2237; + +interface Registry_22_37 { + entities: Map; + validators: EV_2237; + paths: Set; + merged: DeepMerge_2237; +} + +type CK_2237 = `p22.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_37, Registry_22_37, CK_2237, EP_2237, EV_2237, DeepMerge_2237 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-38.ts new file mode 100644 index 00000000..20c6ea19 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-38.ts @@ -0,0 +1,50 @@ +// pkg-22/types-38 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2238 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2238 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_38 | null; children: Entity_22_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2238: number; y2238: string; z2238: boolean }; +} + +type Path_2238 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2238}` }[keyof T & string] : never; +type EP_2238 = Path_2238; + +type Val_2238 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2238 } + : T[K] extends object ? { t: 'o'; props: Val_2238 } + : { t: 'u' }; +}; +type EV_2238 = Val_2238; + +interface Registry_22_38 { + entities: Map; + validators: EV_2238; + paths: Set; + merged: DeepMerge_2238; +} + +type CK_2238 = `p22.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_38, Registry_22_38, CK_2238, EP_2238, EV_2238, DeepMerge_2238 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-39.ts new file mode 100644 index 00000000..50985c58 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-39.ts @@ -0,0 +1,50 @@ +// pkg-22/types-39 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2239 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2239 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_39 | null; children: Entity_22_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2239: number; y2239: string; z2239: boolean }; +} + +type Path_2239 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2239}` }[keyof T & string] : never; +type EP_2239 = Path_2239; + +type Val_2239 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2239 } + : T[K] extends object ? { t: 'o'; props: Val_2239 } + : { t: 'u' }; +}; +type EV_2239 = Val_2239; + +interface Registry_22_39 { + entities: Map; + validators: EV_2239; + paths: Set; + merged: DeepMerge_2239; +} + +type CK_2239 = `p22.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_39, Registry_22_39, CK_2239, EP_2239, EV_2239, DeepMerge_2239 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-40.ts new file mode 100644 index 00000000..28ab7b93 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-40.ts @@ -0,0 +1,50 @@ +// pkg-22/types-40 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2240 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2240 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_40 | null; children: Entity_22_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2240: number; y2240: string; z2240: boolean }; +} + +type Path_2240 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2240}` }[keyof T & string] : never; +type EP_2240 = Path_2240; + +type Val_2240 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2240 } + : T[K] extends object ? { t: 'o'; props: Val_2240 } + : { t: 'u' }; +}; +type EV_2240 = Val_2240; + +interface Registry_22_40 { + entities: Map; + validators: EV_2240; + paths: Set; + merged: DeepMerge_2240; +} + +type CK_2240 = `p22.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_40, Registry_22_40, CK_2240, EP_2240, EV_2240, DeepMerge_2240 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-41.ts new file mode 100644 index 00000000..bff22870 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-41.ts @@ -0,0 +1,50 @@ +// pkg-22/types-41 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2241 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2241 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_41 | null; children: Entity_22_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2241: number; y2241: string; z2241: boolean }; +} + +type Path_2241 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2241}` }[keyof T & string] : never; +type EP_2241 = Path_2241; + +type Val_2241 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2241 } + : T[K] extends object ? { t: 'o'; props: Val_2241 } + : { t: 'u' }; +}; +type EV_2241 = Val_2241; + +interface Registry_22_41 { + entities: Map; + validators: EV_2241; + paths: Set; + merged: DeepMerge_2241; +} + +type CK_2241 = `p22.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_41, Registry_22_41, CK_2241, EP_2241, EV_2241, DeepMerge_2241 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-42.ts new file mode 100644 index 00000000..7167fc91 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-42.ts @@ -0,0 +1,50 @@ +// pkg-22/types-42 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2242 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2242 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_42 | null; children: Entity_22_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2242: number; y2242: string; z2242: boolean }; +} + +type Path_2242 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2242}` }[keyof T & string] : never; +type EP_2242 = Path_2242; + +type Val_2242 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2242 } + : T[K] extends object ? { t: 'o'; props: Val_2242 } + : { t: 'u' }; +}; +type EV_2242 = Val_2242; + +interface Registry_22_42 { + entities: Map; + validators: EV_2242; + paths: Set; + merged: DeepMerge_2242; +} + +type CK_2242 = `p22.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_42, Registry_22_42, CK_2242, EP_2242, EV_2242, DeepMerge_2242 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-43.ts new file mode 100644 index 00000000..685c14b9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-43.ts @@ -0,0 +1,50 @@ +// pkg-22/types-43 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2243 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2243 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_43 | null; children: Entity_22_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2243: number; y2243: string; z2243: boolean }; +} + +type Path_2243 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2243}` }[keyof T & string] : never; +type EP_2243 = Path_2243; + +type Val_2243 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2243 } + : T[K] extends object ? { t: 'o'; props: Val_2243 } + : { t: 'u' }; +}; +type EV_2243 = Val_2243; + +interface Registry_22_43 { + entities: Map; + validators: EV_2243; + paths: Set; + merged: DeepMerge_2243; +} + +type CK_2243 = `p22.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_43, Registry_22_43, CK_2243, EP_2243, EV_2243, DeepMerge_2243 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-44.ts new file mode 100644 index 00000000..304eaf8d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-44.ts @@ -0,0 +1,50 @@ +// pkg-22/types-44 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2244 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2244 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_44 | null; children: Entity_22_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2244: number; y2244: string; z2244: boolean }; +} + +type Path_2244 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2244}` }[keyof T & string] : never; +type EP_2244 = Path_2244; + +type Val_2244 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2244 } + : T[K] extends object ? { t: 'o'; props: Val_2244 } + : { t: 'u' }; +}; +type EV_2244 = Val_2244; + +interface Registry_22_44 { + entities: Map; + validators: EV_2244; + paths: Set; + merged: DeepMerge_2244; +} + +type CK_2244 = `p22.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_44, Registry_22_44, CK_2244, EP_2244, EV_2244, DeepMerge_2244 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-45.ts new file mode 100644 index 00000000..6e5ac903 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-45.ts @@ -0,0 +1,50 @@ +// pkg-22/types-45 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2245 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2245 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_45 | null; children: Entity_22_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2245: number; y2245: string; z2245: boolean }; +} + +type Path_2245 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2245}` }[keyof T & string] : never; +type EP_2245 = Path_2245; + +type Val_2245 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2245 } + : T[K] extends object ? { t: 'o'; props: Val_2245 } + : { t: 'u' }; +}; +type EV_2245 = Val_2245; + +interface Registry_22_45 { + entities: Map; + validators: EV_2245; + paths: Set; + merged: DeepMerge_2245; +} + +type CK_2245 = `p22.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_45, Registry_22_45, CK_2245, EP_2245, EV_2245, DeepMerge_2245 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-46.ts new file mode 100644 index 00000000..eb164feb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-46.ts @@ -0,0 +1,50 @@ +// pkg-22/types-46 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2246 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2246 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_46 | null; children: Entity_22_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2246: number; y2246: string; z2246: boolean }; +} + +type Path_2246 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2246}` }[keyof T & string] : never; +type EP_2246 = Path_2246; + +type Val_2246 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2246 } + : T[K] extends object ? { t: 'o'; props: Val_2246 } + : { t: 'u' }; +}; +type EV_2246 = Val_2246; + +interface Registry_22_46 { + entities: Map; + validators: EV_2246; + paths: Set; + merged: DeepMerge_2246; +} + +type CK_2246 = `p22.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_46, Registry_22_46, CK_2246, EP_2246, EV_2246, DeepMerge_2246 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-47.ts new file mode 100644 index 00000000..dc009ae0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-47.ts @@ -0,0 +1,50 @@ +// pkg-22/types-47 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2247 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2247 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_47 | null; children: Entity_22_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2247: number; y2247: string; z2247: boolean }; +} + +type Path_2247 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2247}` }[keyof T & string] : never; +type EP_2247 = Path_2247; + +type Val_2247 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2247 } + : T[K] extends object ? { t: 'o'; props: Val_2247 } + : { t: 'u' }; +}; +type EV_2247 = Val_2247; + +interface Registry_22_47 { + entities: Map; + validators: EV_2247; + paths: Set; + merged: DeepMerge_2247; +} + +type CK_2247 = `p22.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_47, Registry_22_47, CK_2247, EP_2247, EV_2247, DeepMerge_2247 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-48.ts new file mode 100644 index 00000000..3b899b25 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-48.ts @@ -0,0 +1,50 @@ +// pkg-22/types-48 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2248 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2248 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_48 | null; children: Entity_22_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2248: number; y2248: string; z2248: boolean }; +} + +type Path_2248 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2248}` }[keyof T & string] : never; +type EP_2248 = Path_2248; + +type Val_2248 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2248 } + : T[K] extends object ? { t: 'o'; props: Val_2248 } + : { t: 'u' }; +}; +type EV_2248 = Val_2248; + +interface Registry_22_48 { + entities: Map; + validators: EV_2248; + paths: Set; + merged: DeepMerge_2248; +} + +type CK_2248 = `p22.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_48, Registry_22_48, CK_2248, EP_2248, EV_2248, DeepMerge_2248 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-49.ts new file mode 100644 index 00000000..89ff919a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-49.ts @@ -0,0 +1,50 @@ +// pkg-22/types-49 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2249 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2249 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_49 | null; children: Entity_22_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2249: number; y2249: string; z2249: boolean }; +} + +type Path_2249 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2249}` }[keyof T & string] : never; +type EP_2249 = Path_2249; + +type Val_2249 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2249 } + : T[K] extends object ? { t: 'o'; props: Val_2249 } + : { t: 'u' }; +}; +type EV_2249 = Val_2249; + +interface Registry_22_49 { + entities: Map; + validators: EV_2249; + paths: Set; + merged: DeepMerge_2249; +} + +type CK_2249 = `p22.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_49, Registry_22_49, CK_2249, EP_2249, EV_2249, DeepMerge_2249 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-22/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-22/types-50.ts new file mode 100644 index 00000000..281ee4b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-22/types-50.ts @@ -0,0 +1,50 @@ +// pkg-22/types-50 - heavy interconnected types + +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; +import type { Entity_19_01, Registry_19_01 } from '../pkg-19/types-01'; +import type { Entity_19_10, Registry_19_10 } from '../pkg-19/types-10'; +import type { Entity_19_20, Registry_19_20 } from '../pkg-19/types-20'; + +type DeepMerge_2250 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2250 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_22_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_22_50 | null; children: Entity_22_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2250: number; y2250: string; z2250: boolean }; +} + +type Path_2250 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2250}` }[keyof T & string] : never; +type EP_2250 = Path_2250; + +type Val_2250 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2250 } + : T[K] extends object ? { t: 'o'; props: Val_2250 } + : { t: 'u' }; +}; +type EV_2250 = Val_2250; + +interface Registry_22_50 { + entities: Map; + validators: EV_2250; + paths: Set; + merged: DeepMerge_2250; +} + +type CK_2250 = `p22.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_22_50, Registry_22_50, CK_2250, EP_2250, EV_2250, DeepMerge_2250 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-23/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-01.ts new file mode 100644 index 00000000..1c16fb4b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-01.ts @@ -0,0 +1,50 @@ +// pkg-23/types-01 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2301 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2301 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_01 | null; children: Entity_23_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2301: number; y2301: string; z2301: boolean }; +} + +type Path_2301 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2301}` }[keyof T & string] : never; +type EP_2301 = Path_2301; + +type Val_2301 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2301 } + : T[K] extends object ? { t: 'o'; props: Val_2301 } + : { t: 'u' }; +}; +type EV_2301 = Val_2301; + +interface Registry_23_01 { + entities: Map; + validators: EV_2301; + paths: Set; + merged: DeepMerge_2301; +} + +type CK_2301 = `p23.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_01, Registry_23_01, CK_2301, EP_2301, EV_2301, DeepMerge_2301 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-02.ts new file mode 100644 index 00000000..7639bff5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-02.ts @@ -0,0 +1,50 @@ +// pkg-23/types-02 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2302 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2302 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_02 | null; children: Entity_23_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2302: number; y2302: string; z2302: boolean }; +} + +type Path_2302 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2302}` }[keyof T & string] : never; +type EP_2302 = Path_2302; + +type Val_2302 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2302 } + : T[K] extends object ? { t: 'o'; props: Val_2302 } + : { t: 'u' }; +}; +type EV_2302 = Val_2302; + +interface Registry_23_02 { + entities: Map; + validators: EV_2302; + paths: Set; + merged: DeepMerge_2302; +} + +type CK_2302 = `p23.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_02, Registry_23_02, CK_2302, EP_2302, EV_2302, DeepMerge_2302 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-03.ts new file mode 100644 index 00000000..712957ed --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-03.ts @@ -0,0 +1,50 @@ +// pkg-23/types-03 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2303 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2303 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_03 | null; children: Entity_23_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2303: number; y2303: string; z2303: boolean }; +} + +type Path_2303 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2303}` }[keyof T & string] : never; +type EP_2303 = Path_2303; + +type Val_2303 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2303 } + : T[K] extends object ? { t: 'o'; props: Val_2303 } + : { t: 'u' }; +}; +type EV_2303 = Val_2303; + +interface Registry_23_03 { + entities: Map; + validators: EV_2303; + paths: Set; + merged: DeepMerge_2303; +} + +type CK_2303 = `p23.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_03, Registry_23_03, CK_2303, EP_2303, EV_2303, DeepMerge_2303 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-04.ts new file mode 100644 index 00000000..12e7a03e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-04.ts @@ -0,0 +1,50 @@ +// pkg-23/types-04 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2304 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2304 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_04 | null; children: Entity_23_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2304: number; y2304: string; z2304: boolean }; +} + +type Path_2304 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2304}` }[keyof T & string] : never; +type EP_2304 = Path_2304; + +type Val_2304 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2304 } + : T[K] extends object ? { t: 'o'; props: Val_2304 } + : { t: 'u' }; +}; +type EV_2304 = Val_2304; + +interface Registry_23_04 { + entities: Map; + validators: EV_2304; + paths: Set; + merged: DeepMerge_2304; +} + +type CK_2304 = `p23.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_04, Registry_23_04, CK_2304, EP_2304, EV_2304, DeepMerge_2304 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-05.ts new file mode 100644 index 00000000..0499422a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-05.ts @@ -0,0 +1,50 @@ +// pkg-23/types-05 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2305 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2305 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_05 | null; children: Entity_23_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2305: number; y2305: string; z2305: boolean }; +} + +type Path_2305 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2305}` }[keyof T & string] : never; +type EP_2305 = Path_2305; + +type Val_2305 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2305 } + : T[K] extends object ? { t: 'o'; props: Val_2305 } + : { t: 'u' }; +}; +type EV_2305 = Val_2305; + +interface Registry_23_05 { + entities: Map; + validators: EV_2305; + paths: Set; + merged: DeepMerge_2305; +} + +type CK_2305 = `p23.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_05, Registry_23_05, CK_2305, EP_2305, EV_2305, DeepMerge_2305 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-06.ts new file mode 100644 index 00000000..a4a14fb8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-06.ts @@ -0,0 +1,50 @@ +// pkg-23/types-06 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2306 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2306 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_06 | null; children: Entity_23_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2306: number; y2306: string; z2306: boolean }; +} + +type Path_2306 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2306}` }[keyof T & string] : never; +type EP_2306 = Path_2306; + +type Val_2306 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2306 } + : T[K] extends object ? { t: 'o'; props: Val_2306 } + : { t: 'u' }; +}; +type EV_2306 = Val_2306; + +interface Registry_23_06 { + entities: Map; + validators: EV_2306; + paths: Set; + merged: DeepMerge_2306; +} + +type CK_2306 = `p23.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_06, Registry_23_06, CK_2306, EP_2306, EV_2306, DeepMerge_2306 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-07.ts new file mode 100644 index 00000000..48e3c3d3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-07.ts @@ -0,0 +1,50 @@ +// pkg-23/types-07 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2307 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2307 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_07 | null; children: Entity_23_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2307: number; y2307: string; z2307: boolean }; +} + +type Path_2307 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2307}` }[keyof T & string] : never; +type EP_2307 = Path_2307; + +type Val_2307 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2307 } + : T[K] extends object ? { t: 'o'; props: Val_2307 } + : { t: 'u' }; +}; +type EV_2307 = Val_2307; + +interface Registry_23_07 { + entities: Map; + validators: EV_2307; + paths: Set; + merged: DeepMerge_2307; +} + +type CK_2307 = `p23.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_07, Registry_23_07, CK_2307, EP_2307, EV_2307, DeepMerge_2307 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-08.ts new file mode 100644 index 00000000..a15454f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-08.ts @@ -0,0 +1,50 @@ +// pkg-23/types-08 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2308 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2308 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_08 | null; children: Entity_23_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2308: number; y2308: string; z2308: boolean }; +} + +type Path_2308 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2308}` }[keyof T & string] : never; +type EP_2308 = Path_2308; + +type Val_2308 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2308 } + : T[K] extends object ? { t: 'o'; props: Val_2308 } + : { t: 'u' }; +}; +type EV_2308 = Val_2308; + +interface Registry_23_08 { + entities: Map; + validators: EV_2308; + paths: Set; + merged: DeepMerge_2308; +} + +type CK_2308 = `p23.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_08, Registry_23_08, CK_2308, EP_2308, EV_2308, DeepMerge_2308 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-09.ts new file mode 100644 index 00000000..94d87c63 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-09.ts @@ -0,0 +1,50 @@ +// pkg-23/types-09 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2309 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2309 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_09 | null; children: Entity_23_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2309: number; y2309: string; z2309: boolean }; +} + +type Path_2309 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2309}` }[keyof T & string] : never; +type EP_2309 = Path_2309; + +type Val_2309 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2309 } + : T[K] extends object ? { t: 'o'; props: Val_2309 } + : { t: 'u' }; +}; +type EV_2309 = Val_2309; + +interface Registry_23_09 { + entities: Map; + validators: EV_2309; + paths: Set; + merged: DeepMerge_2309; +} + +type CK_2309 = `p23.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_09, Registry_23_09, CK_2309, EP_2309, EV_2309, DeepMerge_2309 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-10.ts new file mode 100644 index 00000000..53260f81 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-10.ts @@ -0,0 +1,50 @@ +// pkg-23/types-10 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2310 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2310 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_10 | null; children: Entity_23_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2310: number; y2310: string; z2310: boolean }; +} + +type Path_2310 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2310}` }[keyof T & string] : never; +type EP_2310 = Path_2310; + +type Val_2310 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2310 } + : T[K] extends object ? { t: 'o'; props: Val_2310 } + : { t: 'u' }; +}; +type EV_2310 = Val_2310; + +interface Registry_23_10 { + entities: Map; + validators: EV_2310; + paths: Set; + merged: DeepMerge_2310; +} + +type CK_2310 = `p23.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_10, Registry_23_10, CK_2310, EP_2310, EV_2310, DeepMerge_2310 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-11.ts new file mode 100644 index 00000000..c761b93d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-11.ts @@ -0,0 +1,50 @@ +// pkg-23/types-11 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2311 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2311 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_11 | null; children: Entity_23_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2311: number; y2311: string; z2311: boolean }; +} + +type Path_2311 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2311}` }[keyof T & string] : never; +type EP_2311 = Path_2311; + +type Val_2311 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2311 } + : T[K] extends object ? { t: 'o'; props: Val_2311 } + : { t: 'u' }; +}; +type EV_2311 = Val_2311; + +interface Registry_23_11 { + entities: Map; + validators: EV_2311; + paths: Set; + merged: DeepMerge_2311; +} + +type CK_2311 = `p23.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_11, Registry_23_11, CK_2311, EP_2311, EV_2311, DeepMerge_2311 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-12.ts new file mode 100644 index 00000000..e8eb9d33 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-12.ts @@ -0,0 +1,50 @@ +// pkg-23/types-12 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2312 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2312 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_12 | null; children: Entity_23_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2312: number; y2312: string; z2312: boolean }; +} + +type Path_2312 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2312}` }[keyof T & string] : never; +type EP_2312 = Path_2312; + +type Val_2312 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2312 } + : T[K] extends object ? { t: 'o'; props: Val_2312 } + : { t: 'u' }; +}; +type EV_2312 = Val_2312; + +interface Registry_23_12 { + entities: Map; + validators: EV_2312; + paths: Set; + merged: DeepMerge_2312; +} + +type CK_2312 = `p23.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_12, Registry_23_12, CK_2312, EP_2312, EV_2312, DeepMerge_2312 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-13.ts new file mode 100644 index 00000000..f5cdfcf3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-13.ts @@ -0,0 +1,50 @@ +// pkg-23/types-13 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2313 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2313 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_13 | null; children: Entity_23_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2313: number; y2313: string; z2313: boolean }; +} + +type Path_2313 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2313}` }[keyof T & string] : never; +type EP_2313 = Path_2313; + +type Val_2313 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2313 } + : T[K] extends object ? { t: 'o'; props: Val_2313 } + : { t: 'u' }; +}; +type EV_2313 = Val_2313; + +interface Registry_23_13 { + entities: Map; + validators: EV_2313; + paths: Set; + merged: DeepMerge_2313; +} + +type CK_2313 = `p23.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_13, Registry_23_13, CK_2313, EP_2313, EV_2313, DeepMerge_2313 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-14.ts new file mode 100644 index 00000000..88cc4d88 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-14.ts @@ -0,0 +1,50 @@ +// pkg-23/types-14 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2314 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2314 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_14 | null; children: Entity_23_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2314: number; y2314: string; z2314: boolean }; +} + +type Path_2314 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2314}` }[keyof T & string] : never; +type EP_2314 = Path_2314; + +type Val_2314 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2314 } + : T[K] extends object ? { t: 'o'; props: Val_2314 } + : { t: 'u' }; +}; +type EV_2314 = Val_2314; + +interface Registry_23_14 { + entities: Map; + validators: EV_2314; + paths: Set; + merged: DeepMerge_2314; +} + +type CK_2314 = `p23.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_14, Registry_23_14, CK_2314, EP_2314, EV_2314, DeepMerge_2314 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-15.ts new file mode 100644 index 00000000..65c00940 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-15.ts @@ -0,0 +1,50 @@ +// pkg-23/types-15 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2315 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2315 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_15 | null; children: Entity_23_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2315: number; y2315: string; z2315: boolean }; +} + +type Path_2315 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2315}` }[keyof T & string] : never; +type EP_2315 = Path_2315; + +type Val_2315 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2315 } + : T[K] extends object ? { t: 'o'; props: Val_2315 } + : { t: 'u' }; +}; +type EV_2315 = Val_2315; + +interface Registry_23_15 { + entities: Map; + validators: EV_2315; + paths: Set; + merged: DeepMerge_2315; +} + +type CK_2315 = `p23.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_15, Registry_23_15, CK_2315, EP_2315, EV_2315, DeepMerge_2315 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-16.ts new file mode 100644 index 00000000..29b4ef70 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-16.ts @@ -0,0 +1,50 @@ +// pkg-23/types-16 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2316 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2316 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_16 | null; children: Entity_23_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2316: number; y2316: string; z2316: boolean }; +} + +type Path_2316 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2316}` }[keyof T & string] : never; +type EP_2316 = Path_2316; + +type Val_2316 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2316 } + : T[K] extends object ? { t: 'o'; props: Val_2316 } + : { t: 'u' }; +}; +type EV_2316 = Val_2316; + +interface Registry_23_16 { + entities: Map; + validators: EV_2316; + paths: Set; + merged: DeepMerge_2316; +} + +type CK_2316 = `p23.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_16, Registry_23_16, CK_2316, EP_2316, EV_2316, DeepMerge_2316 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-17.ts new file mode 100644 index 00000000..1d9d4488 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-17.ts @@ -0,0 +1,50 @@ +// pkg-23/types-17 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2317 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2317 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_17 | null; children: Entity_23_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2317: number; y2317: string; z2317: boolean }; +} + +type Path_2317 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2317}` }[keyof T & string] : never; +type EP_2317 = Path_2317; + +type Val_2317 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2317 } + : T[K] extends object ? { t: 'o'; props: Val_2317 } + : { t: 'u' }; +}; +type EV_2317 = Val_2317; + +interface Registry_23_17 { + entities: Map; + validators: EV_2317; + paths: Set; + merged: DeepMerge_2317; +} + +type CK_2317 = `p23.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_17, Registry_23_17, CK_2317, EP_2317, EV_2317, DeepMerge_2317 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-18.ts new file mode 100644 index 00000000..18c4a876 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-18.ts @@ -0,0 +1,50 @@ +// pkg-23/types-18 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2318 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2318 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_18 | null; children: Entity_23_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2318: number; y2318: string; z2318: boolean }; +} + +type Path_2318 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2318}` }[keyof T & string] : never; +type EP_2318 = Path_2318; + +type Val_2318 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2318 } + : T[K] extends object ? { t: 'o'; props: Val_2318 } + : { t: 'u' }; +}; +type EV_2318 = Val_2318; + +interface Registry_23_18 { + entities: Map; + validators: EV_2318; + paths: Set; + merged: DeepMerge_2318; +} + +type CK_2318 = `p23.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_18, Registry_23_18, CK_2318, EP_2318, EV_2318, DeepMerge_2318 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-19.ts new file mode 100644 index 00000000..06a05445 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-19.ts @@ -0,0 +1,50 @@ +// pkg-23/types-19 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2319 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2319 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_19 | null; children: Entity_23_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2319: number; y2319: string; z2319: boolean }; +} + +type Path_2319 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2319}` }[keyof T & string] : never; +type EP_2319 = Path_2319; + +type Val_2319 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2319 } + : T[K] extends object ? { t: 'o'; props: Val_2319 } + : { t: 'u' }; +}; +type EV_2319 = Val_2319; + +interface Registry_23_19 { + entities: Map; + validators: EV_2319; + paths: Set; + merged: DeepMerge_2319; +} + +type CK_2319 = `p23.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_19, Registry_23_19, CK_2319, EP_2319, EV_2319, DeepMerge_2319 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-20.ts new file mode 100644 index 00000000..24f7f29e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-20.ts @@ -0,0 +1,50 @@ +// pkg-23/types-20 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2320 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2320 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_20 | null; children: Entity_23_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2320: number; y2320: string; z2320: boolean }; +} + +type Path_2320 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2320}` }[keyof T & string] : never; +type EP_2320 = Path_2320; + +type Val_2320 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2320 } + : T[K] extends object ? { t: 'o'; props: Val_2320 } + : { t: 'u' }; +}; +type EV_2320 = Val_2320; + +interface Registry_23_20 { + entities: Map; + validators: EV_2320; + paths: Set; + merged: DeepMerge_2320; +} + +type CK_2320 = `p23.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_20, Registry_23_20, CK_2320, EP_2320, EV_2320, DeepMerge_2320 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-21.ts new file mode 100644 index 00000000..29cec039 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-21.ts @@ -0,0 +1,50 @@ +// pkg-23/types-21 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2321 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2321 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_21 | null; children: Entity_23_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2321: number; y2321: string; z2321: boolean }; +} + +type Path_2321 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2321}` }[keyof T & string] : never; +type EP_2321 = Path_2321; + +type Val_2321 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2321 } + : T[K] extends object ? { t: 'o'; props: Val_2321 } + : { t: 'u' }; +}; +type EV_2321 = Val_2321; + +interface Registry_23_21 { + entities: Map; + validators: EV_2321; + paths: Set; + merged: DeepMerge_2321; +} + +type CK_2321 = `p23.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_21, Registry_23_21, CK_2321, EP_2321, EV_2321, DeepMerge_2321 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-22.ts new file mode 100644 index 00000000..2e913571 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-22.ts @@ -0,0 +1,50 @@ +// pkg-23/types-22 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2322 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2322 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_22 | null; children: Entity_23_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2322: number; y2322: string; z2322: boolean }; +} + +type Path_2322 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2322}` }[keyof T & string] : never; +type EP_2322 = Path_2322; + +type Val_2322 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2322 } + : T[K] extends object ? { t: 'o'; props: Val_2322 } + : { t: 'u' }; +}; +type EV_2322 = Val_2322; + +interface Registry_23_22 { + entities: Map; + validators: EV_2322; + paths: Set; + merged: DeepMerge_2322; +} + +type CK_2322 = `p23.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_22, Registry_23_22, CK_2322, EP_2322, EV_2322, DeepMerge_2322 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-23.ts new file mode 100644 index 00000000..aeb75c3c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-23.ts @@ -0,0 +1,50 @@ +// pkg-23/types-23 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2323 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2323 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_23 | null; children: Entity_23_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2323: number; y2323: string; z2323: boolean }; +} + +type Path_2323 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2323}` }[keyof T & string] : never; +type EP_2323 = Path_2323; + +type Val_2323 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2323 } + : T[K] extends object ? { t: 'o'; props: Val_2323 } + : { t: 'u' }; +}; +type EV_2323 = Val_2323; + +interface Registry_23_23 { + entities: Map; + validators: EV_2323; + paths: Set; + merged: DeepMerge_2323; +} + +type CK_2323 = `p23.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_23, Registry_23_23, CK_2323, EP_2323, EV_2323, DeepMerge_2323 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-24.ts new file mode 100644 index 00000000..aef38194 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-24.ts @@ -0,0 +1,50 @@ +// pkg-23/types-24 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2324 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2324 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_24 | null; children: Entity_23_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2324: number; y2324: string; z2324: boolean }; +} + +type Path_2324 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2324}` }[keyof T & string] : never; +type EP_2324 = Path_2324; + +type Val_2324 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2324 } + : T[K] extends object ? { t: 'o'; props: Val_2324 } + : { t: 'u' }; +}; +type EV_2324 = Val_2324; + +interface Registry_23_24 { + entities: Map; + validators: EV_2324; + paths: Set; + merged: DeepMerge_2324; +} + +type CK_2324 = `p23.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_24, Registry_23_24, CK_2324, EP_2324, EV_2324, DeepMerge_2324 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-25.ts new file mode 100644 index 00000000..319f1678 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-25.ts @@ -0,0 +1,50 @@ +// pkg-23/types-25 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2325 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2325 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_25 | null; children: Entity_23_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2325: number; y2325: string; z2325: boolean }; +} + +type Path_2325 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2325}` }[keyof T & string] : never; +type EP_2325 = Path_2325; + +type Val_2325 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2325 } + : T[K] extends object ? { t: 'o'; props: Val_2325 } + : { t: 'u' }; +}; +type EV_2325 = Val_2325; + +interface Registry_23_25 { + entities: Map; + validators: EV_2325; + paths: Set; + merged: DeepMerge_2325; +} + +type CK_2325 = `p23.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_25, Registry_23_25, CK_2325, EP_2325, EV_2325, DeepMerge_2325 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-26.ts new file mode 100644 index 00000000..68c91716 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-26.ts @@ -0,0 +1,50 @@ +// pkg-23/types-26 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2326 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2326 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_26 | null; children: Entity_23_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2326: number; y2326: string; z2326: boolean }; +} + +type Path_2326 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2326}` }[keyof T & string] : never; +type EP_2326 = Path_2326; + +type Val_2326 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2326 } + : T[K] extends object ? { t: 'o'; props: Val_2326 } + : { t: 'u' }; +}; +type EV_2326 = Val_2326; + +interface Registry_23_26 { + entities: Map; + validators: EV_2326; + paths: Set; + merged: DeepMerge_2326; +} + +type CK_2326 = `p23.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_26, Registry_23_26, CK_2326, EP_2326, EV_2326, DeepMerge_2326 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-27.ts new file mode 100644 index 00000000..a4238c0d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-27.ts @@ -0,0 +1,50 @@ +// pkg-23/types-27 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2327 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2327 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_27 | null; children: Entity_23_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2327: number; y2327: string; z2327: boolean }; +} + +type Path_2327 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2327}` }[keyof T & string] : never; +type EP_2327 = Path_2327; + +type Val_2327 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2327 } + : T[K] extends object ? { t: 'o'; props: Val_2327 } + : { t: 'u' }; +}; +type EV_2327 = Val_2327; + +interface Registry_23_27 { + entities: Map; + validators: EV_2327; + paths: Set; + merged: DeepMerge_2327; +} + +type CK_2327 = `p23.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_27, Registry_23_27, CK_2327, EP_2327, EV_2327, DeepMerge_2327 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-28.ts new file mode 100644 index 00000000..b30b459d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-28.ts @@ -0,0 +1,50 @@ +// pkg-23/types-28 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2328 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2328 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_28 | null; children: Entity_23_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2328: number; y2328: string; z2328: boolean }; +} + +type Path_2328 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2328}` }[keyof T & string] : never; +type EP_2328 = Path_2328; + +type Val_2328 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2328 } + : T[K] extends object ? { t: 'o'; props: Val_2328 } + : { t: 'u' }; +}; +type EV_2328 = Val_2328; + +interface Registry_23_28 { + entities: Map; + validators: EV_2328; + paths: Set; + merged: DeepMerge_2328; +} + +type CK_2328 = `p23.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_28, Registry_23_28, CK_2328, EP_2328, EV_2328, DeepMerge_2328 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-29.ts new file mode 100644 index 00000000..0130d3a1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-29.ts @@ -0,0 +1,50 @@ +// pkg-23/types-29 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2329 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2329 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_29 | null; children: Entity_23_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2329: number; y2329: string; z2329: boolean }; +} + +type Path_2329 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2329}` }[keyof T & string] : never; +type EP_2329 = Path_2329; + +type Val_2329 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2329 } + : T[K] extends object ? { t: 'o'; props: Val_2329 } + : { t: 'u' }; +}; +type EV_2329 = Val_2329; + +interface Registry_23_29 { + entities: Map; + validators: EV_2329; + paths: Set; + merged: DeepMerge_2329; +} + +type CK_2329 = `p23.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_29, Registry_23_29, CK_2329, EP_2329, EV_2329, DeepMerge_2329 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-30.ts new file mode 100644 index 00000000..bc1b3d32 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-30.ts @@ -0,0 +1,50 @@ +// pkg-23/types-30 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2330 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2330 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_30 | null; children: Entity_23_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2330: number; y2330: string; z2330: boolean }; +} + +type Path_2330 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2330}` }[keyof T & string] : never; +type EP_2330 = Path_2330; + +type Val_2330 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2330 } + : T[K] extends object ? { t: 'o'; props: Val_2330 } + : { t: 'u' }; +}; +type EV_2330 = Val_2330; + +interface Registry_23_30 { + entities: Map; + validators: EV_2330; + paths: Set; + merged: DeepMerge_2330; +} + +type CK_2330 = `p23.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_30, Registry_23_30, CK_2330, EP_2330, EV_2330, DeepMerge_2330 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-31.ts new file mode 100644 index 00000000..d9c64e0f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-31.ts @@ -0,0 +1,50 @@ +// pkg-23/types-31 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2331 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2331 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_31 | null; children: Entity_23_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2331: number; y2331: string; z2331: boolean }; +} + +type Path_2331 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2331}` }[keyof T & string] : never; +type EP_2331 = Path_2331; + +type Val_2331 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2331 } + : T[K] extends object ? { t: 'o'; props: Val_2331 } + : { t: 'u' }; +}; +type EV_2331 = Val_2331; + +interface Registry_23_31 { + entities: Map; + validators: EV_2331; + paths: Set; + merged: DeepMerge_2331; +} + +type CK_2331 = `p23.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_31, Registry_23_31, CK_2331, EP_2331, EV_2331, DeepMerge_2331 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-32.ts new file mode 100644 index 00000000..70f728df --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-32.ts @@ -0,0 +1,50 @@ +// pkg-23/types-32 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2332 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2332 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_32 | null; children: Entity_23_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2332: number; y2332: string; z2332: boolean }; +} + +type Path_2332 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2332}` }[keyof T & string] : never; +type EP_2332 = Path_2332; + +type Val_2332 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2332 } + : T[K] extends object ? { t: 'o'; props: Val_2332 } + : { t: 'u' }; +}; +type EV_2332 = Val_2332; + +interface Registry_23_32 { + entities: Map; + validators: EV_2332; + paths: Set; + merged: DeepMerge_2332; +} + +type CK_2332 = `p23.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_32, Registry_23_32, CK_2332, EP_2332, EV_2332, DeepMerge_2332 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-33.ts new file mode 100644 index 00000000..d6cabd5e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-33.ts @@ -0,0 +1,50 @@ +// pkg-23/types-33 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2333 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2333 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_33 | null; children: Entity_23_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2333: number; y2333: string; z2333: boolean }; +} + +type Path_2333 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2333}` }[keyof T & string] : never; +type EP_2333 = Path_2333; + +type Val_2333 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2333 } + : T[K] extends object ? { t: 'o'; props: Val_2333 } + : { t: 'u' }; +}; +type EV_2333 = Val_2333; + +interface Registry_23_33 { + entities: Map; + validators: EV_2333; + paths: Set; + merged: DeepMerge_2333; +} + +type CK_2333 = `p23.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_33, Registry_23_33, CK_2333, EP_2333, EV_2333, DeepMerge_2333 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-34.ts new file mode 100644 index 00000000..9bb170cf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-34.ts @@ -0,0 +1,50 @@ +// pkg-23/types-34 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2334 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2334 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_34 | null; children: Entity_23_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2334: number; y2334: string; z2334: boolean }; +} + +type Path_2334 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2334}` }[keyof T & string] : never; +type EP_2334 = Path_2334; + +type Val_2334 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2334 } + : T[K] extends object ? { t: 'o'; props: Val_2334 } + : { t: 'u' }; +}; +type EV_2334 = Val_2334; + +interface Registry_23_34 { + entities: Map; + validators: EV_2334; + paths: Set; + merged: DeepMerge_2334; +} + +type CK_2334 = `p23.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_34, Registry_23_34, CK_2334, EP_2334, EV_2334, DeepMerge_2334 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-35.ts new file mode 100644 index 00000000..3b906159 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-35.ts @@ -0,0 +1,50 @@ +// pkg-23/types-35 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2335 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2335 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_35 | null; children: Entity_23_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2335: number; y2335: string; z2335: boolean }; +} + +type Path_2335 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2335}` }[keyof T & string] : never; +type EP_2335 = Path_2335; + +type Val_2335 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2335 } + : T[K] extends object ? { t: 'o'; props: Val_2335 } + : { t: 'u' }; +}; +type EV_2335 = Val_2335; + +interface Registry_23_35 { + entities: Map; + validators: EV_2335; + paths: Set; + merged: DeepMerge_2335; +} + +type CK_2335 = `p23.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_35, Registry_23_35, CK_2335, EP_2335, EV_2335, DeepMerge_2335 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-36.ts new file mode 100644 index 00000000..425f2eb6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-36.ts @@ -0,0 +1,50 @@ +// pkg-23/types-36 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2336 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2336 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_36 | null; children: Entity_23_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2336: number; y2336: string; z2336: boolean }; +} + +type Path_2336 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2336}` }[keyof T & string] : never; +type EP_2336 = Path_2336; + +type Val_2336 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2336 } + : T[K] extends object ? { t: 'o'; props: Val_2336 } + : { t: 'u' }; +}; +type EV_2336 = Val_2336; + +interface Registry_23_36 { + entities: Map; + validators: EV_2336; + paths: Set; + merged: DeepMerge_2336; +} + +type CK_2336 = `p23.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_36, Registry_23_36, CK_2336, EP_2336, EV_2336, DeepMerge_2336 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-37.ts new file mode 100644 index 00000000..a579dfaa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-37.ts @@ -0,0 +1,50 @@ +// pkg-23/types-37 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2337 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2337 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_37 | null; children: Entity_23_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2337: number; y2337: string; z2337: boolean }; +} + +type Path_2337 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2337}` }[keyof T & string] : never; +type EP_2337 = Path_2337; + +type Val_2337 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2337 } + : T[K] extends object ? { t: 'o'; props: Val_2337 } + : { t: 'u' }; +}; +type EV_2337 = Val_2337; + +interface Registry_23_37 { + entities: Map; + validators: EV_2337; + paths: Set; + merged: DeepMerge_2337; +} + +type CK_2337 = `p23.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_37, Registry_23_37, CK_2337, EP_2337, EV_2337, DeepMerge_2337 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-38.ts new file mode 100644 index 00000000..585be9f5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-38.ts @@ -0,0 +1,50 @@ +// pkg-23/types-38 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2338 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2338 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_38 | null; children: Entity_23_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2338: number; y2338: string; z2338: boolean }; +} + +type Path_2338 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2338}` }[keyof T & string] : never; +type EP_2338 = Path_2338; + +type Val_2338 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2338 } + : T[K] extends object ? { t: 'o'; props: Val_2338 } + : { t: 'u' }; +}; +type EV_2338 = Val_2338; + +interface Registry_23_38 { + entities: Map; + validators: EV_2338; + paths: Set; + merged: DeepMerge_2338; +} + +type CK_2338 = `p23.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_38, Registry_23_38, CK_2338, EP_2338, EV_2338, DeepMerge_2338 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-39.ts new file mode 100644 index 00000000..4f95d02f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-39.ts @@ -0,0 +1,50 @@ +// pkg-23/types-39 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2339 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2339 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_39 | null; children: Entity_23_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2339: number; y2339: string; z2339: boolean }; +} + +type Path_2339 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2339}` }[keyof T & string] : never; +type EP_2339 = Path_2339; + +type Val_2339 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2339 } + : T[K] extends object ? { t: 'o'; props: Val_2339 } + : { t: 'u' }; +}; +type EV_2339 = Val_2339; + +interface Registry_23_39 { + entities: Map; + validators: EV_2339; + paths: Set; + merged: DeepMerge_2339; +} + +type CK_2339 = `p23.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_39, Registry_23_39, CK_2339, EP_2339, EV_2339, DeepMerge_2339 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-40.ts new file mode 100644 index 00000000..d1bcedae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-40.ts @@ -0,0 +1,50 @@ +// pkg-23/types-40 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2340 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2340 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_40 | null; children: Entity_23_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2340: number; y2340: string; z2340: boolean }; +} + +type Path_2340 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2340}` }[keyof T & string] : never; +type EP_2340 = Path_2340; + +type Val_2340 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2340 } + : T[K] extends object ? { t: 'o'; props: Val_2340 } + : { t: 'u' }; +}; +type EV_2340 = Val_2340; + +interface Registry_23_40 { + entities: Map; + validators: EV_2340; + paths: Set; + merged: DeepMerge_2340; +} + +type CK_2340 = `p23.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_40, Registry_23_40, CK_2340, EP_2340, EV_2340, DeepMerge_2340 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-41.ts new file mode 100644 index 00000000..81bacb99 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-41.ts @@ -0,0 +1,50 @@ +// pkg-23/types-41 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2341 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2341 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_41 | null; children: Entity_23_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2341: number; y2341: string; z2341: boolean }; +} + +type Path_2341 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2341}` }[keyof T & string] : never; +type EP_2341 = Path_2341; + +type Val_2341 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2341 } + : T[K] extends object ? { t: 'o'; props: Val_2341 } + : { t: 'u' }; +}; +type EV_2341 = Val_2341; + +interface Registry_23_41 { + entities: Map; + validators: EV_2341; + paths: Set; + merged: DeepMerge_2341; +} + +type CK_2341 = `p23.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_41, Registry_23_41, CK_2341, EP_2341, EV_2341, DeepMerge_2341 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-42.ts new file mode 100644 index 00000000..f0712ed6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-42.ts @@ -0,0 +1,50 @@ +// pkg-23/types-42 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2342 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2342 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_42 | null; children: Entity_23_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2342: number; y2342: string; z2342: boolean }; +} + +type Path_2342 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2342}` }[keyof T & string] : never; +type EP_2342 = Path_2342; + +type Val_2342 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2342 } + : T[K] extends object ? { t: 'o'; props: Val_2342 } + : { t: 'u' }; +}; +type EV_2342 = Val_2342; + +interface Registry_23_42 { + entities: Map; + validators: EV_2342; + paths: Set; + merged: DeepMerge_2342; +} + +type CK_2342 = `p23.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_42, Registry_23_42, CK_2342, EP_2342, EV_2342, DeepMerge_2342 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-43.ts new file mode 100644 index 00000000..d1fdfa22 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-43.ts @@ -0,0 +1,50 @@ +// pkg-23/types-43 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2343 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2343 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_43 | null; children: Entity_23_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2343: number; y2343: string; z2343: boolean }; +} + +type Path_2343 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2343}` }[keyof T & string] : never; +type EP_2343 = Path_2343; + +type Val_2343 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2343 } + : T[K] extends object ? { t: 'o'; props: Val_2343 } + : { t: 'u' }; +}; +type EV_2343 = Val_2343; + +interface Registry_23_43 { + entities: Map; + validators: EV_2343; + paths: Set; + merged: DeepMerge_2343; +} + +type CK_2343 = `p23.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_43, Registry_23_43, CK_2343, EP_2343, EV_2343, DeepMerge_2343 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-44.ts new file mode 100644 index 00000000..e466ae5d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-44.ts @@ -0,0 +1,50 @@ +// pkg-23/types-44 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2344 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2344 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_44 | null; children: Entity_23_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2344: number; y2344: string; z2344: boolean }; +} + +type Path_2344 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2344}` }[keyof T & string] : never; +type EP_2344 = Path_2344; + +type Val_2344 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2344 } + : T[K] extends object ? { t: 'o'; props: Val_2344 } + : { t: 'u' }; +}; +type EV_2344 = Val_2344; + +interface Registry_23_44 { + entities: Map; + validators: EV_2344; + paths: Set; + merged: DeepMerge_2344; +} + +type CK_2344 = `p23.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_44, Registry_23_44, CK_2344, EP_2344, EV_2344, DeepMerge_2344 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-45.ts new file mode 100644 index 00000000..17528cfe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-45.ts @@ -0,0 +1,50 @@ +// pkg-23/types-45 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2345 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2345 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_45 | null; children: Entity_23_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2345: number; y2345: string; z2345: boolean }; +} + +type Path_2345 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2345}` }[keyof T & string] : never; +type EP_2345 = Path_2345; + +type Val_2345 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2345 } + : T[K] extends object ? { t: 'o'; props: Val_2345 } + : { t: 'u' }; +}; +type EV_2345 = Val_2345; + +interface Registry_23_45 { + entities: Map; + validators: EV_2345; + paths: Set; + merged: DeepMerge_2345; +} + +type CK_2345 = `p23.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_45, Registry_23_45, CK_2345, EP_2345, EV_2345, DeepMerge_2345 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-46.ts new file mode 100644 index 00000000..f935792b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-46.ts @@ -0,0 +1,50 @@ +// pkg-23/types-46 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2346 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2346 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_46 | null; children: Entity_23_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2346: number; y2346: string; z2346: boolean }; +} + +type Path_2346 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2346}` }[keyof T & string] : never; +type EP_2346 = Path_2346; + +type Val_2346 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2346 } + : T[K] extends object ? { t: 'o'; props: Val_2346 } + : { t: 'u' }; +}; +type EV_2346 = Val_2346; + +interface Registry_23_46 { + entities: Map; + validators: EV_2346; + paths: Set; + merged: DeepMerge_2346; +} + +type CK_2346 = `p23.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_46, Registry_23_46, CK_2346, EP_2346, EV_2346, DeepMerge_2346 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-47.ts new file mode 100644 index 00000000..bb592d0a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-47.ts @@ -0,0 +1,50 @@ +// pkg-23/types-47 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2347 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2347 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_47 | null; children: Entity_23_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2347: number; y2347: string; z2347: boolean }; +} + +type Path_2347 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2347}` }[keyof T & string] : never; +type EP_2347 = Path_2347; + +type Val_2347 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2347 } + : T[K] extends object ? { t: 'o'; props: Val_2347 } + : { t: 'u' }; +}; +type EV_2347 = Val_2347; + +interface Registry_23_47 { + entities: Map; + validators: EV_2347; + paths: Set; + merged: DeepMerge_2347; +} + +type CK_2347 = `p23.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_47, Registry_23_47, CK_2347, EP_2347, EV_2347, DeepMerge_2347 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-48.ts new file mode 100644 index 00000000..f29337f5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-48.ts @@ -0,0 +1,50 @@ +// pkg-23/types-48 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2348 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2348 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_48 | null; children: Entity_23_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2348: number; y2348: string; z2348: boolean }; +} + +type Path_2348 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2348}` }[keyof T & string] : never; +type EP_2348 = Path_2348; + +type Val_2348 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2348 } + : T[K] extends object ? { t: 'o'; props: Val_2348 } + : { t: 'u' }; +}; +type EV_2348 = Val_2348; + +interface Registry_23_48 { + entities: Map; + validators: EV_2348; + paths: Set; + merged: DeepMerge_2348; +} + +type CK_2348 = `p23.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_48, Registry_23_48, CK_2348, EP_2348, EV_2348, DeepMerge_2348 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-49.ts new file mode 100644 index 00000000..c968f7f1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-49.ts @@ -0,0 +1,50 @@ +// pkg-23/types-49 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2349 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2349 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_49 | null; children: Entity_23_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2349: number; y2349: string; z2349: boolean }; +} + +type Path_2349 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2349}` }[keyof T & string] : never; +type EP_2349 = Path_2349; + +type Val_2349 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2349 } + : T[K] extends object ? { t: 'o'; props: Val_2349 } + : { t: 'u' }; +}; +type EV_2349 = Val_2349; + +interface Registry_23_49 { + entities: Map; + validators: EV_2349; + paths: Set; + merged: DeepMerge_2349; +} + +type CK_2349 = `p23.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_49, Registry_23_49, CK_2349, EP_2349, EV_2349, DeepMerge_2349 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-23/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-23/types-50.ts new file mode 100644 index 00000000..79977a19 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-23/types-50.ts @@ -0,0 +1,50 @@ +// pkg-23/types-50 - heavy interconnected types + +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; +import type { Entity_20_01, Registry_20_01 } from '../pkg-20/types-01'; +import type { Entity_20_10, Registry_20_10 } from '../pkg-20/types-10'; +import type { Entity_20_20, Registry_20_20 } from '../pkg-20/types-20'; + +type DeepMerge_2350 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2350 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_23_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_23_50 | null; children: Entity_23_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2350: number; y2350: string; z2350: boolean }; +} + +type Path_2350 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2350}` }[keyof T & string] : never; +type EP_2350 = Path_2350; + +type Val_2350 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2350 } + : T[K] extends object ? { t: 'o'; props: Val_2350 } + : { t: 'u' }; +}; +type EV_2350 = Val_2350; + +interface Registry_23_50 { + entities: Map; + validators: EV_2350; + paths: Set; + merged: DeepMerge_2350; +} + +type CK_2350 = `p23.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_23_50, Registry_23_50, CK_2350, EP_2350, EV_2350, DeepMerge_2350 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-24/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-01.ts new file mode 100644 index 00000000..14a698fc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-01.ts @@ -0,0 +1,50 @@ +// pkg-24/types-01 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2401 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2401 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_01 | null; children: Entity_24_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2401: number; y2401: string; z2401: boolean }; +} + +type Path_2401 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2401}` }[keyof T & string] : never; +type EP_2401 = Path_2401; + +type Val_2401 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2401 } + : T[K] extends object ? { t: 'o'; props: Val_2401 } + : { t: 'u' }; +}; +type EV_2401 = Val_2401; + +interface Registry_24_01 { + entities: Map; + validators: EV_2401; + paths: Set; + merged: DeepMerge_2401; +} + +type CK_2401 = `p24.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_01, Registry_24_01, CK_2401, EP_2401, EV_2401, DeepMerge_2401 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-02.ts new file mode 100644 index 00000000..fde325af --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-02.ts @@ -0,0 +1,50 @@ +// pkg-24/types-02 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2402 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2402 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_02 | null; children: Entity_24_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2402: number; y2402: string; z2402: boolean }; +} + +type Path_2402 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2402}` }[keyof T & string] : never; +type EP_2402 = Path_2402; + +type Val_2402 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2402 } + : T[K] extends object ? { t: 'o'; props: Val_2402 } + : { t: 'u' }; +}; +type EV_2402 = Val_2402; + +interface Registry_24_02 { + entities: Map; + validators: EV_2402; + paths: Set; + merged: DeepMerge_2402; +} + +type CK_2402 = `p24.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_02, Registry_24_02, CK_2402, EP_2402, EV_2402, DeepMerge_2402 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-03.ts new file mode 100644 index 00000000..26091aba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-03.ts @@ -0,0 +1,50 @@ +// pkg-24/types-03 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2403 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2403 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_03 | null; children: Entity_24_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2403: number; y2403: string; z2403: boolean }; +} + +type Path_2403 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2403}` }[keyof T & string] : never; +type EP_2403 = Path_2403; + +type Val_2403 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2403 } + : T[K] extends object ? { t: 'o'; props: Val_2403 } + : { t: 'u' }; +}; +type EV_2403 = Val_2403; + +interface Registry_24_03 { + entities: Map; + validators: EV_2403; + paths: Set; + merged: DeepMerge_2403; +} + +type CK_2403 = `p24.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_03, Registry_24_03, CK_2403, EP_2403, EV_2403, DeepMerge_2403 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-04.ts new file mode 100644 index 00000000..c16c3df2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-04.ts @@ -0,0 +1,50 @@ +// pkg-24/types-04 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2404 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2404 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_04 | null; children: Entity_24_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2404: number; y2404: string; z2404: boolean }; +} + +type Path_2404 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2404}` }[keyof T & string] : never; +type EP_2404 = Path_2404; + +type Val_2404 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2404 } + : T[K] extends object ? { t: 'o'; props: Val_2404 } + : { t: 'u' }; +}; +type EV_2404 = Val_2404; + +interface Registry_24_04 { + entities: Map; + validators: EV_2404; + paths: Set; + merged: DeepMerge_2404; +} + +type CK_2404 = `p24.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_04, Registry_24_04, CK_2404, EP_2404, EV_2404, DeepMerge_2404 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-05.ts new file mode 100644 index 00000000..ff27e37c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-05.ts @@ -0,0 +1,50 @@ +// pkg-24/types-05 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2405 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2405 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_05 | null; children: Entity_24_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2405: number; y2405: string; z2405: boolean }; +} + +type Path_2405 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2405}` }[keyof T & string] : never; +type EP_2405 = Path_2405; + +type Val_2405 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2405 } + : T[K] extends object ? { t: 'o'; props: Val_2405 } + : { t: 'u' }; +}; +type EV_2405 = Val_2405; + +interface Registry_24_05 { + entities: Map; + validators: EV_2405; + paths: Set; + merged: DeepMerge_2405; +} + +type CK_2405 = `p24.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_05, Registry_24_05, CK_2405, EP_2405, EV_2405, DeepMerge_2405 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-06.ts new file mode 100644 index 00000000..a8741b7f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-06.ts @@ -0,0 +1,50 @@ +// pkg-24/types-06 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2406 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2406 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_06 | null; children: Entity_24_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2406: number; y2406: string; z2406: boolean }; +} + +type Path_2406 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2406}` }[keyof T & string] : never; +type EP_2406 = Path_2406; + +type Val_2406 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2406 } + : T[K] extends object ? { t: 'o'; props: Val_2406 } + : { t: 'u' }; +}; +type EV_2406 = Val_2406; + +interface Registry_24_06 { + entities: Map; + validators: EV_2406; + paths: Set; + merged: DeepMerge_2406; +} + +type CK_2406 = `p24.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_06, Registry_24_06, CK_2406, EP_2406, EV_2406, DeepMerge_2406 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-07.ts new file mode 100644 index 00000000..de43be7c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-07.ts @@ -0,0 +1,50 @@ +// pkg-24/types-07 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2407 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2407 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_07 | null; children: Entity_24_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2407: number; y2407: string; z2407: boolean }; +} + +type Path_2407 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2407}` }[keyof T & string] : never; +type EP_2407 = Path_2407; + +type Val_2407 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2407 } + : T[K] extends object ? { t: 'o'; props: Val_2407 } + : { t: 'u' }; +}; +type EV_2407 = Val_2407; + +interface Registry_24_07 { + entities: Map; + validators: EV_2407; + paths: Set; + merged: DeepMerge_2407; +} + +type CK_2407 = `p24.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_07, Registry_24_07, CK_2407, EP_2407, EV_2407, DeepMerge_2407 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-08.ts new file mode 100644 index 00000000..0d01919d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-08.ts @@ -0,0 +1,50 @@ +// pkg-24/types-08 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2408 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2408 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_08 | null; children: Entity_24_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2408: number; y2408: string; z2408: boolean }; +} + +type Path_2408 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2408}` }[keyof T & string] : never; +type EP_2408 = Path_2408; + +type Val_2408 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2408 } + : T[K] extends object ? { t: 'o'; props: Val_2408 } + : { t: 'u' }; +}; +type EV_2408 = Val_2408; + +interface Registry_24_08 { + entities: Map; + validators: EV_2408; + paths: Set; + merged: DeepMerge_2408; +} + +type CK_2408 = `p24.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_08, Registry_24_08, CK_2408, EP_2408, EV_2408, DeepMerge_2408 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-09.ts new file mode 100644 index 00000000..c6004dc6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-09.ts @@ -0,0 +1,50 @@ +// pkg-24/types-09 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2409 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2409 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_09 | null; children: Entity_24_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2409: number; y2409: string; z2409: boolean }; +} + +type Path_2409 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2409}` }[keyof T & string] : never; +type EP_2409 = Path_2409; + +type Val_2409 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2409 } + : T[K] extends object ? { t: 'o'; props: Val_2409 } + : { t: 'u' }; +}; +type EV_2409 = Val_2409; + +interface Registry_24_09 { + entities: Map; + validators: EV_2409; + paths: Set; + merged: DeepMerge_2409; +} + +type CK_2409 = `p24.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_09, Registry_24_09, CK_2409, EP_2409, EV_2409, DeepMerge_2409 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-10.ts new file mode 100644 index 00000000..0c8787b5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-10.ts @@ -0,0 +1,50 @@ +// pkg-24/types-10 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2410 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2410 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_10 | null; children: Entity_24_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2410: number; y2410: string; z2410: boolean }; +} + +type Path_2410 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2410}` }[keyof T & string] : never; +type EP_2410 = Path_2410; + +type Val_2410 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2410 } + : T[K] extends object ? { t: 'o'; props: Val_2410 } + : { t: 'u' }; +}; +type EV_2410 = Val_2410; + +interface Registry_24_10 { + entities: Map; + validators: EV_2410; + paths: Set; + merged: DeepMerge_2410; +} + +type CK_2410 = `p24.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_10, Registry_24_10, CK_2410, EP_2410, EV_2410, DeepMerge_2410 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-11.ts new file mode 100644 index 00000000..94d28a7a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-11.ts @@ -0,0 +1,50 @@ +// pkg-24/types-11 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2411 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2411 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_11 | null; children: Entity_24_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2411: number; y2411: string; z2411: boolean }; +} + +type Path_2411 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2411}` }[keyof T & string] : never; +type EP_2411 = Path_2411; + +type Val_2411 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2411 } + : T[K] extends object ? { t: 'o'; props: Val_2411 } + : { t: 'u' }; +}; +type EV_2411 = Val_2411; + +interface Registry_24_11 { + entities: Map; + validators: EV_2411; + paths: Set; + merged: DeepMerge_2411; +} + +type CK_2411 = `p24.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_11, Registry_24_11, CK_2411, EP_2411, EV_2411, DeepMerge_2411 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-12.ts new file mode 100644 index 00000000..20947c6c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-12.ts @@ -0,0 +1,50 @@ +// pkg-24/types-12 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2412 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2412 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_12 | null; children: Entity_24_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2412: number; y2412: string; z2412: boolean }; +} + +type Path_2412 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2412}` }[keyof T & string] : never; +type EP_2412 = Path_2412; + +type Val_2412 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2412 } + : T[K] extends object ? { t: 'o'; props: Val_2412 } + : { t: 'u' }; +}; +type EV_2412 = Val_2412; + +interface Registry_24_12 { + entities: Map; + validators: EV_2412; + paths: Set; + merged: DeepMerge_2412; +} + +type CK_2412 = `p24.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_12, Registry_24_12, CK_2412, EP_2412, EV_2412, DeepMerge_2412 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-13.ts new file mode 100644 index 00000000..b5ac0b9f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-13.ts @@ -0,0 +1,50 @@ +// pkg-24/types-13 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2413 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2413 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_13 | null; children: Entity_24_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2413: number; y2413: string; z2413: boolean }; +} + +type Path_2413 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2413}` }[keyof T & string] : never; +type EP_2413 = Path_2413; + +type Val_2413 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2413 } + : T[K] extends object ? { t: 'o'; props: Val_2413 } + : { t: 'u' }; +}; +type EV_2413 = Val_2413; + +interface Registry_24_13 { + entities: Map; + validators: EV_2413; + paths: Set; + merged: DeepMerge_2413; +} + +type CK_2413 = `p24.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_13, Registry_24_13, CK_2413, EP_2413, EV_2413, DeepMerge_2413 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-14.ts new file mode 100644 index 00000000..2b8e9689 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-14.ts @@ -0,0 +1,50 @@ +// pkg-24/types-14 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2414 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2414 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_14 | null; children: Entity_24_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2414: number; y2414: string; z2414: boolean }; +} + +type Path_2414 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2414}` }[keyof T & string] : never; +type EP_2414 = Path_2414; + +type Val_2414 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2414 } + : T[K] extends object ? { t: 'o'; props: Val_2414 } + : { t: 'u' }; +}; +type EV_2414 = Val_2414; + +interface Registry_24_14 { + entities: Map; + validators: EV_2414; + paths: Set; + merged: DeepMerge_2414; +} + +type CK_2414 = `p24.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_14, Registry_24_14, CK_2414, EP_2414, EV_2414, DeepMerge_2414 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-15.ts new file mode 100644 index 00000000..7d46b0ad --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-15.ts @@ -0,0 +1,50 @@ +// pkg-24/types-15 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2415 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2415 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_15 | null; children: Entity_24_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2415: number; y2415: string; z2415: boolean }; +} + +type Path_2415 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2415}` }[keyof T & string] : never; +type EP_2415 = Path_2415; + +type Val_2415 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2415 } + : T[K] extends object ? { t: 'o'; props: Val_2415 } + : { t: 'u' }; +}; +type EV_2415 = Val_2415; + +interface Registry_24_15 { + entities: Map; + validators: EV_2415; + paths: Set; + merged: DeepMerge_2415; +} + +type CK_2415 = `p24.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_15, Registry_24_15, CK_2415, EP_2415, EV_2415, DeepMerge_2415 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-16.ts new file mode 100644 index 00000000..dce5775a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-16.ts @@ -0,0 +1,50 @@ +// pkg-24/types-16 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2416 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2416 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_16 | null; children: Entity_24_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2416: number; y2416: string; z2416: boolean }; +} + +type Path_2416 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2416}` }[keyof T & string] : never; +type EP_2416 = Path_2416; + +type Val_2416 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2416 } + : T[K] extends object ? { t: 'o'; props: Val_2416 } + : { t: 'u' }; +}; +type EV_2416 = Val_2416; + +interface Registry_24_16 { + entities: Map; + validators: EV_2416; + paths: Set; + merged: DeepMerge_2416; +} + +type CK_2416 = `p24.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_16, Registry_24_16, CK_2416, EP_2416, EV_2416, DeepMerge_2416 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-17.ts new file mode 100644 index 00000000..cf07e228 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-17.ts @@ -0,0 +1,50 @@ +// pkg-24/types-17 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2417 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2417 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_17 | null; children: Entity_24_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2417: number; y2417: string; z2417: boolean }; +} + +type Path_2417 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2417}` }[keyof T & string] : never; +type EP_2417 = Path_2417; + +type Val_2417 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2417 } + : T[K] extends object ? { t: 'o'; props: Val_2417 } + : { t: 'u' }; +}; +type EV_2417 = Val_2417; + +interface Registry_24_17 { + entities: Map; + validators: EV_2417; + paths: Set; + merged: DeepMerge_2417; +} + +type CK_2417 = `p24.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_17, Registry_24_17, CK_2417, EP_2417, EV_2417, DeepMerge_2417 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-18.ts new file mode 100644 index 00000000..47febdb6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-18.ts @@ -0,0 +1,50 @@ +// pkg-24/types-18 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2418 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2418 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_18 | null; children: Entity_24_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2418: number; y2418: string; z2418: boolean }; +} + +type Path_2418 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2418}` }[keyof T & string] : never; +type EP_2418 = Path_2418; + +type Val_2418 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2418 } + : T[K] extends object ? { t: 'o'; props: Val_2418 } + : { t: 'u' }; +}; +type EV_2418 = Val_2418; + +interface Registry_24_18 { + entities: Map; + validators: EV_2418; + paths: Set; + merged: DeepMerge_2418; +} + +type CK_2418 = `p24.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_18, Registry_24_18, CK_2418, EP_2418, EV_2418, DeepMerge_2418 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-19.ts new file mode 100644 index 00000000..218b33b5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-19.ts @@ -0,0 +1,50 @@ +// pkg-24/types-19 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2419 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2419 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_19 | null; children: Entity_24_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2419: number; y2419: string; z2419: boolean }; +} + +type Path_2419 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2419}` }[keyof T & string] : never; +type EP_2419 = Path_2419; + +type Val_2419 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2419 } + : T[K] extends object ? { t: 'o'; props: Val_2419 } + : { t: 'u' }; +}; +type EV_2419 = Val_2419; + +interface Registry_24_19 { + entities: Map; + validators: EV_2419; + paths: Set; + merged: DeepMerge_2419; +} + +type CK_2419 = `p24.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_19, Registry_24_19, CK_2419, EP_2419, EV_2419, DeepMerge_2419 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-20.ts new file mode 100644 index 00000000..ff8799db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-20.ts @@ -0,0 +1,50 @@ +// pkg-24/types-20 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2420 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2420 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_20 | null; children: Entity_24_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2420: number; y2420: string; z2420: boolean }; +} + +type Path_2420 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2420}` }[keyof T & string] : never; +type EP_2420 = Path_2420; + +type Val_2420 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2420 } + : T[K] extends object ? { t: 'o'; props: Val_2420 } + : { t: 'u' }; +}; +type EV_2420 = Val_2420; + +interface Registry_24_20 { + entities: Map; + validators: EV_2420; + paths: Set; + merged: DeepMerge_2420; +} + +type CK_2420 = `p24.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_20, Registry_24_20, CK_2420, EP_2420, EV_2420, DeepMerge_2420 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-21.ts new file mode 100644 index 00000000..c2a666a4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-21.ts @@ -0,0 +1,50 @@ +// pkg-24/types-21 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2421 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2421 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_21 | null; children: Entity_24_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2421: number; y2421: string; z2421: boolean }; +} + +type Path_2421 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2421}` }[keyof T & string] : never; +type EP_2421 = Path_2421; + +type Val_2421 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2421 } + : T[K] extends object ? { t: 'o'; props: Val_2421 } + : { t: 'u' }; +}; +type EV_2421 = Val_2421; + +interface Registry_24_21 { + entities: Map; + validators: EV_2421; + paths: Set; + merged: DeepMerge_2421; +} + +type CK_2421 = `p24.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_21, Registry_24_21, CK_2421, EP_2421, EV_2421, DeepMerge_2421 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-22.ts new file mode 100644 index 00000000..f9d06086 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-22.ts @@ -0,0 +1,50 @@ +// pkg-24/types-22 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2422 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2422 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_22 | null; children: Entity_24_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2422: number; y2422: string; z2422: boolean }; +} + +type Path_2422 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2422}` }[keyof T & string] : never; +type EP_2422 = Path_2422; + +type Val_2422 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2422 } + : T[K] extends object ? { t: 'o'; props: Val_2422 } + : { t: 'u' }; +}; +type EV_2422 = Val_2422; + +interface Registry_24_22 { + entities: Map; + validators: EV_2422; + paths: Set; + merged: DeepMerge_2422; +} + +type CK_2422 = `p24.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_22, Registry_24_22, CK_2422, EP_2422, EV_2422, DeepMerge_2422 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-23.ts new file mode 100644 index 00000000..7b9dc513 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-23.ts @@ -0,0 +1,50 @@ +// pkg-24/types-23 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2423 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2423 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_23 | null; children: Entity_24_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2423: number; y2423: string; z2423: boolean }; +} + +type Path_2423 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2423}` }[keyof T & string] : never; +type EP_2423 = Path_2423; + +type Val_2423 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2423 } + : T[K] extends object ? { t: 'o'; props: Val_2423 } + : { t: 'u' }; +}; +type EV_2423 = Val_2423; + +interface Registry_24_23 { + entities: Map; + validators: EV_2423; + paths: Set; + merged: DeepMerge_2423; +} + +type CK_2423 = `p24.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_23, Registry_24_23, CK_2423, EP_2423, EV_2423, DeepMerge_2423 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-24.ts new file mode 100644 index 00000000..173311c8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-24.ts @@ -0,0 +1,50 @@ +// pkg-24/types-24 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2424 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2424 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_24 | null; children: Entity_24_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2424: number; y2424: string; z2424: boolean }; +} + +type Path_2424 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2424}` }[keyof T & string] : never; +type EP_2424 = Path_2424; + +type Val_2424 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2424 } + : T[K] extends object ? { t: 'o'; props: Val_2424 } + : { t: 'u' }; +}; +type EV_2424 = Val_2424; + +interface Registry_24_24 { + entities: Map; + validators: EV_2424; + paths: Set; + merged: DeepMerge_2424; +} + +type CK_2424 = `p24.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_24, Registry_24_24, CK_2424, EP_2424, EV_2424, DeepMerge_2424 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-25.ts new file mode 100644 index 00000000..8aa13a53 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-25.ts @@ -0,0 +1,50 @@ +// pkg-24/types-25 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2425 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2425 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_25 | null; children: Entity_24_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2425: number; y2425: string; z2425: boolean }; +} + +type Path_2425 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2425}` }[keyof T & string] : never; +type EP_2425 = Path_2425; + +type Val_2425 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2425 } + : T[K] extends object ? { t: 'o'; props: Val_2425 } + : { t: 'u' }; +}; +type EV_2425 = Val_2425; + +interface Registry_24_25 { + entities: Map; + validators: EV_2425; + paths: Set; + merged: DeepMerge_2425; +} + +type CK_2425 = `p24.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_25, Registry_24_25, CK_2425, EP_2425, EV_2425, DeepMerge_2425 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-26.ts new file mode 100644 index 00000000..dbd7ea69 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-26.ts @@ -0,0 +1,50 @@ +// pkg-24/types-26 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2426 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2426 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_26 | null; children: Entity_24_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2426: number; y2426: string; z2426: boolean }; +} + +type Path_2426 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2426}` }[keyof T & string] : never; +type EP_2426 = Path_2426; + +type Val_2426 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2426 } + : T[K] extends object ? { t: 'o'; props: Val_2426 } + : { t: 'u' }; +}; +type EV_2426 = Val_2426; + +interface Registry_24_26 { + entities: Map; + validators: EV_2426; + paths: Set; + merged: DeepMerge_2426; +} + +type CK_2426 = `p24.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_26, Registry_24_26, CK_2426, EP_2426, EV_2426, DeepMerge_2426 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-27.ts new file mode 100644 index 00000000..e8e8d4a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-27.ts @@ -0,0 +1,50 @@ +// pkg-24/types-27 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2427 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2427 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_27 | null; children: Entity_24_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2427: number; y2427: string; z2427: boolean }; +} + +type Path_2427 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2427}` }[keyof T & string] : never; +type EP_2427 = Path_2427; + +type Val_2427 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2427 } + : T[K] extends object ? { t: 'o'; props: Val_2427 } + : { t: 'u' }; +}; +type EV_2427 = Val_2427; + +interface Registry_24_27 { + entities: Map; + validators: EV_2427; + paths: Set; + merged: DeepMerge_2427; +} + +type CK_2427 = `p24.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_27, Registry_24_27, CK_2427, EP_2427, EV_2427, DeepMerge_2427 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-28.ts new file mode 100644 index 00000000..3a13659e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-28.ts @@ -0,0 +1,50 @@ +// pkg-24/types-28 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2428 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2428 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_28 | null; children: Entity_24_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2428: number; y2428: string; z2428: boolean }; +} + +type Path_2428 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2428}` }[keyof T & string] : never; +type EP_2428 = Path_2428; + +type Val_2428 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2428 } + : T[K] extends object ? { t: 'o'; props: Val_2428 } + : { t: 'u' }; +}; +type EV_2428 = Val_2428; + +interface Registry_24_28 { + entities: Map; + validators: EV_2428; + paths: Set; + merged: DeepMerge_2428; +} + +type CK_2428 = `p24.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_28, Registry_24_28, CK_2428, EP_2428, EV_2428, DeepMerge_2428 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-29.ts new file mode 100644 index 00000000..69d56525 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-29.ts @@ -0,0 +1,50 @@ +// pkg-24/types-29 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2429 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2429 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_29 | null; children: Entity_24_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2429: number; y2429: string; z2429: boolean }; +} + +type Path_2429 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2429}` }[keyof T & string] : never; +type EP_2429 = Path_2429; + +type Val_2429 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2429 } + : T[K] extends object ? { t: 'o'; props: Val_2429 } + : { t: 'u' }; +}; +type EV_2429 = Val_2429; + +interface Registry_24_29 { + entities: Map; + validators: EV_2429; + paths: Set; + merged: DeepMerge_2429; +} + +type CK_2429 = `p24.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_29, Registry_24_29, CK_2429, EP_2429, EV_2429, DeepMerge_2429 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-30.ts new file mode 100644 index 00000000..8e94e7b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-30.ts @@ -0,0 +1,50 @@ +// pkg-24/types-30 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2430 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2430 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_30 | null; children: Entity_24_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2430: number; y2430: string; z2430: boolean }; +} + +type Path_2430 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2430}` }[keyof T & string] : never; +type EP_2430 = Path_2430; + +type Val_2430 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2430 } + : T[K] extends object ? { t: 'o'; props: Val_2430 } + : { t: 'u' }; +}; +type EV_2430 = Val_2430; + +interface Registry_24_30 { + entities: Map; + validators: EV_2430; + paths: Set; + merged: DeepMerge_2430; +} + +type CK_2430 = `p24.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_30, Registry_24_30, CK_2430, EP_2430, EV_2430, DeepMerge_2430 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-31.ts new file mode 100644 index 00000000..74328212 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-31.ts @@ -0,0 +1,50 @@ +// pkg-24/types-31 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2431 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2431 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_31 | null; children: Entity_24_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2431: number; y2431: string; z2431: boolean }; +} + +type Path_2431 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2431}` }[keyof T & string] : never; +type EP_2431 = Path_2431; + +type Val_2431 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2431 } + : T[K] extends object ? { t: 'o'; props: Val_2431 } + : { t: 'u' }; +}; +type EV_2431 = Val_2431; + +interface Registry_24_31 { + entities: Map; + validators: EV_2431; + paths: Set; + merged: DeepMerge_2431; +} + +type CK_2431 = `p24.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_31, Registry_24_31, CK_2431, EP_2431, EV_2431, DeepMerge_2431 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-32.ts new file mode 100644 index 00000000..d4ae4154 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-32.ts @@ -0,0 +1,50 @@ +// pkg-24/types-32 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2432 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2432 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_32 | null; children: Entity_24_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2432: number; y2432: string; z2432: boolean }; +} + +type Path_2432 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2432}` }[keyof T & string] : never; +type EP_2432 = Path_2432; + +type Val_2432 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2432 } + : T[K] extends object ? { t: 'o'; props: Val_2432 } + : { t: 'u' }; +}; +type EV_2432 = Val_2432; + +interface Registry_24_32 { + entities: Map; + validators: EV_2432; + paths: Set; + merged: DeepMerge_2432; +} + +type CK_2432 = `p24.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_32, Registry_24_32, CK_2432, EP_2432, EV_2432, DeepMerge_2432 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-33.ts new file mode 100644 index 00000000..9dbe14bd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-33.ts @@ -0,0 +1,50 @@ +// pkg-24/types-33 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2433 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2433 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_33 | null; children: Entity_24_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2433: number; y2433: string; z2433: boolean }; +} + +type Path_2433 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2433}` }[keyof T & string] : never; +type EP_2433 = Path_2433; + +type Val_2433 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2433 } + : T[K] extends object ? { t: 'o'; props: Val_2433 } + : { t: 'u' }; +}; +type EV_2433 = Val_2433; + +interface Registry_24_33 { + entities: Map; + validators: EV_2433; + paths: Set; + merged: DeepMerge_2433; +} + +type CK_2433 = `p24.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_33, Registry_24_33, CK_2433, EP_2433, EV_2433, DeepMerge_2433 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-34.ts new file mode 100644 index 00000000..e8fe73cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-34.ts @@ -0,0 +1,50 @@ +// pkg-24/types-34 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2434 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2434 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_34 | null; children: Entity_24_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2434: number; y2434: string; z2434: boolean }; +} + +type Path_2434 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2434}` }[keyof T & string] : never; +type EP_2434 = Path_2434; + +type Val_2434 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2434 } + : T[K] extends object ? { t: 'o'; props: Val_2434 } + : { t: 'u' }; +}; +type EV_2434 = Val_2434; + +interface Registry_24_34 { + entities: Map; + validators: EV_2434; + paths: Set; + merged: DeepMerge_2434; +} + +type CK_2434 = `p24.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_34, Registry_24_34, CK_2434, EP_2434, EV_2434, DeepMerge_2434 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-35.ts new file mode 100644 index 00000000..e54435ab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-35.ts @@ -0,0 +1,50 @@ +// pkg-24/types-35 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2435 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2435 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_35 | null; children: Entity_24_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2435: number; y2435: string; z2435: boolean }; +} + +type Path_2435 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2435}` }[keyof T & string] : never; +type EP_2435 = Path_2435; + +type Val_2435 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2435 } + : T[K] extends object ? { t: 'o'; props: Val_2435 } + : { t: 'u' }; +}; +type EV_2435 = Val_2435; + +interface Registry_24_35 { + entities: Map; + validators: EV_2435; + paths: Set; + merged: DeepMerge_2435; +} + +type CK_2435 = `p24.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_35, Registry_24_35, CK_2435, EP_2435, EV_2435, DeepMerge_2435 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-36.ts new file mode 100644 index 00000000..230353eb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-36.ts @@ -0,0 +1,50 @@ +// pkg-24/types-36 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2436 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2436 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_36 | null; children: Entity_24_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2436: number; y2436: string; z2436: boolean }; +} + +type Path_2436 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2436}` }[keyof T & string] : never; +type EP_2436 = Path_2436; + +type Val_2436 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2436 } + : T[K] extends object ? { t: 'o'; props: Val_2436 } + : { t: 'u' }; +}; +type EV_2436 = Val_2436; + +interface Registry_24_36 { + entities: Map; + validators: EV_2436; + paths: Set; + merged: DeepMerge_2436; +} + +type CK_2436 = `p24.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_36, Registry_24_36, CK_2436, EP_2436, EV_2436, DeepMerge_2436 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-37.ts new file mode 100644 index 00000000..f95f569a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-37.ts @@ -0,0 +1,50 @@ +// pkg-24/types-37 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2437 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2437 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_37 | null; children: Entity_24_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2437: number; y2437: string; z2437: boolean }; +} + +type Path_2437 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2437}` }[keyof T & string] : never; +type EP_2437 = Path_2437; + +type Val_2437 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2437 } + : T[K] extends object ? { t: 'o'; props: Val_2437 } + : { t: 'u' }; +}; +type EV_2437 = Val_2437; + +interface Registry_24_37 { + entities: Map; + validators: EV_2437; + paths: Set; + merged: DeepMerge_2437; +} + +type CK_2437 = `p24.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_37, Registry_24_37, CK_2437, EP_2437, EV_2437, DeepMerge_2437 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-38.ts new file mode 100644 index 00000000..4b54b6db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-38.ts @@ -0,0 +1,50 @@ +// pkg-24/types-38 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2438 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2438 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_38 | null; children: Entity_24_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2438: number; y2438: string; z2438: boolean }; +} + +type Path_2438 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2438}` }[keyof T & string] : never; +type EP_2438 = Path_2438; + +type Val_2438 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2438 } + : T[K] extends object ? { t: 'o'; props: Val_2438 } + : { t: 'u' }; +}; +type EV_2438 = Val_2438; + +interface Registry_24_38 { + entities: Map; + validators: EV_2438; + paths: Set; + merged: DeepMerge_2438; +} + +type CK_2438 = `p24.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_38, Registry_24_38, CK_2438, EP_2438, EV_2438, DeepMerge_2438 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-39.ts new file mode 100644 index 00000000..6a55e625 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-39.ts @@ -0,0 +1,50 @@ +// pkg-24/types-39 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2439 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2439 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_39 | null; children: Entity_24_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2439: number; y2439: string; z2439: boolean }; +} + +type Path_2439 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2439}` }[keyof T & string] : never; +type EP_2439 = Path_2439; + +type Val_2439 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2439 } + : T[K] extends object ? { t: 'o'; props: Val_2439 } + : { t: 'u' }; +}; +type EV_2439 = Val_2439; + +interface Registry_24_39 { + entities: Map; + validators: EV_2439; + paths: Set; + merged: DeepMerge_2439; +} + +type CK_2439 = `p24.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_39, Registry_24_39, CK_2439, EP_2439, EV_2439, DeepMerge_2439 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-40.ts new file mode 100644 index 00000000..b45ff593 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-40.ts @@ -0,0 +1,50 @@ +// pkg-24/types-40 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2440 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2440 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_40 | null; children: Entity_24_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2440: number; y2440: string; z2440: boolean }; +} + +type Path_2440 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2440}` }[keyof T & string] : never; +type EP_2440 = Path_2440; + +type Val_2440 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2440 } + : T[K] extends object ? { t: 'o'; props: Val_2440 } + : { t: 'u' }; +}; +type EV_2440 = Val_2440; + +interface Registry_24_40 { + entities: Map; + validators: EV_2440; + paths: Set; + merged: DeepMerge_2440; +} + +type CK_2440 = `p24.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_40, Registry_24_40, CK_2440, EP_2440, EV_2440, DeepMerge_2440 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-41.ts new file mode 100644 index 00000000..39394c50 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-41.ts @@ -0,0 +1,50 @@ +// pkg-24/types-41 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2441 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2441 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_41 | null; children: Entity_24_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2441: number; y2441: string; z2441: boolean }; +} + +type Path_2441 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2441}` }[keyof T & string] : never; +type EP_2441 = Path_2441; + +type Val_2441 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2441 } + : T[K] extends object ? { t: 'o'; props: Val_2441 } + : { t: 'u' }; +}; +type EV_2441 = Val_2441; + +interface Registry_24_41 { + entities: Map; + validators: EV_2441; + paths: Set; + merged: DeepMerge_2441; +} + +type CK_2441 = `p24.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_41, Registry_24_41, CK_2441, EP_2441, EV_2441, DeepMerge_2441 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-42.ts new file mode 100644 index 00000000..57b2d7f5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-42.ts @@ -0,0 +1,50 @@ +// pkg-24/types-42 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2442 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2442 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_42 | null; children: Entity_24_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2442: number; y2442: string; z2442: boolean }; +} + +type Path_2442 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2442}` }[keyof T & string] : never; +type EP_2442 = Path_2442; + +type Val_2442 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2442 } + : T[K] extends object ? { t: 'o'; props: Val_2442 } + : { t: 'u' }; +}; +type EV_2442 = Val_2442; + +interface Registry_24_42 { + entities: Map; + validators: EV_2442; + paths: Set; + merged: DeepMerge_2442; +} + +type CK_2442 = `p24.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_42, Registry_24_42, CK_2442, EP_2442, EV_2442, DeepMerge_2442 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-43.ts new file mode 100644 index 00000000..d847222b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-43.ts @@ -0,0 +1,50 @@ +// pkg-24/types-43 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2443 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2443 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_43 | null; children: Entity_24_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2443: number; y2443: string; z2443: boolean }; +} + +type Path_2443 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2443}` }[keyof T & string] : never; +type EP_2443 = Path_2443; + +type Val_2443 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2443 } + : T[K] extends object ? { t: 'o'; props: Val_2443 } + : { t: 'u' }; +}; +type EV_2443 = Val_2443; + +interface Registry_24_43 { + entities: Map; + validators: EV_2443; + paths: Set; + merged: DeepMerge_2443; +} + +type CK_2443 = `p24.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_43, Registry_24_43, CK_2443, EP_2443, EV_2443, DeepMerge_2443 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-44.ts new file mode 100644 index 00000000..e540be04 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-44.ts @@ -0,0 +1,50 @@ +// pkg-24/types-44 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2444 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2444 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_44 | null; children: Entity_24_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2444: number; y2444: string; z2444: boolean }; +} + +type Path_2444 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2444}` }[keyof T & string] : never; +type EP_2444 = Path_2444; + +type Val_2444 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2444 } + : T[K] extends object ? { t: 'o'; props: Val_2444 } + : { t: 'u' }; +}; +type EV_2444 = Val_2444; + +interface Registry_24_44 { + entities: Map; + validators: EV_2444; + paths: Set; + merged: DeepMerge_2444; +} + +type CK_2444 = `p24.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_44, Registry_24_44, CK_2444, EP_2444, EV_2444, DeepMerge_2444 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-45.ts new file mode 100644 index 00000000..f503fa7a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-45.ts @@ -0,0 +1,50 @@ +// pkg-24/types-45 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2445 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2445 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_45 | null; children: Entity_24_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2445: number; y2445: string; z2445: boolean }; +} + +type Path_2445 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2445}` }[keyof T & string] : never; +type EP_2445 = Path_2445; + +type Val_2445 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2445 } + : T[K] extends object ? { t: 'o'; props: Val_2445 } + : { t: 'u' }; +}; +type EV_2445 = Val_2445; + +interface Registry_24_45 { + entities: Map; + validators: EV_2445; + paths: Set; + merged: DeepMerge_2445; +} + +type CK_2445 = `p24.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_45, Registry_24_45, CK_2445, EP_2445, EV_2445, DeepMerge_2445 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-46.ts new file mode 100644 index 00000000..f7fe8ffd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-46.ts @@ -0,0 +1,50 @@ +// pkg-24/types-46 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2446 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2446 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_46 | null; children: Entity_24_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2446: number; y2446: string; z2446: boolean }; +} + +type Path_2446 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2446}` }[keyof T & string] : never; +type EP_2446 = Path_2446; + +type Val_2446 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2446 } + : T[K] extends object ? { t: 'o'; props: Val_2446 } + : { t: 'u' }; +}; +type EV_2446 = Val_2446; + +interface Registry_24_46 { + entities: Map; + validators: EV_2446; + paths: Set; + merged: DeepMerge_2446; +} + +type CK_2446 = `p24.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_46, Registry_24_46, CK_2446, EP_2446, EV_2446, DeepMerge_2446 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-47.ts new file mode 100644 index 00000000..4577a40a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-47.ts @@ -0,0 +1,50 @@ +// pkg-24/types-47 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2447 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2447 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_47 | null; children: Entity_24_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2447: number; y2447: string; z2447: boolean }; +} + +type Path_2447 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2447}` }[keyof T & string] : never; +type EP_2447 = Path_2447; + +type Val_2447 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2447 } + : T[K] extends object ? { t: 'o'; props: Val_2447 } + : { t: 'u' }; +}; +type EV_2447 = Val_2447; + +interface Registry_24_47 { + entities: Map; + validators: EV_2447; + paths: Set; + merged: DeepMerge_2447; +} + +type CK_2447 = `p24.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_47, Registry_24_47, CK_2447, EP_2447, EV_2447, DeepMerge_2447 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-48.ts new file mode 100644 index 00000000..49f1aee4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-48.ts @@ -0,0 +1,50 @@ +// pkg-24/types-48 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2448 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2448 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_48 | null; children: Entity_24_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2448: number; y2448: string; z2448: boolean }; +} + +type Path_2448 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2448}` }[keyof T & string] : never; +type EP_2448 = Path_2448; + +type Val_2448 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2448 } + : T[K] extends object ? { t: 'o'; props: Val_2448 } + : { t: 'u' }; +}; +type EV_2448 = Val_2448; + +interface Registry_24_48 { + entities: Map; + validators: EV_2448; + paths: Set; + merged: DeepMerge_2448; +} + +type CK_2448 = `p24.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_48, Registry_24_48, CK_2448, EP_2448, EV_2448, DeepMerge_2448 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-49.ts new file mode 100644 index 00000000..232d6f1b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-49.ts @@ -0,0 +1,50 @@ +// pkg-24/types-49 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2449 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2449 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_49 | null; children: Entity_24_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2449: number; y2449: string; z2449: boolean }; +} + +type Path_2449 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2449}` }[keyof T & string] : never; +type EP_2449 = Path_2449; + +type Val_2449 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2449 } + : T[K] extends object ? { t: 'o'; props: Val_2449 } + : { t: 'u' }; +}; +type EV_2449 = Val_2449; + +interface Registry_24_49 { + entities: Map; + validators: EV_2449; + paths: Set; + merged: DeepMerge_2449; +} + +type CK_2449 = `p24.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_49, Registry_24_49, CK_2449, EP_2449, EV_2449, DeepMerge_2449 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-24/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-24/types-50.ts new file mode 100644 index 00000000..cb30c9a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-24/types-50.ts @@ -0,0 +1,50 @@ +// pkg-24/types-50 - heavy interconnected types + +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; +import type { Entity_21_01, Registry_21_01 } from '../pkg-21/types-01'; +import type { Entity_21_10, Registry_21_10 } from '../pkg-21/types-10'; +import type { Entity_21_20, Registry_21_20 } from '../pkg-21/types-20'; + +type DeepMerge_2450 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2450 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_24_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_24_50 | null; children: Entity_24_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2450: number; y2450: string; z2450: boolean }; +} + +type Path_2450 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2450}` }[keyof T & string] : never; +type EP_2450 = Path_2450; + +type Val_2450 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2450 } + : T[K] extends object ? { t: 'o'; props: Val_2450 } + : { t: 'u' }; +}; +type EV_2450 = Val_2450; + +interface Registry_24_50 { + entities: Map; + validators: EV_2450; + paths: Set; + merged: DeepMerge_2450; +} + +type CK_2450 = `p24.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_24_50, Registry_24_50, CK_2450, EP_2450, EV_2450, DeepMerge_2450 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-25/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-01.ts new file mode 100644 index 00000000..515a6284 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-01.ts @@ -0,0 +1,50 @@ +// pkg-25/types-01 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2501 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2501 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_01 | null; children: Entity_25_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2501: number; y2501: string; z2501: boolean }; +} + +type Path_2501 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2501}` }[keyof T & string] : never; +type EP_2501 = Path_2501; + +type Val_2501 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2501 } + : T[K] extends object ? { t: 'o'; props: Val_2501 } + : { t: 'u' }; +}; +type EV_2501 = Val_2501; + +interface Registry_25_01 { + entities: Map; + validators: EV_2501; + paths: Set; + merged: DeepMerge_2501; +} + +type CK_2501 = `p25.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_01, Registry_25_01, CK_2501, EP_2501, EV_2501, DeepMerge_2501 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-02.ts new file mode 100644 index 00000000..cda1132e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-02.ts @@ -0,0 +1,50 @@ +// pkg-25/types-02 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2502 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2502 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_02 | null; children: Entity_25_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2502: number; y2502: string; z2502: boolean }; +} + +type Path_2502 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2502}` }[keyof T & string] : never; +type EP_2502 = Path_2502; + +type Val_2502 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2502 } + : T[K] extends object ? { t: 'o'; props: Val_2502 } + : { t: 'u' }; +}; +type EV_2502 = Val_2502; + +interface Registry_25_02 { + entities: Map; + validators: EV_2502; + paths: Set; + merged: DeepMerge_2502; +} + +type CK_2502 = `p25.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_02, Registry_25_02, CK_2502, EP_2502, EV_2502, DeepMerge_2502 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-03.ts new file mode 100644 index 00000000..f4496e13 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-03.ts @@ -0,0 +1,50 @@ +// pkg-25/types-03 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2503 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2503 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_03 | null; children: Entity_25_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2503: number; y2503: string; z2503: boolean }; +} + +type Path_2503 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2503}` }[keyof T & string] : never; +type EP_2503 = Path_2503; + +type Val_2503 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2503 } + : T[K] extends object ? { t: 'o'; props: Val_2503 } + : { t: 'u' }; +}; +type EV_2503 = Val_2503; + +interface Registry_25_03 { + entities: Map; + validators: EV_2503; + paths: Set; + merged: DeepMerge_2503; +} + +type CK_2503 = `p25.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_03, Registry_25_03, CK_2503, EP_2503, EV_2503, DeepMerge_2503 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-04.ts new file mode 100644 index 00000000..310c5039 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-04.ts @@ -0,0 +1,50 @@ +// pkg-25/types-04 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2504 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2504 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_04 | null; children: Entity_25_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2504: number; y2504: string; z2504: boolean }; +} + +type Path_2504 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2504}` }[keyof T & string] : never; +type EP_2504 = Path_2504; + +type Val_2504 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2504 } + : T[K] extends object ? { t: 'o'; props: Val_2504 } + : { t: 'u' }; +}; +type EV_2504 = Val_2504; + +interface Registry_25_04 { + entities: Map; + validators: EV_2504; + paths: Set; + merged: DeepMerge_2504; +} + +type CK_2504 = `p25.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_04, Registry_25_04, CK_2504, EP_2504, EV_2504, DeepMerge_2504 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-05.ts new file mode 100644 index 00000000..825ef20a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-05.ts @@ -0,0 +1,50 @@ +// pkg-25/types-05 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2505 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2505 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_05 | null; children: Entity_25_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2505: number; y2505: string; z2505: boolean }; +} + +type Path_2505 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2505}` }[keyof T & string] : never; +type EP_2505 = Path_2505; + +type Val_2505 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2505 } + : T[K] extends object ? { t: 'o'; props: Val_2505 } + : { t: 'u' }; +}; +type EV_2505 = Val_2505; + +interface Registry_25_05 { + entities: Map; + validators: EV_2505; + paths: Set; + merged: DeepMerge_2505; +} + +type CK_2505 = `p25.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_05, Registry_25_05, CK_2505, EP_2505, EV_2505, DeepMerge_2505 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-06.ts new file mode 100644 index 00000000..3976c4b6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-06.ts @@ -0,0 +1,50 @@ +// pkg-25/types-06 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2506 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2506 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_06 | null; children: Entity_25_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2506: number; y2506: string; z2506: boolean }; +} + +type Path_2506 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2506}` }[keyof T & string] : never; +type EP_2506 = Path_2506; + +type Val_2506 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2506 } + : T[K] extends object ? { t: 'o'; props: Val_2506 } + : { t: 'u' }; +}; +type EV_2506 = Val_2506; + +interface Registry_25_06 { + entities: Map; + validators: EV_2506; + paths: Set; + merged: DeepMerge_2506; +} + +type CK_2506 = `p25.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_06, Registry_25_06, CK_2506, EP_2506, EV_2506, DeepMerge_2506 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-07.ts new file mode 100644 index 00000000..d842e3ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-07.ts @@ -0,0 +1,50 @@ +// pkg-25/types-07 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2507 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2507 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_07 | null; children: Entity_25_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2507: number; y2507: string; z2507: boolean }; +} + +type Path_2507 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2507}` }[keyof T & string] : never; +type EP_2507 = Path_2507; + +type Val_2507 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2507 } + : T[K] extends object ? { t: 'o'; props: Val_2507 } + : { t: 'u' }; +}; +type EV_2507 = Val_2507; + +interface Registry_25_07 { + entities: Map; + validators: EV_2507; + paths: Set; + merged: DeepMerge_2507; +} + +type CK_2507 = `p25.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_07, Registry_25_07, CK_2507, EP_2507, EV_2507, DeepMerge_2507 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-08.ts new file mode 100644 index 00000000..9c8e71be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-08.ts @@ -0,0 +1,50 @@ +// pkg-25/types-08 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2508 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2508 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_08 | null; children: Entity_25_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2508: number; y2508: string; z2508: boolean }; +} + +type Path_2508 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2508}` }[keyof T & string] : never; +type EP_2508 = Path_2508; + +type Val_2508 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2508 } + : T[K] extends object ? { t: 'o'; props: Val_2508 } + : { t: 'u' }; +}; +type EV_2508 = Val_2508; + +interface Registry_25_08 { + entities: Map; + validators: EV_2508; + paths: Set; + merged: DeepMerge_2508; +} + +type CK_2508 = `p25.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_08, Registry_25_08, CK_2508, EP_2508, EV_2508, DeepMerge_2508 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-09.ts new file mode 100644 index 00000000..4922feec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-09.ts @@ -0,0 +1,50 @@ +// pkg-25/types-09 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2509 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2509 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_09 | null; children: Entity_25_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2509: number; y2509: string; z2509: boolean }; +} + +type Path_2509 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2509}` }[keyof T & string] : never; +type EP_2509 = Path_2509; + +type Val_2509 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2509 } + : T[K] extends object ? { t: 'o'; props: Val_2509 } + : { t: 'u' }; +}; +type EV_2509 = Val_2509; + +interface Registry_25_09 { + entities: Map; + validators: EV_2509; + paths: Set; + merged: DeepMerge_2509; +} + +type CK_2509 = `p25.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_09, Registry_25_09, CK_2509, EP_2509, EV_2509, DeepMerge_2509 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-10.ts new file mode 100644 index 00000000..ff2bfc21 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-10.ts @@ -0,0 +1,50 @@ +// pkg-25/types-10 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2510 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2510 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_10 | null; children: Entity_25_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2510: number; y2510: string; z2510: boolean }; +} + +type Path_2510 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2510}` }[keyof T & string] : never; +type EP_2510 = Path_2510; + +type Val_2510 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2510 } + : T[K] extends object ? { t: 'o'; props: Val_2510 } + : { t: 'u' }; +}; +type EV_2510 = Val_2510; + +interface Registry_25_10 { + entities: Map; + validators: EV_2510; + paths: Set; + merged: DeepMerge_2510; +} + +type CK_2510 = `p25.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_10, Registry_25_10, CK_2510, EP_2510, EV_2510, DeepMerge_2510 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-11.ts new file mode 100644 index 00000000..fac51ce9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-11.ts @@ -0,0 +1,50 @@ +// pkg-25/types-11 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2511 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2511 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_11 | null; children: Entity_25_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2511: number; y2511: string; z2511: boolean }; +} + +type Path_2511 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2511}` }[keyof T & string] : never; +type EP_2511 = Path_2511; + +type Val_2511 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2511 } + : T[K] extends object ? { t: 'o'; props: Val_2511 } + : { t: 'u' }; +}; +type EV_2511 = Val_2511; + +interface Registry_25_11 { + entities: Map; + validators: EV_2511; + paths: Set; + merged: DeepMerge_2511; +} + +type CK_2511 = `p25.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_11, Registry_25_11, CK_2511, EP_2511, EV_2511, DeepMerge_2511 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-12.ts new file mode 100644 index 00000000..ac40ddec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-12.ts @@ -0,0 +1,50 @@ +// pkg-25/types-12 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2512 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2512 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_12 | null; children: Entity_25_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2512: number; y2512: string; z2512: boolean }; +} + +type Path_2512 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2512}` }[keyof T & string] : never; +type EP_2512 = Path_2512; + +type Val_2512 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2512 } + : T[K] extends object ? { t: 'o'; props: Val_2512 } + : { t: 'u' }; +}; +type EV_2512 = Val_2512; + +interface Registry_25_12 { + entities: Map; + validators: EV_2512; + paths: Set; + merged: DeepMerge_2512; +} + +type CK_2512 = `p25.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_12, Registry_25_12, CK_2512, EP_2512, EV_2512, DeepMerge_2512 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-13.ts new file mode 100644 index 00000000..50a44d9b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-13.ts @@ -0,0 +1,50 @@ +// pkg-25/types-13 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2513 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2513 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_13 | null; children: Entity_25_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2513: number; y2513: string; z2513: boolean }; +} + +type Path_2513 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2513}` }[keyof T & string] : never; +type EP_2513 = Path_2513; + +type Val_2513 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2513 } + : T[K] extends object ? { t: 'o'; props: Val_2513 } + : { t: 'u' }; +}; +type EV_2513 = Val_2513; + +interface Registry_25_13 { + entities: Map; + validators: EV_2513; + paths: Set; + merged: DeepMerge_2513; +} + +type CK_2513 = `p25.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_13, Registry_25_13, CK_2513, EP_2513, EV_2513, DeepMerge_2513 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-14.ts new file mode 100644 index 00000000..8625cd74 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-14.ts @@ -0,0 +1,50 @@ +// pkg-25/types-14 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2514 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2514 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_14 | null; children: Entity_25_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2514: number; y2514: string; z2514: boolean }; +} + +type Path_2514 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2514}` }[keyof T & string] : never; +type EP_2514 = Path_2514; + +type Val_2514 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2514 } + : T[K] extends object ? { t: 'o'; props: Val_2514 } + : { t: 'u' }; +}; +type EV_2514 = Val_2514; + +interface Registry_25_14 { + entities: Map; + validators: EV_2514; + paths: Set; + merged: DeepMerge_2514; +} + +type CK_2514 = `p25.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_14, Registry_25_14, CK_2514, EP_2514, EV_2514, DeepMerge_2514 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-15.ts new file mode 100644 index 00000000..a0894475 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-15.ts @@ -0,0 +1,50 @@ +// pkg-25/types-15 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2515 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2515 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_15 | null; children: Entity_25_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2515: number; y2515: string; z2515: boolean }; +} + +type Path_2515 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2515}` }[keyof T & string] : never; +type EP_2515 = Path_2515; + +type Val_2515 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2515 } + : T[K] extends object ? { t: 'o'; props: Val_2515 } + : { t: 'u' }; +}; +type EV_2515 = Val_2515; + +interface Registry_25_15 { + entities: Map; + validators: EV_2515; + paths: Set; + merged: DeepMerge_2515; +} + +type CK_2515 = `p25.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_15, Registry_25_15, CK_2515, EP_2515, EV_2515, DeepMerge_2515 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-16.ts new file mode 100644 index 00000000..4041b565 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-16.ts @@ -0,0 +1,50 @@ +// pkg-25/types-16 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2516 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2516 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_16 | null; children: Entity_25_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2516: number; y2516: string; z2516: boolean }; +} + +type Path_2516 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2516}` }[keyof T & string] : never; +type EP_2516 = Path_2516; + +type Val_2516 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2516 } + : T[K] extends object ? { t: 'o'; props: Val_2516 } + : { t: 'u' }; +}; +type EV_2516 = Val_2516; + +interface Registry_25_16 { + entities: Map; + validators: EV_2516; + paths: Set; + merged: DeepMerge_2516; +} + +type CK_2516 = `p25.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_16, Registry_25_16, CK_2516, EP_2516, EV_2516, DeepMerge_2516 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-17.ts new file mode 100644 index 00000000..3458f37e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-17.ts @@ -0,0 +1,50 @@ +// pkg-25/types-17 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2517 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2517 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_17 | null; children: Entity_25_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2517: number; y2517: string; z2517: boolean }; +} + +type Path_2517 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2517}` }[keyof T & string] : never; +type EP_2517 = Path_2517; + +type Val_2517 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2517 } + : T[K] extends object ? { t: 'o'; props: Val_2517 } + : { t: 'u' }; +}; +type EV_2517 = Val_2517; + +interface Registry_25_17 { + entities: Map; + validators: EV_2517; + paths: Set; + merged: DeepMerge_2517; +} + +type CK_2517 = `p25.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_17, Registry_25_17, CK_2517, EP_2517, EV_2517, DeepMerge_2517 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-18.ts new file mode 100644 index 00000000..17c3518c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-18.ts @@ -0,0 +1,50 @@ +// pkg-25/types-18 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2518 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2518 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_18 | null; children: Entity_25_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2518: number; y2518: string; z2518: boolean }; +} + +type Path_2518 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2518}` }[keyof T & string] : never; +type EP_2518 = Path_2518; + +type Val_2518 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2518 } + : T[K] extends object ? { t: 'o'; props: Val_2518 } + : { t: 'u' }; +}; +type EV_2518 = Val_2518; + +interface Registry_25_18 { + entities: Map; + validators: EV_2518; + paths: Set; + merged: DeepMerge_2518; +} + +type CK_2518 = `p25.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_18, Registry_25_18, CK_2518, EP_2518, EV_2518, DeepMerge_2518 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-19.ts new file mode 100644 index 00000000..69d8d910 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-19.ts @@ -0,0 +1,50 @@ +// pkg-25/types-19 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2519 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2519 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_19 | null; children: Entity_25_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2519: number; y2519: string; z2519: boolean }; +} + +type Path_2519 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2519}` }[keyof T & string] : never; +type EP_2519 = Path_2519; + +type Val_2519 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2519 } + : T[K] extends object ? { t: 'o'; props: Val_2519 } + : { t: 'u' }; +}; +type EV_2519 = Val_2519; + +interface Registry_25_19 { + entities: Map; + validators: EV_2519; + paths: Set; + merged: DeepMerge_2519; +} + +type CK_2519 = `p25.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_19, Registry_25_19, CK_2519, EP_2519, EV_2519, DeepMerge_2519 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-20.ts new file mode 100644 index 00000000..835a404d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-20.ts @@ -0,0 +1,50 @@ +// pkg-25/types-20 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2520 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2520 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_20 | null; children: Entity_25_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2520: number; y2520: string; z2520: boolean }; +} + +type Path_2520 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2520}` }[keyof T & string] : never; +type EP_2520 = Path_2520; + +type Val_2520 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2520 } + : T[K] extends object ? { t: 'o'; props: Val_2520 } + : { t: 'u' }; +}; +type EV_2520 = Val_2520; + +interface Registry_25_20 { + entities: Map; + validators: EV_2520; + paths: Set; + merged: DeepMerge_2520; +} + +type CK_2520 = `p25.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_20, Registry_25_20, CK_2520, EP_2520, EV_2520, DeepMerge_2520 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-21.ts new file mode 100644 index 00000000..5f2cdb10 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-21.ts @@ -0,0 +1,50 @@ +// pkg-25/types-21 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2521 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2521 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_21 | null; children: Entity_25_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2521: number; y2521: string; z2521: boolean }; +} + +type Path_2521 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2521}` }[keyof T & string] : never; +type EP_2521 = Path_2521; + +type Val_2521 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2521 } + : T[K] extends object ? { t: 'o'; props: Val_2521 } + : { t: 'u' }; +}; +type EV_2521 = Val_2521; + +interface Registry_25_21 { + entities: Map; + validators: EV_2521; + paths: Set; + merged: DeepMerge_2521; +} + +type CK_2521 = `p25.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_21, Registry_25_21, CK_2521, EP_2521, EV_2521, DeepMerge_2521 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-22.ts new file mode 100644 index 00000000..b96681b3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-22.ts @@ -0,0 +1,50 @@ +// pkg-25/types-22 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2522 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2522 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_22 | null; children: Entity_25_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2522: number; y2522: string; z2522: boolean }; +} + +type Path_2522 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2522}` }[keyof T & string] : never; +type EP_2522 = Path_2522; + +type Val_2522 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2522 } + : T[K] extends object ? { t: 'o'; props: Val_2522 } + : { t: 'u' }; +}; +type EV_2522 = Val_2522; + +interface Registry_25_22 { + entities: Map; + validators: EV_2522; + paths: Set; + merged: DeepMerge_2522; +} + +type CK_2522 = `p25.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_22, Registry_25_22, CK_2522, EP_2522, EV_2522, DeepMerge_2522 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-23.ts new file mode 100644 index 00000000..e38b75e4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-23.ts @@ -0,0 +1,50 @@ +// pkg-25/types-23 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2523 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2523 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_23 | null; children: Entity_25_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2523: number; y2523: string; z2523: boolean }; +} + +type Path_2523 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2523}` }[keyof T & string] : never; +type EP_2523 = Path_2523; + +type Val_2523 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2523 } + : T[K] extends object ? { t: 'o'; props: Val_2523 } + : { t: 'u' }; +}; +type EV_2523 = Val_2523; + +interface Registry_25_23 { + entities: Map; + validators: EV_2523; + paths: Set; + merged: DeepMerge_2523; +} + +type CK_2523 = `p25.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_23, Registry_25_23, CK_2523, EP_2523, EV_2523, DeepMerge_2523 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-24.ts new file mode 100644 index 00000000..b1179642 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-24.ts @@ -0,0 +1,50 @@ +// pkg-25/types-24 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2524 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2524 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_24 | null; children: Entity_25_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2524: number; y2524: string; z2524: boolean }; +} + +type Path_2524 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2524}` }[keyof T & string] : never; +type EP_2524 = Path_2524; + +type Val_2524 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2524 } + : T[K] extends object ? { t: 'o'; props: Val_2524 } + : { t: 'u' }; +}; +type EV_2524 = Val_2524; + +interface Registry_25_24 { + entities: Map; + validators: EV_2524; + paths: Set; + merged: DeepMerge_2524; +} + +type CK_2524 = `p25.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_24, Registry_25_24, CK_2524, EP_2524, EV_2524, DeepMerge_2524 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-25.ts new file mode 100644 index 00000000..d936d9bd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-25.ts @@ -0,0 +1,50 @@ +// pkg-25/types-25 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2525 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2525 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_25 | null; children: Entity_25_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2525: number; y2525: string; z2525: boolean }; +} + +type Path_2525 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2525}` }[keyof T & string] : never; +type EP_2525 = Path_2525; + +type Val_2525 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2525 } + : T[K] extends object ? { t: 'o'; props: Val_2525 } + : { t: 'u' }; +}; +type EV_2525 = Val_2525; + +interface Registry_25_25 { + entities: Map; + validators: EV_2525; + paths: Set; + merged: DeepMerge_2525; +} + +type CK_2525 = `p25.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_25, Registry_25_25, CK_2525, EP_2525, EV_2525, DeepMerge_2525 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-26.ts new file mode 100644 index 00000000..b74e27a1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-26.ts @@ -0,0 +1,50 @@ +// pkg-25/types-26 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2526 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2526 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_26 | null; children: Entity_25_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2526: number; y2526: string; z2526: boolean }; +} + +type Path_2526 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2526}` }[keyof T & string] : never; +type EP_2526 = Path_2526; + +type Val_2526 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2526 } + : T[K] extends object ? { t: 'o'; props: Val_2526 } + : { t: 'u' }; +}; +type EV_2526 = Val_2526; + +interface Registry_25_26 { + entities: Map; + validators: EV_2526; + paths: Set; + merged: DeepMerge_2526; +} + +type CK_2526 = `p25.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_26, Registry_25_26, CK_2526, EP_2526, EV_2526, DeepMerge_2526 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-27.ts new file mode 100644 index 00000000..beff34fe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-27.ts @@ -0,0 +1,50 @@ +// pkg-25/types-27 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2527 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2527 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_27 | null; children: Entity_25_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2527: number; y2527: string; z2527: boolean }; +} + +type Path_2527 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2527}` }[keyof T & string] : never; +type EP_2527 = Path_2527; + +type Val_2527 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2527 } + : T[K] extends object ? { t: 'o'; props: Val_2527 } + : { t: 'u' }; +}; +type EV_2527 = Val_2527; + +interface Registry_25_27 { + entities: Map; + validators: EV_2527; + paths: Set; + merged: DeepMerge_2527; +} + +type CK_2527 = `p25.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_27, Registry_25_27, CK_2527, EP_2527, EV_2527, DeepMerge_2527 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-28.ts new file mode 100644 index 00000000..f5c7a130 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-28.ts @@ -0,0 +1,50 @@ +// pkg-25/types-28 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2528 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2528 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_28 | null; children: Entity_25_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2528: number; y2528: string; z2528: boolean }; +} + +type Path_2528 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2528}` }[keyof T & string] : never; +type EP_2528 = Path_2528; + +type Val_2528 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2528 } + : T[K] extends object ? { t: 'o'; props: Val_2528 } + : { t: 'u' }; +}; +type EV_2528 = Val_2528; + +interface Registry_25_28 { + entities: Map; + validators: EV_2528; + paths: Set; + merged: DeepMerge_2528; +} + +type CK_2528 = `p25.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_28, Registry_25_28, CK_2528, EP_2528, EV_2528, DeepMerge_2528 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-29.ts new file mode 100644 index 00000000..7efc4e33 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-29.ts @@ -0,0 +1,50 @@ +// pkg-25/types-29 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2529 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2529 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_29 | null; children: Entity_25_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2529: number; y2529: string; z2529: boolean }; +} + +type Path_2529 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2529}` }[keyof T & string] : never; +type EP_2529 = Path_2529; + +type Val_2529 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2529 } + : T[K] extends object ? { t: 'o'; props: Val_2529 } + : { t: 'u' }; +}; +type EV_2529 = Val_2529; + +interface Registry_25_29 { + entities: Map; + validators: EV_2529; + paths: Set; + merged: DeepMerge_2529; +} + +type CK_2529 = `p25.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_29, Registry_25_29, CK_2529, EP_2529, EV_2529, DeepMerge_2529 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-30.ts new file mode 100644 index 00000000..e4fd0db1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-30.ts @@ -0,0 +1,50 @@ +// pkg-25/types-30 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2530 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2530 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_30 | null; children: Entity_25_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2530: number; y2530: string; z2530: boolean }; +} + +type Path_2530 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2530}` }[keyof T & string] : never; +type EP_2530 = Path_2530; + +type Val_2530 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2530 } + : T[K] extends object ? { t: 'o'; props: Val_2530 } + : { t: 'u' }; +}; +type EV_2530 = Val_2530; + +interface Registry_25_30 { + entities: Map; + validators: EV_2530; + paths: Set; + merged: DeepMerge_2530; +} + +type CK_2530 = `p25.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_30, Registry_25_30, CK_2530, EP_2530, EV_2530, DeepMerge_2530 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-31.ts new file mode 100644 index 00000000..8e99beba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-31.ts @@ -0,0 +1,50 @@ +// pkg-25/types-31 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2531 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2531 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_31 | null; children: Entity_25_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2531: number; y2531: string; z2531: boolean }; +} + +type Path_2531 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2531}` }[keyof T & string] : never; +type EP_2531 = Path_2531; + +type Val_2531 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2531 } + : T[K] extends object ? { t: 'o'; props: Val_2531 } + : { t: 'u' }; +}; +type EV_2531 = Val_2531; + +interface Registry_25_31 { + entities: Map; + validators: EV_2531; + paths: Set; + merged: DeepMerge_2531; +} + +type CK_2531 = `p25.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_31, Registry_25_31, CK_2531, EP_2531, EV_2531, DeepMerge_2531 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-32.ts new file mode 100644 index 00000000..38c2b64d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-32.ts @@ -0,0 +1,50 @@ +// pkg-25/types-32 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2532 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2532 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_32 | null; children: Entity_25_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2532: number; y2532: string; z2532: boolean }; +} + +type Path_2532 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2532}` }[keyof T & string] : never; +type EP_2532 = Path_2532; + +type Val_2532 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2532 } + : T[K] extends object ? { t: 'o'; props: Val_2532 } + : { t: 'u' }; +}; +type EV_2532 = Val_2532; + +interface Registry_25_32 { + entities: Map; + validators: EV_2532; + paths: Set; + merged: DeepMerge_2532; +} + +type CK_2532 = `p25.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_32, Registry_25_32, CK_2532, EP_2532, EV_2532, DeepMerge_2532 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-33.ts new file mode 100644 index 00000000..4ebd9743 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-33.ts @@ -0,0 +1,50 @@ +// pkg-25/types-33 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2533 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2533 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_33 | null; children: Entity_25_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2533: number; y2533: string; z2533: boolean }; +} + +type Path_2533 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2533}` }[keyof T & string] : never; +type EP_2533 = Path_2533; + +type Val_2533 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2533 } + : T[K] extends object ? { t: 'o'; props: Val_2533 } + : { t: 'u' }; +}; +type EV_2533 = Val_2533; + +interface Registry_25_33 { + entities: Map; + validators: EV_2533; + paths: Set; + merged: DeepMerge_2533; +} + +type CK_2533 = `p25.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_33, Registry_25_33, CK_2533, EP_2533, EV_2533, DeepMerge_2533 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-34.ts new file mode 100644 index 00000000..dea61938 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-34.ts @@ -0,0 +1,50 @@ +// pkg-25/types-34 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2534 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2534 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_34 | null; children: Entity_25_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2534: number; y2534: string; z2534: boolean }; +} + +type Path_2534 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2534}` }[keyof T & string] : never; +type EP_2534 = Path_2534; + +type Val_2534 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2534 } + : T[K] extends object ? { t: 'o'; props: Val_2534 } + : { t: 'u' }; +}; +type EV_2534 = Val_2534; + +interface Registry_25_34 { + entities: Map; + validators: EV_2534; + paths: Set; + merged: DeepMerge_2534; +} + +type CK_2534 = `p25.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_34, Registry_25_34, CK_2534, EP_2534, EV_2534, DeepMerge_2534 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-35.ts new file mode 100644 index 00000000..5b36331f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-35.ts @@ -0,0 +1,50 @@ +// pkg-25/types-35 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2535 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2535 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_35 | null; children: Entity_25_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2535: number; y2535: string; z2535: boolean }; +} + +type Path_2535 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2535}` }[keyof T & string] : never; +type EP_2535 = Path_2535; + +type Val_2535 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2535 } + : T[K] extends object ? { t: 'o'; props: Val_2535 } + : { t: 'u' }; +}; +type EV_2535 = Val_2535; + +interface Registry_25_35 { + entities: Map; + validators: EV_2535; + paths: Set; + merged: DeepMerge_2535; +} + +type CK_2535 = `p25.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_35, Registry_25_35, CK_2535, EP_2535, EV_2535, DeepMerge_2535 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-36.ts new file mode 100644 index 00000000..cd928876 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-36.ts @@ -0,0 +1,50 @@ +// pkg-25/types-36 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2536 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2536 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_36 | null; children: Entity_25_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2536: number; y2536: string; z2536: boolean }; +} + +type Path_2536 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2536}` }[keyof T & string] : never; +type EP_2536 = Path_2536; + +type Val_2536 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2536 } + : T[K] extends object ? { t: 'o'; props: Val_2536 } + : { t: 'u' }; +}; +type EV_2536 = Val_2536; + +interface Registry_25_36 { + entities: Map; + validators: EV_2536; + paths: Set; + merged: DeepMerge_2536; +} + +type CK_2536 = `p25.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_36, Registry_25_36, CK_2536, EP_2536, EV_2536, DeepMerge_2536 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-37.ts new file mode 100644 index 00000000..c44c0af0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-37.ts @@ -0,0 +1,50 @@ +// pkg-25/types-37 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2537 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2537 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_37 | null; children: Entity_25_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2537: number; y2537: string; z2537: boolean }; +} + +type Path_2537 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2537}` }[keyof T & string] : never; +type EP_2537 = Path_2537; + +type Val_2537 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2537 } + : T[K] extends object ? { t: 'o'; props: Val_2537 } + : { t: 'u' }; +}; +type EV_2537 = Val_2537; + +interface Registry_25_37 { + entities: Map; + validators: EV_2537; + paths: Set; + merged: DeepMerge_2537; +} + +type CK_2537 = `p25.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_37, Registry_25_37, CK_2537, EP_2537, EV_2537, DeepMerge_2537 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-38.ts new file mode 100644 index 00000000..82df1d59 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-38.ts @@ -0,0 +1,50 @@ +// pkg-25/types-38 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2538 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2538 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_38 | null; children: Entity_25_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2538: number; y2538: string; z2538: boolean }; +} + +type Path_2538 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2538}` }[keyof T & string] : never; +type EP_2538 = Path_2538; + +type Val_2538 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2538 } + : T[K] extends object ? { t: 'o'; props: Val_2538 } + : { t: 'u' }; +}; +type EV_2538 = Val_2538; + +interface Registry_25_38 { + entities: Map; + validators: EV_2538; + paths: Set; + merged: DeepMerge_2538; +} + +type CK_2538 = `p25.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_38, Registry_25_38, CK_2538, EP_2538, EV_2538, DeepMerge_2538 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-39.ts new file mode 100644 index 00000000..93ca5f29 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-39.ts @@ -0,0 +1,50 @@ +// pkg-25/types-39 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2539 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2539 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_39 | null; children: Entity_25_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2539: number; y2539: string; z2539: boolean }; +} + +type Path_2539 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2539}` }[keyof T & string] : never; +type EP_2539 = Path_2539; + +type Val_2539 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2539 } + : T[K] extends object ? { t: 'o'; props: Val_2539 } + : { t: 'u' }; +}; +type EV_2539 = Val_2539; + +interface Registry_25_39 { + entities: Map; + validators: EV_2539; + paths: Set; + merged: DeepMerge_2539; +} + +type CK_2539 = `p25.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_39, Registry_25_39, CK_2539, EP_2539, EV_2539, DeepMerge_2539 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-40.ts new file mode 100644 index 00000000..e3cd6aa2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-40.ts @@ -0,0 +1,50 @@ +// pkg-25/types-40 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2540 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2540 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_40 | null; children: Entity_25_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2540: number; y2540: string; z2540: boolean }; +} + +type Path_2540 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2540}` }[keyof T & string] : never; +type EP_2540 = Path_2540; + +type Val_2540 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2540 } + : T[K] extends object ? { t: 'o'; props: Val_2540 } + : { t: 'u' }; +}; +type EV_2540 = Val_2540; + +interface Registry_25_40 { + entities: Map; + validators: EV_2540; + paths: Set; + merged: DeepMerge_2540; +} + +type CK_2540 = `p25.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_40, Registry_25_40, CK_2540, EP_2540, EV_2540, DeepMerge_2540 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-41.ts new file mode 100644 index 00000000..f03e51e1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-41.ts @@ -0,0 +1,50 @@ +// pkg-25/types-41 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2541 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2541 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_41 | null; children: Entity_25_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2541: number; y2541: string; z2541: boolean }; +} + +type Path_2541 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2541}` }[keyof T & string] : never; +type EP_2541 = Path_2541; + +type Val_2541 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2541 } + : T[K] extends object ? { t: 'o'; props: Val_2541 } + : { t: 'u' }; +}; +type EV_2541 = Val_2541; + +interface Registry_25_41 { + entities: Map; + validators: EV_2541; + paths: Set; + merged: DeepMerge_2541; +} + +type CK_2541 = `p25.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_41, Registry_25_41, CK_2541, EP_2541, EV_2541, DeepMerge_2541 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-42.ts new file mode 100644 index 00000000..ebc9d914 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-42.ts @@ -0,0 +1,50 @@ +// pkg-25/types-42 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2542 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2542 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_42 | null; children: Entity_25_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2542: number; y2542: string; z2542: boolean }; +} + +type Path_2542 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2542}` }[keyof T & string] : never; +type EP_2542 = Path_2542; + +type Val_2542 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2542 } + : T[K] extends object ? { t: 'o'; props: Val_2542 } + : { t: 'u' }; +}; +type EV_2542 = Val_2542; + +interface Registry_25_42 { + entities: Map; + validators: EV_2542; + paths: Set; + merged: DeepMerge_2542; +} + +type CK_2542 = `p25.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_42, Registry_25_42, CK_2542, EP_2542, EV_2542, DeepMerge_2542 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-43.ts new file mode 100644 index 00000000..c0d0c6e8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-43.ts @@ -0,0 +1,50 @@ +// pkg-25/types-43 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2543 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2543 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_43 | null; children: Entity_25_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2543: number; y2543: string; z2543: boolean }; +} + +type Path_2543 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2543}` }[keyof T & string] : never; +type EP_2543 = Path_2543; + +type Val_2543 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2543 } + : T[K] extends object ? { t: 'o'; props: Val_2543 } + : { t: 'u' }; +}; +type EV_2543 = Val_2543; + +interface Registry_25_43 { + entities: Map; + validators: EV_2543; + paths: Set; + merged: DeepMerge_2543; +} + +type CK_2543 = `p25.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_43, Registry_25_43, CK_2543, EP_2543, EV_2543, DeepMerge_2543 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-44.ts new file mode 100644 index 00000000..0c355589 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-44.ts @@ -0,0 +1,50 @@ +// pkg-25/types-44 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2544 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2544 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_44 | null; children: Entity_25_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2544: number; y2544: string; z2544: boolean }; +} + +type Path_2544 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2544}` }[keyof T & string] : never; +type EP_2544 = Path_2544; + +type Val_2544 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2544 } + : T[K] extends object ? { t: 'o'; props: Val_2544 } + : { t: 'u' }; +}; +type EV_2544 = Val_2544; + +interface Registry_25_44 { + entities: Map; + validators: EV_2544; + paths: Set; + merged: DeepMerge_2544; +} + +type CK_2544 = `p25.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_44, Registry_25_44, CK_2544, EP_2544, EV_2544, DeepMerge_2544 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-45.ts new file mode 100644 index 00000000..277f6165 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-45.ts @@ -0,0 +1,50 @@ +// pkg-25/types-45 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2545 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2545 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_45 | null; children: Entity_25_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2545: number; y2545: string; z2545: boolean }; +} + +type Path_2545 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2545}` }[keyof T & string] : never; +type EP_2545 = Path_2545; + +type Val_2545 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2545 } + : T[K] extends object ? { t: 'o'; props: Val_2545 } + : { t: 'u' }; +}; +type EV_2545 = Val_2545; + +interface Registry_25_45 { + entities: Map; + validators: EV_2545; + paths: Set; + merged: DeepMerge_2545; +} + +type CK_2545 = `p25.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_45, Registry_25_45, CK_2545, EP_2545, EV_2545, DeepMerge_2545 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-46.ts new file mode 100644 index 00000000..b28f6108 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-46.ts @@ -0,0 +1,50 @@ +// pkg-25/types-46 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2546 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2546 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_46 | null; children: Entity_25_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2546: number; y2546: string; z2546: boolean }; +} + +type Path_2546 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2546}` }[keyof T & string] : never; +type EP_2546 = Path_2546; + +type Val_2546 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2546 } + : T[K] extends object ? { t: 'o'; props: Val_2546 } + : { t: 'u' }; +}; +type EV_2546 = Val_2546; + +interface Registry_25_46 { + entities: Map; + validators: EV_2546; + paths: Set; + merged: DeepMerge_2546; +} + +type CK_2546 = `p25.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_46, Registry_25_46, CK_2546, EP_2546, EV_2546, DeepMerge_2546 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-47.ts new file mode 100644 index 00000000..290125f0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-47.ts @@ -0,0 +1,50 @@ +// pkg-25/types-47 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2547 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2547 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_47 | null; children: Entity_25_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2547: number; y2547: string; z2547: boolean }; +} + +type Path_2547 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2547}` }[keyof T & string] : never; +type EP_2547 = Path_2547; + +type Val_2547 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2547 } + : T[K] extends object ? { t: 'o'; props: Val_2547 } + : { t: 'u' }; +}; +type EV_2547 = Val_2547; + +interface Registry_25_47 { + entities: Map; + validators: EV_2547; + paths: Set; + merged: DeepMerge_2547; +} + +type CK_2547 = `p25.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_47, Registry_25_47, CK_2547, EP_2547, EV_2547, DeepMerge_2547 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-48.ts new file mode 100644 index 00000000..2e288c3d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-48.ts @@ -0,0 +1,50 @@ +// pkg-25/types-48 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2548 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2548 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_48 | null; children: Entity_25_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2548: number; y2548: string; z2548: boolean }; +} + +type Path_2548 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2548}` }[keyof T & string] : never; +type EP_2548 = Path_2548; + +type Val_2548 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2548 } + : T[K] extends object ? { t: 'o'; props: Val_2548 } + : { t: 'u' }; +}; +type EV_2548 = Val_2548; + +interface Registry_25_48 { + entities: Map; + validators: EV_2548; + paths: Set; + merged: DeepMerge_2548; +} + +type CK_2548 = `p25.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_48, Registry_25_48, CK_2548, EP_2548, EV_2548, DeepMerge_2548 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-49.ts new file mode 100644 index 00000000..129f4e00 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-49.ts @@ -0,0 +1,50 @@ +// pkg-25/types-49 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2549 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2549 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_49 | null; children: Entity_25_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2549: number; y2549: string; z2549: boolean }; +} + +type Path_2549 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2549}` }[keyof T & string] : never; +type EP_2549 = Path_2549; + +type Val_2549 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2549 } + : T[K] extends object ? { t: 'o'; props: Val_2549 } + : { t: 'u' }; +}; +type EV_2549 = Val_2549; + +interface Registry_25_49 { + entities: Map; + validators: EV_2549; + paths: Set; + merged: DeepMerge_2549; +} + +type CK_2549 = `p25.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_49, Registry_25_49, CK_2549, EP_2549, EV_2549, DeepMerge_2549 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-25/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-25/types-50.ts new file mode 100644 index 00000000..d3d0fe3f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-25/types-50.ts @@ -0,0 +1,50 @@ +// pkg-25/types-50 - heavy interconnected types + +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; +import type { Entity_22_01, Registry_22_01 } from '../pkg-22/types-01'; +import type { Entity_22_10, Registry_22_10 } from '../pkg-22/types-10'; +import type { Entity_22_20, Registry_22_20 } from '../pkg-22/types-20'; + +type DeepMerge_2550 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2550 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_25_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_25_50 | null; children: Entity_25_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2550: number; y2550: string; z2550: boolean }; +} + +type Path_2550 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2550}` }[keyof T & string] : never; +type EP_2550 = Path_2550; + +type Val_2550 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2550 } + : T[K] extends object ? { t: 'o'; props: Val_2550 } + : { t: 'u' }; +}; +type EV_2550 = Val_2550; + +interface Registry_25_50 { + entities: Map; + validators: EV_2550; + paths: Set; + merged: DeepMerge_2550; +} + +type CK_2550 = `p25.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_25_50, Registry_25_50, CK_2550, EP_2550, EV_2550, DeepMerge_2550 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-26/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-01.ts new file mode 100644 index 00000000..4047520a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-01.ts @@ -0,0 +1,50 @@ +// pkg-26/types-01 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2601 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2601 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_01 | null; children: Entity_26_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2601: number; y2601: string; z2601: boolean }; +} + +type Path_2601 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2601}` }[keyof T & string] : never; +type EP_2601 = Path_2601; + +type Val_2601 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2601 } + : T[K] extends object ? { t: 'o'; props: Val_2601 } + : { t: 'u' }; +}; +type EV_2601 = Val_2601; + +interface Registry_26_01 { + entities: Map; + validators: EV_2601; + paths: Set; + merged: DeepMerge_2601; +} + +type CK_2601 = `p26.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_01, Registry_26_01, CK_2601, EP_2601, EV_2601, DeepMerge_2601 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-02.ts new file mode 100644 index 00000000..f6aee084 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-02.ts @@ -0,0 +1,50 @@ +// pkg-26/types-02 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2602 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2602 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_02 | null; children: Entity_26_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2602: number; y2602: string; z2602: boolean }; +} + +type Path_2602 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2602}` }[keyof T & string] : never; +type EP_2602 = Path_2602; + +type Val_2602 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2602 } + : T[K] extends object ? { t: 'o'; props: Val_2602 } + : { t: 'u' }; +}; +type EV_2602 = Val_2602; + +interface Registry_26_02 { + entities: Map; + validators: EV_2602; + paths: Set; + merged: DeepMerge_2602; +} + +type CK_2602 = `p26.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_02, Registry_26_02, CK_2602, EP_2602, EV_2602, DeepMerge_2602 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-03.ts new file mode 100644 index 00000000..aa653fa2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-03.ts @@ -0,0 +1,50 @@ +// pkg-26/types-03 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2603 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2603 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_03 | null; children: Entity_26_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2603: number; y2603: string; z2603: boolean }; +} + +type Path_2603 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2603}` }[keyof T & string] : never; +type EP_2603 = Path_2603; + +type Val_2603 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2603 } + : T[K] extends object ? { t: 'o'; props: Val_2603 } + : { t: 'u' }; +}; +type EV_2603 = Val_2603; + +interface Registry_26_03 { + entities: Map; + validators: EV_2603; + paths: Set; + merged: DeepMerge_2603; +} + +type CK_2603 = `p26.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_03, Registry_26_03, CK_2603, EP_2603, EV_2603, DeepMerge_2603 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-04.ts new file mode 100644 index 00000000..26138641 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-04.ts @@ -0,0 +1,50 @@ +// pkg-26/types-04 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2604 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2604 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_04 | null; children: Entity_26_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2604: number; y2604: string; z2604: boolean }; +} + +type Path_2604 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2604}` }[keyof T & string] : never; +type EP_2604 = Path_2604; + +type Val_2604 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2604 } + : T[K] extends object ? { t: 'o'; props: Val_2604 } + : { t: 'u' }; +}; +type EV_2604 = Val_2604; + +interface Registry_26_04 { + entities: Map; + validators: EV_2604; + paths: Set; + merged: DeepMerge_2604; +} + +type CK_2604 = `p26.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_04, Registry_26_04, CK_2604, EP_2604, EV_2604, DeepMerge_2604 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-05.ts new file mode 100644 index 00000000..dd7223d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-05.ts @@ -0,0 +1,50 @@ +// pkg-26/types-05 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2605 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2605 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_05 | null; children: Entity_26_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2605: number; y2605: string; z2605: boolean }; +} + +type Path_2605 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2605}` }[keyof T & string] : never; +type EP_2605 = Path_2605; + +type Val_2605 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2605 } + : T[K] extends object ? { t: 'o'; props: Val_2605 } + : { t: 'u' }; +}; +type EV_2605 = Val_2605; + +interface Registry_26_05 { + entities: Map; + validators: EV_2605; + paths: Set; + merged: DeepMerge_2605; +} + +type CK_2605 = `p26.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_05, Registry_26_05, CK_2605, EP_2605, EV_2605, DeepMerge_2605 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-06.ts new file mode 100644 index 00000000..e53340b1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-06.ts @@ -0,0 +1,50 @@ +// pkg-26/types-06 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2606 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2606 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_06 | null; children: Entity_26_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2606: number; y2606: string; z2606: boolean }; +} + +type Path_2606 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2606}` }[keyof T & string] : never; +type EP_2606 = Path_2606; + +type Val_2606 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2606 } + : T[K] extends object ? { t: 'o'; props: Val_2606 } + : { t: 'u' }; +}; +type EV_2606 = Val_2606; + +interface Registry_26_06 { + entities: Map; + validators: EV_2606; + paths: Set; + merged: DeepMerge_2606; +} + +type CK_2606 = `p26.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_06, Registry_26_06, CK_2606, EP_2606, EV_2606, DeepMerge_2606 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-07.ts new file mode 100644 index 00000000..69835028 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-07.ts @@ -0,0 +1,50 @@ +// pkg-26/types-07 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2607 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2607 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_07 | null; children: Entity_26_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2607: number; y2607: string; z2607: boolean }; +} + +type Path_2607 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2607}` }[keyof T & string] : never; +type EP_2607 = Path_2607; + +type Val_2607 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2607 } + : T[K] extends object ? { t: 'o'; props: Val_2607 } + : { t: 'u' }; +}; +type EV_2607 = Val_2607; + +interface Registry_26_07 { + entities: Map; + validators: EV_2607; + paths: Set; + merged: DeepMerge_2607; +} + +type CK_2607 = `p26.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_07, Registry_26_07, CK_2607, EP_2607, EV_2607, DeepMerge_2607 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-08.ts new file mode 100644 index 00000000..68461442 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-08.ts @@ -0,0 +1,50 @@ +// pkg-26/types-08 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2608 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2608 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_08 | null; children: Entity_26_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2608: number; y2608: string; z2608: boolean }; +} + +type Path_2608 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2608}` }[keyof T & string] : never; +type EP_2608 = Path_2608; + +type Val_2608 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2608 } + : T[K] extends object ? { t: 'o'; props: Val_2608 } + : { t: 'u' }; +}; +type EV_2608 = Val_2608; + +interface Registry_26_08 { + entities: Map; + validators: EV_2608; + paths: Set; + merged: DeepMerge_2608; +} + +type CK_2608 = `p26.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_08, Registry_26_08, CK_2608, EP_2608, EV_2608, DeepMerge_2608 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-09.ts new file mode 100644 index 00000000..4ee73f7c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-09.ts @@ -0,0 +1,50 @@ +// pkg-26/types-09 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2609 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2609 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_09 | null; children: Entity_26_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2609: number; y2609: string; z2609: boolean }; +} + +type Path_2609 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2609}` }[keyof T & string] : never; +type EP_2609 = Path_2609; + +type Val_2609 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2609 } + : T[K] extends object ? { t: 'o'; props: Val_2609 } + : { t: 'u' }; +}; +type EV_2609 = Val_2609; + +interface Registry_26_09 { + entities: Map; + validators: EV_2609; + paths: Set; + merged: DeepMerge_2609; +} + +type CK_2609 = `p26.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_09, Registry_26_09, CK_2609, EP_2609, EV_2609, DeepMerge_2609 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-10.ts new file mode 100644 index 00000000..c7702229 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-10.ts @@ -0,0 +1,50 @@ +// pkg-26/types-10 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2610 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2610 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_10 | null; children: Entity_26_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2610: number; y2610: string; z2610: boolean }; +} + +type Path_2610 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2610}` }[keyof T & string] : never; +type EP_2610 = Path_2610; + +type Val_2610 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2610 } + : T[K] extends object ? { t: 'o'; props: Val_2610 } + : { t: 'u' }; +}; +type EV_2610 = Val_2610; + +interface Registry_26_10 { + entities: Map; + validators: EV_2610; + paths: Set; + merged: DeepMerge_2610; +} + +type CK_2610 = `p26.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_10, Registry_26_10, CK_2610, EP_2610, EV_2610, DeepMerge_2610 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-11.ts new file mode 100644 index 00000000..c6da96b0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-11.ts @@ -0,0 +1,50 @@ +// pkg-26/types-11 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2611 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2611 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_11 | null; children: Entity_26_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2611: number; y2611: string; z2611: boolean }; +} + +type Path_2611 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2611}` }[keyof T & string] : never; +type EP_2611 = Path_2611; + +type Val_2611 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2611 } + : T[K] extends object ? { t: 'o'; props: Val_2611 } + : { t: 'u' }; +}; +type EV_2611 = Val_2611; + +interface Registry_26_11 { + entities: Map; + validators: EV_2611; + paths: Set; + merged: DeepMerge_2611; +} + +type CK_2611 = `p26.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_11, Registry_26_11, CK_2611, EP_2611, EV_2611, DeepMerge_2611 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-12.ts new file mode 100644 index 00000000..2a9f3e24 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-12.ts @@ -0,0 +1,50 @@ +// pkg-26/types-12 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2612 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2612 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_12 | null; children: Entity_26_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2612: number; y2612: string; z2612: boolean }; +} + +type Path_2612 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2612}` }[keyof T & string] : never; +type EP_2612 = Path_2612; + +type Val_2612 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2612 } + : T[K] extends object ? { t: 'o'; props: Val_2612 } + : { t: 'u' }; +}; +type EV_2612 = Val_2612; + +interface Registry_26_12 { + entities: Map; + validators: EV_2612; + paths: Set; + merged: DeepMerge_2612; +} + +type CK_2612 = `p26.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_12, Registry_26_12, CK_2612, EP_2612, EV_2612, DeepMerge_2612 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-13.ts new file mode 100644 index 00000000..391cff84 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-13.ts @@ -0,0 +1,50 @@ +// pkg-26/types-13 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2613 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2613 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_13 | null; children: Entity_26_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2613: number; y2613: string; z2613: boolean }; +} + +type Path_2613 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2613}` }[keyof T & string] : never; +type EP_2613 = Path_2613; + +type Val_2613 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2613 } + : T[K] extends object ? { t: 'o'; props: Val_2613 } + : { t: 'u' }; +}; +type EV_2613 = Val_2613; + +interface Registry_26_13 { + entities: Map; + validators: EV_2613; + paths: Set; + merged: DeepMerge_2613; +} + +type CK_2613 = `p26.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_13, Registry_26_13, CK_2613, EP_2613, EV_2613, DeepMerge_2613 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-14.ts new file mode 100644 index 00000000..03a53729 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-14.ts @@ -0,0 +1,50 @@ +// pkg-26/types-14 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2614 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2614 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_14 | null; children: Entity_26_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2614: number; y2614: string; z2614: boolean }; +} + +type Path_2614 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2614}` }[keyof T & string] : never; +type EP_2614 = Path_2614; + +type Val_2614 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2614 } + : T[K] extends object ? { t: 'o'; props: Val_2614 } + : { t: 'u' }; +}; +type EV_2614 = Val_2614; + +interface Registry_26_14 { + entities: Map; + validators: EV_2614; + paths: Set; + merged: DeepMerge_2614; +} + +type CK_2614 = `p26.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_14, Registry_26_14, CK_2614, EP_2614, EV_2614, DeepMerge_2614 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-15.ts new file mode 100644 index 00000000..6824c852 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-15.ts @@ -0,0 +1,50 @@ +// pkg-26/types-15 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2615 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2615 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_15 | null; children: Entity_26_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2615: number; y2615: string; z2615: boolean }; +} + +type Path_2615 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2615}` }[keyof T & string] : never; +type EP_2615 = Path_2615; + +type Val_2615 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2615 } + : T[K] extends object ? { t: 'o'; props: Val_2615 } + : { t: 'u' }; +}; +type EV_2615 = Val_2615; + +interface Registry_26_15 { + entities: Map; + validators: EV_2615; + paths: Set; + merged: DeepMerge_2615; +} + +type CK_2615 = `p26.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_15, Registry_26_15, CK_2615, EP_2615, EV_2615, DeepMerge_2615 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-16.ts new file mode 100644 index 00000000..14dc32b9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-16.ts @@ -0,0 +1,50 @@ +// pkg-26/types-16 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2616 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2616 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_16 | null; children: Entity_26_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2616: number; y2616: string; z2616: boolean }; +} + +type Path_2616 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2616}` }[keyof T & string] : never; +type EP_2616 = Path_2616; + +type Val_2616 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2616 } + : T[K] extends object ? { t: 'o'; props: Val_2616 } + : { t: 'u' }; +}; +type EV_2616 = Val_2616; + +interface Registry_26_16 { + entities: Map; + validators: EV_2616; + paths: Set; + merged: DeepMerge_2616; +} + +type CK_2616 = `p26.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_16, Registry_26_16, CK_2616, EP_2616, EV_2616, DeepMerge_2616 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-17.ts new file mode 100644 index 00000000..604ff94e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-17.ts @@ -0,0 +1,50 @@ +// pkg-26/types-17 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2617 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2617 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_17 | null; children: Entity_26_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2617: number; y2617: string; z2617: boolean }; +} + +type Path_2617 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2617}` }[keyof T & string] : never; +type EP_2617 = Path_2617; + +type Val_2617 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2617 } + : T[K] extends object ? { t: 'o'; props: Val_2617 } + : { t: 'u' }; +}; +type EV_2617 = Val_2617; + +interface Registry_26_17 { + entities: Map; + validators: EV_2617; + paths: Set; + merged: DeepMerge_2617; +} + +type CK_2617 = `p26.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_17, Registry_26_17, CK_2617, EP_2617, EV_2617, DeepMerge_2617 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-18.ts new file mode 100644 index 00000000..073cbc80 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-18.ts @@ -0,0 +1,50 @@ +// pkg-26/types-18 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2618 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2618 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_18 | null; children: Entity_26_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2618: number; y2618: string; z2618: boolean }; +} + +type Path_2618 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2618}` }[keyof T & string] : never; +type EP_2618 = Path_2618; + +type Val_2618 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2618 } + : T[K] extends object ? { t: 'o'; props: Val_2618 } + : { t: 'u' }; +}; +type EV_2618 = Val_2618; + +interface Registry_26_18 { + entities: Map; + validators: EV_2618; + paths: Set; + merged: DeepMerge_2618; +} + +type CK_2618 = `p26.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_18, Registry_26_18, CK_2618, EP_2618, EV_2618, DeepMerge_2618 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-19.ts new file mode 100644 index 00000000..6997938d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-19.ts @@ -0,0 +1,50 @@ +// pkg-26/types-19 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2619 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2619 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_19 | null; children: Entity_26_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2619: number; y2619: string; z2619: boolean }; +} + +type Path_2619 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2619}` }[keyof T & string] : never; +type EP_2619 = Path_2619; + +type Val_2619 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2619 } + : T[K] extends object ? { t: 'o'; props: Val_2619 } + : { t: 'u' }; +}; +type EV_2619 = Val_2619; + +interface Registry_26_19 { + entities: Map; + validators: EV_2619; + paths: Set; + merged: DeepMerge_2619; +} + +type CK_2619 = `p26.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_19, Registry_26_19, CK_2619, EP_2619, EV_2619, DeepMerge_2619 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-20.ts new file mode 100644 index 00000000..3b8c2567 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-20.ts @@ -0,0 +1,50 @@ +// pkg-26/types-20 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2620 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2620 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_20 | null; children: Entity_26_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2620: number; y2620: string; z2620: boolean }; +} + +type Path_2620 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2620}` }[keyof T & string] : never; +type EP_2620 = Path_2620; + +type Val_2620 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2620 } + : T[K] extends object ? { t: 'o'; props: Val_2620 } + : { t: 'u' }; +}; +type EV_2620 = Val_2620; + +interface Registry_26_20 { + entities: Map; + validators: EV_2620; + paths: Set; + merged: DeepMerge_2620; +} + +type CK_2620 = `p26.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_20, Registry_26_20, CK_2620, EP_2620, EV_2620, DeepMerge_2620 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-21.ts new file mode 100644 index 00000000..fd5d8aee --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-21.ts @@ -0,0 +1,50 @@ +// pkg-26/types-21 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2621 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2621 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_21 | null; children: Entity_26_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2621: number; y2621: string; z2621: boolean }; +} + +type Path_2621 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2621}` }[keyof T & string] : never; +type EP_2621 = Path_2621; + +type Val_2621 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2621 } + : T[K] extends object ? { t: 'o'; props: Val_2621 } + : { t: 'u' }; +}; +type EV_2621 = Val_2621; + +interface Registry_26_21 { + entities: Map; + validators: EV_2621; + paths: Set; + merged: DeepMerge_2621; +} + +type CK_2621 = `p26.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_21, Registry_26_21, CK_2621, EP_2621, EV_2621, DeepMerge_2621 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-22.ts new file mode 100644 index 00000000..ba9e24d1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-22.ts @@ -0,0 +1,50 @@ +// pkg-26/types-22 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2622 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2622 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_22 | null; children: Entity_26_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2622: number; y2622: string; z2622: boolean }; +} + +type Path_2622 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2622}` }[keyof T & string] : never; +type EP_2622 = Path_2622; + +type Val_2622 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2622 } + : T[K] extends object ? { t: 'o'; props: Val_2622 } + : { t: 'u' }; +}; +type EV_2622 = Val_2622; + +interface Registry_26_22 { + entities: Map; + validators: EV_2622; + paths: Set; + merged: DeepMerge_2622; +} + +type CK_2622 = `p26.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_22, Registry_26_22, CK_2622, EP_2622, EV_2622, DeepMerge_2622 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-23.ts new file mode 100644 index 00000000..c0344cfa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-23.ts @@ -0,0 +1,50 @@ +// pkg-26/types-23 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2623 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2623 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_23 | null; children: Entity_26_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2623: number; y2623: string; z2623: boolean }; +} + +type Path_2623 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2623}` }[keyof T & string] : never; +type EP_2623 = Path_2623; + +type Val_2623 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2623 } + : T[K] extends object ? { t: 'o'; props: Val_2623 } + : { t: 'u' }; +}; +type EV_2623 = Val_2623; + +interface Registry_26_23 { + entities: Map; + validators: EV_2623; + paths: Set; + merged: DeepMerge_2623; +} + +type CK_2623 = `p26.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_23, Registry_26_23, CK_2623, EP_2623, EV_2623, DeepMerge_2623 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-24.ts new file mode 100644 index 00000000..59583318 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-24.ts @@ -0,0 +1,50 @@ +// pkg-26/types-24 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2624 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2624 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_24 | null; children: Entity_26_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2624: number; y2624: string; z2624: boolean }; +} + +type Path_2624 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2624}` }[keyof T & string] : never; +type EP_2624 = Path_2624; + +type Val_2624 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2624 } + : T[K] extends object ? { t: 'o'; props: Val_2624 } + : { t: 'u' }; +}; +type EV_2624 = Val_2624; + +interface Registry_26_24 { + entities: Map; + validators: EV_2624; + paths: Set; + merged: DeepMerge_2624; +} + +type CK_2624 = `p26.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_24, Registry_26_24, CK_2624, EP_2624, EV_2624, DeepMerge_2624 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-25.ts new file mode 100644 index 00000000..0b0e9c15 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-25.ts @@ -0,0 +1,50 @@ +// pkg-26/types-25 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2625 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2625 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_25 | null; children: Entity_26_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2625: number; y2625: string; z2625: boolean }; +} + +type Path_2625 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2625}` }[keyof T & string] : never; +type EP_2625 = Path_2625; + +type Val_2625 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2625 } + : T[K] extends object ? { t: 'o'; props: Val_2625 } + : { t: 'u' }; +}; +type EV_2625 = Val_2625; + +interface Registry_26_25 { + entities: Map; + validators: EV_2625; + paths: Set; + merged: DeepMerge_2625; +} + +type CK_2625 = `p26.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_25, Registry_26_25, CK_2625, EP_2625, EV_2625, DeepMerge_2625 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-26.ts new file mode 100644 index 00000000..b5a6e674 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-26.ts @@ -0,0 +1,50 @@ +// pkg-26/types-26 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2626 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2626 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_26 | null; children: Entity_26_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2626: number; y2626: string; z2626: boolean }; +} + +type Path_2626 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2626}` }[keyof T & string] : never; +type EP_2626 = Path_2626; + +type Val_2626 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2626 } + : T[K] extends object ? { t: 'o'; props: Val_2626 } + : { t: 'u' }; +}; +type EV_2626 = Val_2626; + +interface Registry_26_26 { + entities: Map; + validators: EV_2626; + paths: Set; + merged: DeepMerge_2626; +} + +type CK_2626 = `p26.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_26, Registry_26_26, CK_2626, EP_2626, EV_2626, DeepMerge_2626 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-27.ts new file mode 100644 index 00000000..2378e2fd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-27.ts @@ -0,0 +1,50 @@ +// pkg-26/types-27 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2627 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2627 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_27 | null; children: Entity_26_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2627: number; y2627: string; z2627: boolean }; +} + +type Path_2627 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2627}` }[keyof T & string] : never; +type EP_2627 = Path_2627; + +type Val_2627 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2627 } + : T[K] extends object ? { t: 'o'; props: Val_2627 } + : { t: 'u' }; +}; +type EV_2627 = Val_2627; + +interface Registry_26_27 { + entities: Map; + validators: EV_2627; + paths: Set; + merged: DeepMerge_2627; +} + +type CK_2627 = `p26.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_27, Registry_26_27, CK_2627, EP_2627, EV_2627, DeepMerge_2627 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-28.ts new file mode 100644 index 00000000..1e6c1352 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-28.ts @@ -0,0 +1,50 @@ +// pkg-26/types-28 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2628 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2628 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_28 | null; children: Entity_26_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2628: number; y2628: string; z2628: boolean }; +} + +type Path_2628 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2628}` }[keyof T & string] : never; +type EP_2628 = Path_2628; + +type Val_2628 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2628 } + : T[K] extends object ? { t: 'o'; props: Val_2628 } + : { t: 'u' }; +}; +type EV_2628 = Val_2628; + +interface Registry_26_28 { + entities: Map; + validators: EV_2628; + paths: Set; + merged: DeepMerge_2628; +} + +type CK_2628 = `p26.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_28, Registry_26_28, CK_2628, EP_2628, EV_2628, DeepMerge_2628 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-29.ts new file mode 100644 index 00000000..ba60021d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-29.ts @@ -0,0 +1,50 @@ +// pkg-26/types-29 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2629 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2629 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_29 | null; children: Entity_26_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2629: number; y2629: string; z2629: boolean }; +} + +type Path_2629 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2629}` }[keyof T & string] : never; +type EP_2629 = Path_2629; + +type Val_2629 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2629 } + : T[K] extends object ? { t: 'o'; props: Val_2629 } + : { t: 'u' }; +}; +type EV_2629 = Val_2629; + +interface Registry_26_29 { + entities: Map; + validators: EV_2629; + paths: Set; + merged: DeepMerge_2629; +} + +type CK_2629 = `p26.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_29, Registry_26_29, CK_2629, EP_2629, EV_2629, DeepMerge_2629 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-30.ts new file mode 100644 index 00000000..166f41b9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-30.ts @@ -0,0 +1,50 @@ +// pkg-26/types-30 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2630 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2630 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_30 | null; children: Entity_26_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2630: number; y2630: string; z2630: boolean }; +} + +type Path_2630 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2630}` }[keyof T & string] : never; +type EP_2630 = Path_2630; + +type Val_2630 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2630 } + : T[K] extends object ? { t: 'o'; props: Val_2630 } + : { t: 'u' }; +}; +type EV_2630 = Val_2630; + +interface Registry_26_30 { + entities: Map; + validators: EV_2630; + paths: Set; + merged: DeepMerge_2630; +} + +type CK_2630 = `p26.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_30, Registry_26_30, CK_2630, EP_2630, EV_2630, DeepMerge_2630 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-31.ts new file mode 100644 index 00000000..46260ad8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-31.ts @@ -0,0 +1,50 @@ +// pkg-26/types-31 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2631 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2631 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_31 | null; children: Entity_26_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2631: number; y2631: string; z2631: boolean }; +} + +type Path_2631 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2631}` }[keyof T & string] : never; +type EP_2631 = Path_2631; + +type Val_2631 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2631 } + : T[K] extends object ? { t: 'o'; props: Val_2631 } + : { t: 'u' }; +}; +type EV_2631 = Val_2631; + +interface Registry_26_31 { + entities: Map; + validators: EV_2631; + paths: Set; + merged: DeepMerge_2631; +} + +type CK_2631 = `p26.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_31, Registry_26_31, CK_2631, EP_2631, EV_2631, DeepMerge_2631 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-32.ts new file mode 100644 index 00000000..e109dbd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-32.ts @@ -0,0 +1,50 @@ +// pkg-26/types-32 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2632 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2632 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_32 | null; children: Entity_26_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2632: number; y2632: string; z2632: boolean }; +} + +type Path_2632 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2632}` }[keyof T & string] : never; +type EP_2632 = Path_2632; + +type Val_2632 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2632 } + : T[K] extends object ? { t: 'o'; props: Val_2632 } + : { t: 'u' }; +}; +type EV_2632 = Val_2632; + +interface Registry_26_32 { + entities: Map; + validators: EV_2632; + paths: Set; + merged: DeepMerge_2632; +} + +type CK_2632 = `p26.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_32, Registry_26_32, CK_2632, EP_2632, EV_2632, DeepMerge_2632 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-33.ts new file mode 100644 index 00000000..e69c7701 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-33.ts @@ -0,0 +1,50 @@ +// pkg-26/types-33 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2633 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2633 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_33 | null; children: Entity_26_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2633: number; y2633: string; z2633: boolean }; +} + +type Path_2633 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2633}` }[keyof T & string] : never; +type EP_2633 = Path_2633; + +type Val_2633 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2633 } + : T[K] extends object ? { t: 'o'; props: Val_2633 } + : { t: 'u' }; +}; +type EV_2633 = Val_2633; + +interface Registry_26_33 { + entities: Map; + validators: EV_2633; + paths: Set; + merged: DeepMerge_2633; +} + +type CK_2633 = `p26.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_33, Registry_26_33, CK_2633, EP_2633, EV_2633, DeepMerge_2633 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-34.ts new file mode 100644 index 00000000..ee8a7a14 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-34.ts @@ -0,0 +1,50 @@ +// pkg-26/types-34 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2634 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2634 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_34 | null; children: Entity_26_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2634: number; y2634: string; z2634: boolean }; +} + +type Path_2634 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2634}` }[keyof T & string] : never; +type EP_2634 = Path_2634; + +type Val_2634 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2634 } + : T[K] extends object ? { t: 'o'; props: Val_2634 } + : { t: 'u' }; +}; +type EV_2634 = Val_2634; + +interface Registry_26_34 { + entities: Map; + validators: EV_2634; + paths: Set; + merged: DeepMerge_2634; +} + +type CK_2634 = `p26.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_34, Registry_26_34, CK_2634, EP_2634, EV_2634, DeepMerge_2634 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-35.ts new file mode 100644 index 00000000..55857b99 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-35.ts @@ -0,0 +1,50 @@ +// pkg-26/types-35 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2635 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2635 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_35 | null; children: Entity_26_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2635: number; y2635: string; z2635: boolean }; +} + +type Path_2635 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2635}` }[keyof T & string] : never; +type EP_2635 = Path_2635; + +type Val_2635 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2635 } + : T[K] extends object ? { t: 'o'; props: Val_2635 } + : { t: 'u' }; +}; +type EV_2635 = Val_2635; + +interface Registry_26_35 { + entities: Map; + validators: EV_2635; + paths: Set; + merged: DeepMerge_2635; +} + +type CK_2635 = `p26.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_35, Registry_26_35, CK_2635, EP_2635, EV_2635, DeepMerge_2635 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-36.ts new file mode 100644 index 00000000..17077e73 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-36.ts @@ -0,0 +1,50 @@ +// pkg-26/types-36 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2636 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2636 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_36 | null; children: Entity_26_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2636: number; y2636: string; z2636: boolean }; +} + +type Path_2636 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2636}` }[keyof T & string] : never; +type EP_2636 = Path_2636; + +type Val_2636 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2636 } + : T[K] extends object ? { t: 'o'; props: Val_2636 } + : { t: 'u' }; +}; +type EV_2636 = Val_2636; + +interface Registry_26_36 { + entities: Map; + validators: EV_2636; + paths: Set; + merged: DeepMerge_2636; +} + +type CK_2636 = `p26.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_36, Registry_26_36, CK_2636, EP_2636, EV_2636, DeepMerge_2636 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-37.ts new file mode 100644 index 00000000..4647f2ab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-37.ts @@ -0,0 +1,50 @@ +// pkg-26/types-37 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2637 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2637 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_37 | null; children: Entity_26_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2637: number; y2637: string; z2637: boolean }; +} + +type Path_2637 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2637}` }[keyof T & string] : never; +type EP_2637 = Path_2637; + +type Val_2637 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2637 } + : T[K] extends object ? { t: 'o'; props: Val_2637 } + : { t: 'u' }; +}; +type EV_2637 = Val_2637; + +interface Registry_26_37 { + entities: Map; + validators: EV_2637; + paths: Set; + merged: DeepMerge_2637; +} + +type CK_2637 = `p26.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_37, Registry_26_37, CK_2637, EP_2637, EV_2637, DeepMerge_2637 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-38.ts new file mode 100644 index 00000000..58c1f768 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-38.ts @@ -0,0 +1,50 @@ +// pkg-26/types-38 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2638 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2638 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_38 | null; children: Entity_26_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2638: number; y2638: string; z2638: boolean }; +} + +type Path_2638 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2638}` }[keyof T & string] : never; +type EP_2638 = Path_2638; + +type Val_2638 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2638 } + : T[K] extends object ? { t: 'o'; props: Val_2638 } + : { t: 'u' }; +}; +type EV_2638 = Val_2638; + +interface Registry_26_38 { + entities: Map; + validators: EV_2638; + paths: Set; + merged: DeepMerge_2638; +} + +type CK_2638 = `p26.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_38, Registry_26_38, CK_2638, EP_2638, EV_2638, DeepMerge_2638 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-39.ts new file mode 100644 index 00000000..fd26d717 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-39.ts @@ -0,0 +1,50 @@ +// pkg-26/types-39 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2639 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2639 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_39 | null; children: Entity_26_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2639: number; y2639: string; z2639: boolean }; +} + +type Path_2639 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2639}` }[keyof T & string] : never; +type EP_2639 = Path_2639; + +type Val_2639 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2639 } + : T[K] extends object ? { t: 'o'; props: Val_2639 } + : { t: 'u' }; +}; +type EV_2639 = Val_2639; + +interface Registry_26_39 { + entities: Map; + validators: EV_2639; + paths: Set; + merged: DeepMerge_2639; +} + +type CK_2639 = `p26.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_39, Registry_26_39, CK_2639, EP_2639, EV_2639, DeepMerge_2639 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-40.ts new file mode 100644 index 00000000..6156919d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-40.ts @@ -0,0 +1,50 @@ +// pkg-26/types-40 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2640 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2640 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_40 | null; children: Entity_26_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2640: number; y2640: string; z2640: boolean }; +} + +type Path_2640 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2640}` }[keyof T & string] : never; +type EP_2640 = Path_2640; + +type Val_2640 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2640 } + : T[K] extends object ? { t: 'o'; props: Val_2640 } + : { t: 'u' }; +}; +type EV_2640 = Val_2640; + +interface Registry_26_40 { + entities: Map; + validators: EV_2640; + paths: Set; + merged: DeepMerge_2640; +} + +type CK_2640 = `p26.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_40, Registry_26_40, CK_2640, EP_2640, EV_2640, DeepMerge_2640 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-41.ts new file mode 100644 index 00000000..cefe98cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-41.ts @@ -0,0 +1,50 @@ +// pkg-26/types-41 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2641 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2641 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_41 | null; children: Entity_26_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2641: number; y2641: string; z2641: boolean }; +} + +type Path_2641 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2641}` }[keyof T & string] : never; +type EP_2641 = Path_2641; + +type Val_2641 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2641 } + : T[K] extends object ? { t: 'o'; props: Val_2641 } + : { t: 'u' }; +}; +type EV_2641 = Val_2641; + +interface Registry_26_41 { + entities: Map; + validators: EV_2641; + paths: Set; + merged: DeepMerge_2641; +} + +type CK_2641 = `p26.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_41, Registry_26_41, CK_2641, EP_2641, EV_2641, DeepMerge_2641 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-42.ts new file mode 100644 index 00000000..f37b5b5e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-42.ts @@ -0,0 +1,50 @@ +// pkg-26/types-42 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2642 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2642 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_42 | null; children: Entity_26_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2642: number; y2642: string; z2642: boolean }; +} + +type Path_2642 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2642}` }[keyof T & string] : never; +type EP_2642 = Path_2642; + +type Val_2642 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2642 } + : T[K] extends object ? { t: 'o'; props: Val_2642 } + : { t: 'u' }; +}; +type EV_2642 = Val_2642; + +interface Registry_26_42 { + entities: Map; + validators: EV_2642; + paths: Set; + merged: DeepMerge_2642; +} + +type CK_2642 = `p26.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_42, Registry_26_42, CK_2642, EP_2642, EV_2642, DeepMerge_2642 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-43.ts new file mode 100644 index 00000000..b6f20b80 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-43.ts @@ -0,0 +1,50 @@ +// pkg-26/types-43 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2643 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2643 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_43 | null; children: Entity_26_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2643: number; y2643: string; z2643: boolean }; +} + +type Path_2643 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2643}` }[keyof T & string] : never; +type EP_2643 = Path_2643; + +type Val_2643 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2643 } + : T[K] extends object ? { t: 'o'; props: Val_2643 } + : { t: 'u' }; +}; +type EV_2643 = Val_2643; + +interface Registry_26_43 { + entities: Map; + validators: EV_2643; + paths: Set; + merged: DeepMerge_2643; +} + +type CK_2643 = `p26.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_43, Registry_26_43, CK_2643, EP_2643, EV_2643, DeepMerge_2643 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-44.ts new file mode 100644 index 00000000..7d9f9012 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-44.ts @@ -0,0 +1,50 @@ +// pkg-26/types-44 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2644 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2644 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_44 | null; children: Entity_26_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2644: number; y2644: string; z2644: boolean }; +} + +type Path_2644 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2644}` }[keyof T & string] : never; +type EP_2644 = Path_2644; + +type Val_2644 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2644 } + : T[K] extends object ? { t: 'o'; props: Val_2644 } + : { t: 'u' }; +}; +type EV_2644 = Val_2644; + +interface Registry_26_44 { + entities: Map; + validators: EV_2644; + paths: Set; + merged: DeepMerge_2644; +} + +type CK_2644 = `p26.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_44, Registry_26_44, CK_2644, EP_2644, EV_2644, DeepMerge_2644 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-45.ts new file mode 100644 index 00000000..bd07f903 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-45.ts @@ -0,0 +1,50 @@ +// pkg-26/types-45 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2645 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2645 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_45 | null; children: Entity_26_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2645: number; y2645: string; z2645: boolean }; +} + +type Path_2645 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2645}` }[keyof T & string] : never; +type EP_2645 = Path_2645; + +type Val_2645 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2645 } + : T[K] extends object ? { t: 'o'; props: Val_2645 } + : { t: 'u' }; +}; +type EV_2645 = Val_2645; + +interface Registry_26_45 { + entities: Map; + validators: EV_2645; + paths: Set; + merged: DeepMerge_2645; +} + +type CK_2645 = `p26.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_45, Registry_26_45, CK_2645, EP_2645, EV_2645, DeepMerge_2645 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-46.ts new file mode 100644 index 00000000..f3ca8933 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-46.ts @@ -0,0 +1,50 @@ +// pkg-26/types-46 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2646 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2646 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_46 | null; children: Entity_26_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2646: number; y2646: string; z2646: boolean }; +} + +type Path_2646 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2646}` }[keyof T & string] : never; +type EP_2646 = Path_2646; + +type Val_2646 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2646 } + : T[K] extends object ? { t: 'o'; props: Val_2646 } + : { t: 'u' }; +}; +type EV_2646 = Val_2646; + +interface Registry_26_46 { + entities: Map; + validators: EV_2646; + paths: Set; + merged: DeepMerge_2646; +} + +type CK_2646 = `p26.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_46, Registry_26_46, CK_2646, EP_2646, EV_2646, DeepMerge_2646 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-47.ts new file mode 100644 index 00000000..06fcab6d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-47.ts @@ -0,0 +1,50 @@ +// pkg-26/types-47 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2647 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2647 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_47 | null; children: Entity_26_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2647: number; y2647: string; z2647: boolean }; +} + +type Path_2647 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2647}` }[keyof T & string] : never; +type EP_2647 = Path_2647; + +type Val_2647 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2647 } + : T[K] extends object ? { t: 'o'; props: Val_2647 } + : { t: 'u' }; +}; +type EV_2647 = Val_2647; + +interface Registry_26_47 { + entities: Map; + validators: EV_2647; + paths: Set; + merged: DeepMerge_2647; +} + +type CK_2647 = `p26.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_47, Registry_26_47, CK_2647, EP_2647, EV_2647, DeepMerge_2647 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-48.ts new file mode 100644 index 00000000..57360251 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-48.ts @@ -0,0 +1,50 @@ +// pkg-26/types-48 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2648 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2648 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_48 | null; children: Entity_26_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2648: number; y2648: string; z2648: boolean }; +} + +type Path_2648 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2648}` }[keyof T & string] : never; +type EP_2648 = Path_2648; + +type Val_2648 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2648 } + : T[K] extends object ? { t: 'o'; props: Val_2648 } + : { t: 'u' }; +}; +type EV_2648 = Val_2648; + +interface Registry_26_48 { + entities: Map; + validators: EV_2648; + paths: Set; + merged: DeepMerge_2648; +} + +type CK_2648 = `p26.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_48, Registry_26_48, CK_2648, EP_2648, EV_2648, DeepMerge_2648 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-49.ts new file mode 100644 index 00000000..a3782a83 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-49.ts @@ -0,0 +1,50 @@ +// pkg-26/types-49 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2649 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2649 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_49 | null; children: Entity_26_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2649: number; y2649: string; z2649: boolean }; +} + +type Path_2649 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2649}` }[keyof T & string] : never; +type EP_2649 = Path_2649; + +type Val_2649 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2649 } + : T[K] extends object ? { t: 'o'; props: Val_2649 } + : { t: 'u' }; +}; +type EV_2649 = Val_2649; + +interface Registry_26_49 { + entities: Map; + validators: EV_2649; + paths: Set; + merged: DeepMerge_2649; +} + +type CK_2649 = `p26.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_49, Registry_26_49, CK_2649, EP_2649, EV_2649, DeepMerge_2649 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-26/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-26/types-50.ts new file mode 100644 index 00000000..a56195b8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-26/types-50.ts @@ -0,0 +1,50 @@ +// pkg-26/types-50 - heavy interconnected types + +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; +import type { Entity_23_01, Registry_23_01 } from '../pkg-23/types-01'; +import type { Entity_23_10, Registry_23_10 } from '../pkg-23/types-10'; +import type { Entity_23_20, Registry_23_20 } from '../pkg-23/types-20'; + +type DeepMerge_2650 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2650 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_26_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_26_50 | null; children: Entity_26_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2650: number; y2650: string; z2650: boolean }; +} + +type Path_2650 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2650}` }[keyof T & string] : never; +type EP_2650 = Path_2650; + +type Val_2650 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2650 } + : T[K] extends object ? { t: 'o'; props: Val_2650 } + : { t: 'u' }; +}; +type EV_2650 = Val_2650; + +interface Registry_26_50 { + entities: Map; + validators: EV_2650; + paths: Set; + merged: DeepMerge_2650; +} + +type CK_2650 = `p26.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_26_50, Registry_26_50, CK_2650, EP_2650, EV_2650, DeepMerge_2650 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-27/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-01.ts new file mode 100644 index 00000000..b4ebcd4d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-01.ts @@ -0,0 +1,50 @@ +// pkg-27/types-01 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2701 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2701 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_01 | null; children: Entity_27_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2701: number; y2701: string; z2701: boolean }; +} + +type Path_2701 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2701}` }[keyof T & string] : never; +type EP_2701 = Path_2701; + +type Val_2701 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2701 } + : T[K] extends object ? { t: 'o'; props: Val_2701 } + : { t: 'u' }; +}; +type EV_2701 = Val_2701; + +interface Registry_27_01 { + entities: Map; + validators: EV_2701; + paths: Set; + merged: DeepMerge_2701; +} + +type CK_2701 = `p27.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_01, Registry_27_01, CK_2701, EP_2701, EV_2701, DeepMerge_2701 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-02.ts new file mode 100644 index 00000000..62ed1006 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-02.ts @@ -0,0 +1,50 @@ +// pkg-27/types-02 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2702 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2702 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_02 | null; children: Entity_27_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2702: number; y2702: string; z2702: boolean }; +} + +type Path_2702 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2702}` }[keyof T & string] : never; +type EP_2702 = Path_2702; + +type Val_2702 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2702 } + : T[K] extends object ? { t: 'o'; props: Val_2702 } + : { t: 'u' }; +}; +type EV_2702 = Val_2702; + +interface Registry_27_02 { + entities: Map; + validators: EV_2702; + paths: Set; + merged: DeepMerge_2702; +} + +type CK_2702 = `p27.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_02, Registry_27_02, CK_2702, EP_2702, EV_2702, DeepMerge_2702 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-03.ts new file mode 100644 index 00000000..40ff4b28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-03.ts @@ -0,0 +1,50 @@ +// pkg-27/types-03 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2703 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2703 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_03 | null; children: Entity_27_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2703: number; y2703: string; z2703: boolean }; +} + +type Path_2703 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2703}` }[keyof T & string] : never; +type EP_2703 = Path_2703; + +type Val_2703 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2703 } + : T[K] extends object ? { t: 'o'; props: Val_2703 } + : { t: 'u' }; +}; +type EV_2703 = Val_2703; + +interface Registry_27_03 { + entities: Map; + validators: EV_2703; + paths: Set; + merged: DeepMerge_2703; +} + +type CK_2703 = `p27.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_03, Registry_27_03, CK_2703, EP_2703, EV_2703, DeepMerge_2703 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-04.ts new file mode 100644 index 00000000..799564f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-04.ts @@ -0,0 +1,50 @@ +// pkg-27/types-04 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2704 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2704 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_04 | null; children: Entity_27_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2704: number; y2704: string; z2704: boolean }; +} + +type Path_2704 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2704}` }[keyof T & string] : never; +type EP_2704 = Path_2704; + +type Val_2704 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2704 } + : T[K] extends object ? { t: 'o'; props: Val_2704 } + : { t: 'u' }; +}; +type EV_2704 = Val_2704; + +interface Registry_27_04 { + entities: Map; + validators: EV_2704; + paths: Set; + merged: DeepMerge_2704; +} + +type CK_2704 = `p27.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_04, Registry_27_04, CK_2704, EP_2704, EV_2704, DeepMerge_2704 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-05.ts new file mode 100644 index 00000000..ed2cd0bc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-05.ts @@ -0,0 +1,50 @@ +// pkg-27/types-05 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2705 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2705 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_05 | null; children: Entity_27_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2705: number; y2705: string; z2705: boolean }; +} + +type Path_2705 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2705}` }[keyof T & string] : never; +type EP_2705 = Path_2705; + +type Val_2705 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2705 } + : T[K] extends object ? { t: 'o'; props: Val_2705 } + : { t: 'u' }; +}; +type EV_2705 = Val_2705; + +interface Registry_27_05 { + entities: Map; + validators: EV_2705; + paths: Set; + merged: DeepMerge_2705; +} + +type CK_2705 = `p27.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_05, Registry_27_05, CK_2705, EP_2705, EV_2705, DeepMerge_2705 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-06.ts new file mode 100644 index 00000000..13f521a9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-06.ts @@ -0,0 +1,50 @@ +// pkg-27/types-06 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2706 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2706 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_06 | null; children: Entity_27_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2706: number; y2706: string; z2706: boolean }; +} + +type Path_2706 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2706}` }[keyof T & string] : never; +type EP_2706 = Path_2706; + +type Val_2706 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2706 } + : T[K] extends object ? { t: 'o'; props: Val_2706 } + : { t: 'u' }; +}; +type EV_2706 = Val_2706; + +interface Registry_27_06 { + entities: Map; + validators: EV_2706; + paths: Set; + merged: DeepMerge_2706; +} + +type CK_2706 = `p27.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_06, Registry_27_06, CK_2706, EP_2706, EV_2706, DeepMerge_2706 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-07.ts new file mode 100644 index 00000000..a50fa476 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-07.ts @@ -0,0 +1,50 @@ +// pkg-27/types-07 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2707 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2707 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_07 | null; children: Entity_27_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2707: number; y2707: string; z2707: boolean }; +} + +type Path_2707 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2707}` }[keyof T & string] : never; +type EP_2707 = Path_2707; + +type Val_2707 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2707 } + : T[K] extends object ? { t: 'o'; props: Val_2707 } + : { t: 'u' }; +}; +type EV_2707 = Val_2707; + +interface Registry_27_07 { + entities: Map; + validators: EV_2707; + paths: Set; + merged: DeepMerge_2707; +} + +type CK_2707 = `p27.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_07, Registry_27_07, CK_2707, EP_2707, EV_2707, DeepMerge_2707 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-08.ts new file mode 100644 index 00000000..b121a00b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-08.ts @@ -0,0 +1,50 @@ +// pkg-27/types-08 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2708 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2708 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_08 | null; children: Entity_27_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2708: number; y2708: string; z2708: boolean }; +} + +type Path_2708 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2708}` }[keyof T & string] : never; +type EP_2708 = Path_2708; + +type Val_2708 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2708 } + : T[K] extends object ? { t: 'o'; props: Val_2708 } + : { t: 'u' }; +}; +type EV_2708 = Val_2708; + +interface Registry_27_08 { + entities: Map; + validators: EV_2708; + paths: Set; + merged: DeepMerge_2708; +} + +type CK_2708 = `p27.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_08, Registry_27_08, CK_2708, EP_2708, EV_2708, DeepMerge_2708 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-09.ts new file mode 100644 index 00000000..4c5ab668 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-09.ts @@ -0,0 +1,50 @@ +// pkg-27/types-09 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2709 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2709 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_09 | null; children: Entity_27_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2709: number; y2709: string; z2709: boolean }; +} + +type Path_2709 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2709}` }[keyof T & string] : never; +type EP_2709 = Path_2709; + +type Val_2709 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2709 } + : T[K] extends object ? { t: 'o'; props: Val_2709 } + : { t: 'u' }; +}; +type EV_2709 = Val_2709; + +interface Registry_27_09 { + entities: Map; + validators: EV_2709; + paths: Set; + merged: DeepMerge_2709; +} + +type CK_2709 = `p27.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_09, Registry_27_09, CK_2709, EP_2709, EV_2709, DeepMerge_2709 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-10.ts new file mode 100644 index 00000000..6a1a5f21 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-10.ts @@ -0,0 +1,50 @@ +// pkg-27/types-10 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2710 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2710 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_10 | null; children: Entity_27_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2710: number; y2710: string; z2710: boolean }; +} + +type Path_2710 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2710}` }[keyof T & string] : never; +type EP_2710 = Path_2710; + +type Val_2710 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2710 } + : T[K] extends object ? { t: 'o'; props: Val_2710 } + : { t: 'u' }; +}; +type EV_2710 = Val_2710; + +interface Registry_27_10 { + entities: Map; + validators: EV_2710; + paths: Set; + merged: DeepMerge_2710; +} + +type CK_2710 = `p27.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_10, Registry_27_10, CK_2710, EP_2710, EV_2710, DeepMerge_2710 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-11.ts new file mode 100644 index 00000000..3f398d31 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-11.ts @@ -0,0 +1,50 @@ +// pkg-27/types-11 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2711 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2711 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_11 | null; children: Entity_27_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2711: number; y2711: string; z2711: boolean }; +} + +type Path_2711 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2711}` }[keyof T & string] : never; +type EP_2711 = Path_2711; + +type Val_2711 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2711 } + : T[K] extends object ? { t: 'o'; props: Val_2711 } + : { t: 'u' }; +}; +type EV_2711 = Val_2711; + +interface Registry_27_11 { + entities: Map; + validators: EV_2711; + paths: Set; + merged: DeepMerge_2711; +} + +type CK_2711 = `p27.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_11, Registry_27_11, CK_2711, EP_2711, EV_2711, DeepMerge_2711 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-12.ts new file mode 100644 index 00000000..37f56cff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-12.ts @@ -0,0 +1,50 @@ +// pkg-27/types-12 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2712 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2712 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_12 | null; children: Entity_27_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2712: number; y2712: string; z2712: boolean }; +} + +type Path_2712 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2712}` }[keyof T & string] : never; +type EP_2712 = Path_2712; + +type Val_2712 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2712 } + : T[K] extends object ? { t: 'o'; props: Val_2712 } + : { t: 'u' }; +}; +type EV_2712 = Val_2712; + +interface Registry_27_12 { + entities: Map; + validators: EV_2712; + paths: Set; + merged: DeepMerge_2712; +} + +type CK_2712 = `p27.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_12, Registry_27_12, CK_2712, EP_2712, EV_2712, DeepMerge_2712 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-13.ts new file mode 100644 index 00000000..201a5472 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-13.ts @@ -0,0 +1,50 @@ +// pkg-27/types-13 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2713 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2713 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_13 | null; children: Entity_27_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2713: number; y2713: string; z2713: boolean }; +} + +type Path_2713 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2713}` }[keyof T & string] : never; +type EP_2713 = Path_2713; + +type Val_2713 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2713 } + : T[K] extends object ? { t: 'o'; props: Val_2713 } + : { t: 'u' }; +}; +type EV_2713 = Val_2713; + +interface Registry_27_13 { + entities: Map; + validators: EV_2713; + paths: Set; + merged: DeepMerge_2713; +} + +type CK_2713 = `p27.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_13, Registry_27_13, CK_2713, EP_2713, EV_2713, DeepMerge_2713 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-14.ts new file mode 100644 index 00000000..434814f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-14.ts @@ -0,0 +1,50 @@ +// pkg-27/types-14 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2714 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2714 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_14 | null; children: Entity_27_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2714: number; y2714: string; z2714: boolean }; +} + +type Path_2714 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2714}` }[keyof T & string] : never; +type EP_2714 = Path_2714; + +type Val_2714 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2714 } + : T[K] extends object ? { t: 'o'; props: Val_2714 } + : { t: 'u' }; +}; +type EV_2714 = Val_2714; + +interface Registry_27_14 { + entities: Map; + validators: EV_2714; + paths: Set; + merged: DeepMerge_2714; +} + +type CK_2714 = `p27.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_14, Registry_27_14, CK_2714, EP_2714, EV_2714, DeepMerge_2714 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-15.ts new file mode 100644 index 00000000..c9cbd9bf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-15.ts @@ -0,0 +1,50 @@ +// pkg-27/types-15 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2715 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2715 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_15 | null; children: Entity_27_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2715: number; y2715: string; z2715: boolean }; +} + +type Path_2715 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2715}` }[keyof T & string] : never; +type EP_2715 = Path_2715; + +type Val_2715 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2715 } + : T[K] extends object ? { t: 'o'; props: Val_2715 } + : { t: 'u' }; +}; +type EV_2715 = Val_2715; + +interface Registry_27_15 { + entities: Map; + validators: EV_2715; + paths: Set; + merged: DeepMerge_2715; +} + +type CK_2715 = `p27.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_15, Registry_27_15, CK_2715, EP_2715, EV_2715, DeepMerge_2715 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-16.ts new file mode 100644 index 00000000..a2748562 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-16.ts @@ -0,0 +1,50 @@ +// pkg-27/types-16 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2716 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2716 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_16 | null; children: Entity_27_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2716: number; y2716: string; z2716: boolean }; +} + +type Path_2716 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2716}` }[keyof T & string] : never; +type EP_2716 = Path_2716; + +type Val_2716 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2716 } + : T[K] extends object ? { t: 'o'; props: Val_2716 } + : { t: 'u' }; +}; +type EV_2716 = Val_2716; + +interface Registry_27_16 { + entities: Map; + validators: EV_2716; + paths: Set; + merged: DeepMerge_2716; +} + +type CK_2716 = `p27.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_16, Registry_27_16, CK_2716, EP_2716, EV_2716, DeepMerge_2716 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-17.ts new file mode 100644 index 00000000..f4b94337 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-17.ts @@ -0,0 +1,50 @@ +// pkg-27/types-17 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2717 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2717 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_17 | null; children: Entity_27_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2717: number; y2717: string; z2717: boolean }; +} + +type Path_2717 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2717}` }[keyof T & string] : never; +type EP_2717 = Path_2717; + +type Val_2717 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2717 } + : T[K] extends object ? { t: 'o'; props: Val_2717 } + : { t: 'u' }; +}; +type EV_2717 = Val_2717; + +interface Registry_27_17 { + entities: Map; + validators: EV_2717; + paths: Set; + merged: DeepMerge_2717; +} + +type CK_2717 = `p27.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_17, Registry_27_17, CK_2717, EP_2717, EV_2717, DeepMerge_2717 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-18.ts new file mode 100644 index 00000000..7118cf7f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-18.ts @@ -0,0 +1,50 @@ +// pkg-27/types-18 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2718 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2718 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_18 | null; children: Entity_27_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2718: number; y2718: string; z2718: boolean }; +} + +type Path_2718 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2718}` }[keyof T & string] : never; +type EP_2718 = Path_2718; + +type Val_2718 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2718 } + : T[K] extends object ? { t: 'o'; props: Val_2718 } + : { t: 'u' }; +}; +type EV_2718 = Val_2718; + +interface Registry_27_18 { + entities: Map; + validators: EV_2718; + paths: Set; + merged: DeepMerge_2718; +} + +type CK_2718 = `p27.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_18, Registry_27_18, CK_2718, EP_2718, EV_2718, DeepMerge_2718 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-19.ts new file mode 100644 index 00000000..abc7e653 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-19.ts @@ -0,0 +1,50 @@ +// pkg-27/types-19 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2719 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2719 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_19 | null; children: Entity_27_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2719: number; y2719: string; z2719: boolean }; +} + +type Path_2719 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2719}` }[keyof T & string] : never; +type EP_2719 = Path_2719; + +type Val_2719 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2719 } + : T[K] extends object ? { t: 'o'; props: Val_2719 } + : { t: 'u' }; +}; +type EV_2719 = Val_2719; + +interface Registry_27_19 { + entities: Map; + validators: EV_2719; + paths: Set; + merged: DeepMerge_2719; +} + +type CK_2719 = `p27.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_19, Registry_27_19, CK_2719, EP_2719, EV_2719, DeepMerge_2719 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-20.ts new file mode 100644 index 00000000..bf11ac71 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-20.ts @@ -0,0 +1,50 @@ +// pkg-27/types-20 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2720 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2720 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_20 | null; children: Entity_27_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2720: number; y2720: string; z2720: boolean }; +} + +type Path_2720 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2720}` }[keyof T & string] : never; +type EP_2720 = Path_2720; + +type Val_2720 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2720 } + : T[K] extends object ? { t: 'o'; props: Val_2720 } + : { t: 'u' }; +}; +type EV_2720 = Val_2720; + +interface Registry_27_20 { + entities: Map; + validators: EV_2720; + paths: Set; + merged: DeepMerge_2720; +} + +type CK_2720 = `p27.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_20, Registry_27_20, CK_2720, EP_2720, EV_2720, DeepMerge_2720 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-21.ts new file mode 100644 index 00000000..8c95892e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-21.ts @@ -0,0 +1,50 @@ +// pkg-27/types-21 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2721 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2721 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_21 | null; children: Entity_27_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2721: number; y2721: string; z2721: boolean }; +} + +type Path_2721 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2721}` }[keyof T & string] : never; +type EP_2721 = Path_2721; + +type Val_2721 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2721 } + : T[K] extends object ? { t: 'o'; props: Val_2721 } + : { t: 'u' }; +}; +type EV_2721 = Val_2721; + +interface Registry_27_21 { + entities: Map; + validators: EV_2721; + paths: Set; + merged: DeepMerge_2721; +} + +type CK_2721 = `p27.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_21, Registry_27_21, CK_2721, EP_2721, EV_2721, DeepMerge_2721 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-22.ts new file mode 100644 index 00000000..b2bfe325 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-22.ts @@ -0,0 +1,50 @@ +// pkg-27/types-22 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2722 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2722 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_22 | null; children: Entity_27_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2722: number; y2722: string; z2722: boolean }; +} + +type Path_2722 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2722}` }[keyof T & string] : never; +type EP_2722 = Path_2722; + +type Val_2722 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2722 } + : T[K] extends object ? { t: 'o'; props: Val_2722 } + : { t: 'u' }; +}; +type EV_2722 = Val_2722; + +interface Registry_27_22 { + entities: Map; + validators: EV_2722; + paths: Set; + merged: DeepMerge_2722; +} + +type CK_2722 = `p27.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_22, Registry_27_22, CK_2722, EP_2722, EV_2722, DeepMerge_2722 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-23.ts new file mode 100644 index 00000000..efdf44b7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-23.ts @@ -0,0 +1,50 @@ +// pkg-27/types-23 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2723 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2723 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_23 | null; children: Entity_27_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2723: number; y2723: string; z2723: boolean }; +} + +type Path_2723 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2723}` }[keyof T & string] : never; +type EP_2723 = Path_2723; + +type Val_2723 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2723 } + : T[K] extends object ? { t: 'o'; props: Val_2723 } + : { t: 'u' }; +}; +type EV_2723 = Val_2723; + +interface Registry_27_23 { + entities: Map; + validators: EV_2723; + paths: Set; + merged: DeepMerge_2723; +} + +type CK_2723 = `p27.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_23, Registry_27_23, CK_2723, EP_2723, EV_2723, DeepMerge_2723 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-24.ts new file mode 100644 index 00000000..2ff5a630 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-24.ts @@ -0,0 +1,50 @@ +// pkg-27/types-24 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2724 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2724 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_24 | null; children: Entity_27_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2724: number; y2724: string; z2724: boolean }; +} + +type Path_2724 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2724}` }[keyof T & string] : never; +type EP_2724 = Path_2724; + +type Val_2724 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2724 } + : T[K] extends object ? { t: 'o'; props: Val_2724 } + : { t: 'u' }; +}; +type EV_2724 = Val_2724; + +interface Registry_27_24 { + entities: Map; + validators: EV_2724; + paths: Set; + merged: DeepMerge_2724; +} + +type CK_2724 = `p27.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_24, Registry_27_24, CK_2724, EP_2724, EV_2724, DeepMerge_2724 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-25.ts new file mode 100644 index 00000000..016f399d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-25.ts @@ -0,0 +1,50 @@ +// pkg-27/types-25 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2725 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2725 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_25 | null; children: Entity_27_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2725: number; y2725: string; z2725: boolean }; +} + +type Path_2725 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2725}` }[keyof T & string] : never; +type EP_2725 = Path_2725; + +type Val_2725 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2725 } + : T[K] extends object ? { t: 'o'; props: Val_2725 } + : { t: 'u' }; +}; +type EV_2725 = Val_2725; + +interface Registry_27_25 { + entities: Map; + validators: EV_2725; + paths: Set; + merged: DeepMerge_2725; +} + +type CK_2725 = `p27.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_25, Registry_27_25, CK_2725, EP_2725, EV_2725, DeepMerge_2725 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-26.ts new file mode 100644 index 00000000..3c5825ea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-26.ts @@ -0,0 +1,50 @@ +// pkg-27/types-26 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2726 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2726 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_26 | null; children: Entity_27_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2726: number; y2726: string; z2726: boolean }; +} + +type Path_2726 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2726}` }[keyof T & string] : never; +type EP_2726 = Path_2726; + +type Val_2726 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2726 } + : T[K] extends object ? { t: 'o'; props: Val_2726 } + : { t: 'u' }; +}; +type EV_2726 = Val_2726; + +interface Registry_27_26 { + entities: Map; + validators: EV_2726; + paths: Set; + merged: DeepMerge_2726; +} + +type CK_2726 = `p27.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_26, Registry_27_26, CK_2726, EP_2726, EV_2726, DeepMerge_2726 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-27.ts new file mode 100644 index 00000000..6104c893 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-27.ts @@ -0,0 +1,50 @@ +// pkg-27/types-27 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2727 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2727 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_27 | null; children: Entity_27_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2727: number; y2727: string; z2727: boolean }; +} + +type Path_2727 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2727}` }[keyof T & string] : never; +type EP_2727 = Path_2727; + +type Val_2727 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2727 } + : T[K] extends object ? { t: 'o'; props: Val_2727 } + : { t: 'u' }; +}; +type EV_2727 = Val_2727; + +interface Registry_27_27 { + entities: Map; + validators: EV_2727; + paths: Set; + merged: DeepMerge_2727; +} + +type CK_2727 = `p27.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_27, Registry_27_27, CK_2727, EP_2727, EV_2727, DeepMerge_2727 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-28.ts new file mode 100644 index 00000000..09dae1e9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-28.ts @@ -0,0 +1,50 @@ +// pkg-27/types-28 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2728 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2728 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_28 | null; children: Entity_27_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2728: number; y2728: string; z2728: boolean }; +} + +type Path_2728 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2728}` }[keyof T & string] : never; +type EP_2728 = Path_2728; + +type Val_2728 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2728 } + : T[K] extends object ? { t: 'o'; props: Val_2728 } + : { t: 'u' }; +}; +type EV_2728 = Val_2728; + +interface Registry_27_28 { + entities: Map; + validators: EV_2728; + paths: Set; + merged: DeepMerge_2728; +} + +type CK_2728 = `p27.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_28, Registry_27_28, CK_2728, EP_2728, EV_2728, DeepMerge_2728 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-29.ts new file mode 100644 index 00000000..07ab7437 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-29.ts @@ -0,0 +1,50 @@ +// pkg-27/types-29 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2729 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2729 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_29 | null; children: Entity_27_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2729: number; y2729: string; z2729: boolean }; +} + +type Path_2729 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2729}` }[keyof T & string] : never; +type EP_2729 = Path_2729; + +type Val_2729 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2729 } + : T[K] extends object ? { t: 'o'; props: Val_2729 } + : { t: 'u' }; +}; +type EV_2729 = Val_2729; + +interface Registry_27_29 { + entities: Map; + validators: EV_2729; + paths: Set; + merged: DeepMerge_2729; +} + +type CK_2729 = `p27.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_29, Registry_27_29, CK_2729, EP_2729, EV_2729, DeepMerge_2729 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-30.ts new file mode 100644 index 00000000..41c6c776 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-30.ts @@ -0,0 +1,50 @@ +// pkg-27/types-30 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2730 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2730 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_30 | null; children: Entity_27_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2730: number; y2730: string; z2730: boolean }; +} + +type Path_2730 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2730}` }[keyof T & string] : never; +type EP_2730 = Path_2730; + +type Val_2730 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2730 } + : T[K] extends object ? { t: 'o'; props: Val_2730 } + : { t: 'u' }; +}; +type EV_2730 = Val_2730; + +interface Registry_27_30 { + entities: Map; + validators: EV_2730; + paths: Set; + merged: DeepMerge_2730; +} + +type CK_2730 = `p27.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_30, Registry_27_30, CK_2730, EP_2730, EV_2730, DeepMerge_2730 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-31.ts new file mode 100644 index 00000000..0a5418b7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-31.ts @@ -0,0 +1,50 @@ +// pkg-27/types-31 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2731 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2731 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_31 | null; children: Entity_27_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2731: number; y2731: string; z2731: boolean }; +} + +type Path_2731 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2731}` }[keyof T & string] : never; +type EP_2731 = Path_2731; + +type Val_2731 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2731 } + : T[K] extends object ? { t: 'o'; props: Val_2731 } + : { t: 'u' }; +}; +type EV_2731 = Val_2731; + +interface Registry_27_31 { + entities: Map; + validators: EV_2731; + paths: Set; + merged: DeepMerge_2731; +} + +type CK_2731 = `p27.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_31, Registry_27_31, CK_2731, EP_2731, EV_2731, DeepMerge_2731 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-32.ts new file mode 100644 index 00000000..56f0a5ef --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-32.ts @@ -0,0 +1,50 @@ +// pkg-27/types-32 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2732 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2732 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_32 | null; children: Entity_27_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2732: number; y2732: string; z2732: boolean }; +} + +type Path_2732 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2732}` }[keyof T & string] : never; +type EP_2732 = Path_2732; + +type Val_2732 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2732 } + : T[K] extends object ? { t: 'o'; props: Val_2732 } + : { t: 'u' }; +}; +type EV_2732 = Val_2732; + +interface Registry_27_32 { + entities: Map; + validators: EV_2732; + paths: Set; + merged: DeepMerge_2732; +} + +type CK_2732 = `p27.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_32, Registry_27_32, CK_2732, EP_2732, EV_2732, DeepMerge_2732 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-33.ts new file mode 100644 index 00000000..7cccb79c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-33.ts @@ -0,0 +1,50 @@ +// pkg-27/types-33 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2733 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2733 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_33 | null; children: Entity_27_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2733: number; y2733: string; z2733: boolean }; +} + +type Path_2733 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2733}` }[keyof T & string] : never; +type EP_2733 = Path_2733; + +type Val_2733 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2733 } + : T[K] extends object ? { t: 'o'; props: Val_2733 } + : { t: 'u' }; +}; +type EV_2733 = Val_2733; + +interface Registry_27_33 { + entities: Map; + validators: EV_2733; + paths: Set; + merged: DeepMerge_2733; +} + +type CK_2733 = `p27.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_33, Registry_27_33, CK_2733, EP_2733, EV_2733, DeepMerge_2733 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-34.ts new file mode 100644 index 00000000..97616654 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-34.ts @@ -0,0 +1,50 @@ +// pkg-27/types-34 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2734 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2734 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_34 | null; children: Entity_27_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2734: number; y2734: string; z2734: boolean }; +} + +type Path_2734 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2734}` }[keyof T & string] : never; +type EP_2734 = Path_2734; + +type Val_2734 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2734 } + : T[K] extends object ? { t: 'o'; props: Val_2734 } + : { t: 'u' }; +}; +type EV_2734 = Val_2734; + +interface Registry_27_34 { + entities: Map; + validators: EV_2734; + paths: Set; + merged: DeepMerge_2734; +} + +type CK_2734 = `p27.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_34, Registry_27_34, CK_2734, EP_2734, EV_2734, DeepMerge_2734 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-35.ts new file mode 100644 index 00000000..851ed4a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-35.ts @@ -0,0 +1,50 @@ +// pkg-27/types-35 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2735 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2735 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_35 | null; children: Entity_27_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2735: number; y2735: string; z2735: boolean }; +} + +type Path_2735 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2735}` }[keyof T & string] : never; +type EP_2735 = Path_2735; + +type Val_2735 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2735 } + : T[K] extends object ? { t: 'o'; props: Val_2735 } + : { t: 'u' }; +}; +type EV_2735 = Val_2735; + +interface Registry_27_35 { + entities: Map; + validators: EV_2735; + paths: Set; + merged: DeepMerge_2735; +} + +type CK_2735 = `p27.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_35, Registry_27_35, CK_2735, EP_2735, EV_2735, DeepMerge_2735 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-36.ts new file mode 100644 index 00000000..5397e8bf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-36.ts @@ -0,0 +1,50 @@ +// pkg-27/types-36 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2736 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2736 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_36 | null; children: Entity_27_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2736: number; y2736: string; z2736: boolean }; +} + +type Path_2736 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2736}` }[keyof T & string] : never; +type EP_2736 = Path_2736; + +type Val_2736 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2736 } + : T[K] extends object ? { t: 'o'; props: Val_2736 } + : { t: 'u' }; +}; +type EV_2736 = Val_2736; + +interface Registry_27_36 { + entities: Map; + validators: EV_2736; + paths: Set; + merged: DeepMerge_2736; +} + +type CK_2736 = `p27.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_36, Registry_27_36, CK_2736, EP_2736, EV_2736, DeepMerge_2736 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-37.ts new file mode 100644 index 00000000..b0876bf2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-37.ts @@ -0,0 +1,50 @@ +// pkg-27/types-37 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2737 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2737 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_37 | null; children: Entity_27_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2737: number; y2737: string; z2737: boolean }; +} + +type Path_2737 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2737}` }[keyof T & string] : never; +type EP_2737 = Path_2737; + +type Val_2737 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2737 } + : T[K] extends object ? { t: 'o'; props: Val_2737 } + : { t: 'u' }; +}; +type EV_2737 = Val_2737; + +interface Registry_27_37 { + entities: Map; + validators: EV_2737; + paths: Set; + merged: DeepMerge_2737; +} + +type CK_2737 = `p27.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_37, Registry_27_37, CK_2737, EP_2737, EV_2737, DeepMerge_2737 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-38.ts new file mode 100644 index 00000000..32af518e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-38.ts @@ -0,0 +1,50 @@ +// pkg-27/types-38 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2738 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2738 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_38 | null; children: Entity_27_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2738: number; y2738: string; z2738: boolean }; +} + +type Path_2738 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2738}` }[keyof T & string] : never; +type EP_2738 = Path_2738; + +type Val_2738 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2738 } + : T[K] extends object ? { t: 'o'; props: Val_2738 } + : { t: 'u' }; +}; +type EV_2738 = Val_2738; + +interface Registry_27_38 { + entities: Map; + validators: EV_2738; + paths: Set; + merged: DeepMerge_2738; +} + +type CK_2738 = `p27.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_38, Registry_27_38, CK_2738, EP_2738, EV_2738, DeepMerge_2738 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-39.ts new file mode 100644 index 00000000..203d125d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-39.ts @@ -0,0 +1,50 @@ +// pkg-27/types-39 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2739 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2739 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_39 | null; children: Entity_27_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2739: number; y2739: string; z2739: boolean }; +} + +type Path_2739 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2739}` }[keyof T & string] : never; +type EP_2739 = Path_2739; + +type Val_2739 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2739 } + : T[K] extends object ? { t: 'o'; props: Val_2739 } + : { t: 'u' }; +}; +type EV_2739 = Val_2739; + +interface Registry_27_39 { + entities: Map; + validators: EV_2739; + paths: Set; + merged: DeepMerge_2739; +} + +type CK_2739 = `p27.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_39, Registry_27_39, CK_2739, EP_2739, EV_2739, DeepMerge_2739 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-40.ts new file mode 100644 index 00000000..74fcfe6b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-40.ts @@ -0,0 +1,50 @@ +// pkg-27/types-40 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2740 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2740 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_40 | null; children: Entity_27_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2740: number; y2740: string; z2740: boolean }; +} + +type Path_2740 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2740}` }[keyof T & string] : never; +type EP_2740 = Path_2740; + +type Val_2740 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2740 } + : T[K] extends object ? { t: 'o'; props: Val_2740 } + : { t: 'u' }; +}; +type EV_2740 = Val_2740; + +interface Registry_27_40 { + entities: Map; + validators: EV_2740; + paths: Set; + merged: DeepMerge_2740; +} + +type CK_2740 = `p27.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_40, Registry_27_40, CK_2740, EP_2740, EV_2740, DeepMerge_2740 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-41.ts new file mode 100644 index 00000000..050841b8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-41.ts @@ -0,0 +1,50 @@ +// pkg-27/types-41 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2741 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2741 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_41 | null; children: Entity_27_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2741: number; y2741: string; z2741: boolean }; +} + +type Path_2741 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2741}` }[keyof T & string] : never; +type EP_2741 = Path_2741; + +type Val_2741 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2741 } + : T[K] extends object ? { t: 'o'; props: Val_2741 } + : { t: 'u' }; +}; +type EV_2741 = Val_2741; + +interface Registry_27_41 { + entities: Map; + validators: EV_2741; + paths: Set; + merged: DeepMerge_2741; +} + +type CK_2741 = `p27.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_41, Registry_27_41, CK_2741, EP_2741, EV_2741, DeepMerge_2741 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-42.ts new file mode 100644 index 00000000..f296ef51 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-42.ts @@ -0,0 +1,50 @@ +// pkg-27/types-42 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2742 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2742 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_42 | null; children: Entity_27_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2742: number; y2742: string; z2742: boolean }; +} + +type Path_2742 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2742}` }[keyof T & string] : never; +type EP_2742 = Path_2742; + +type Val_2742 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2742 } + : T[K] extends object ? { t: 'o'; props: Val_2742 } + : { t: 'u' }; +}; +type EV_2742 = Val_2742; + +interface Registry_27_42 { + entities: Map; + validators: EV_2742; + paths: Set; + merged: DeepMerge_2742; +} + +type CK_2742 = `p27.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_42, Registry_27_42, CK_2742, EP_2742, EV_2742, DeepMerge_2742 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-43.ts new file mode 100644 index 00000000..abdba3d1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-43.ts @@ -0,0 +1,50 @@ +// pkg-27/types-43 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2743 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2743 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_43 | null; children: Entity_27_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2743: number; y2743: string; z2743: boolean }; +} + +type Path_2743 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2743}` }[keyof T & string] : never; +type EP_2743 = Path_2743; + +type Val_2743 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2743 } + : T[K] extends object ? { t: 'o'; props: Val_2743 } + : { t: 'u' }; +}; +type EV_2743 = Val_2743; + +interface Registry_27_43 { + entities: Map; + validators: EV_2743; + paths: Set; + merged: DeepMerge_2743; +} + +type CK_2743 = `p27.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_43, Registry_27_43, CK_2743, EP_2743, EV_2743, DeepMerge_2743 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-44.ts new file mode 100644 index 00000000..28b396eb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-44.ts @@ -0,0 +1,50 @@ +// pkg-27/types-44 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2744 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2744 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_44 | null; children: Entity_27_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2744: number; y2744: string; z2744: boolean }; +} + +type Path_2744 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2744}` }[keyof T & string] : never; +type EP_2744 = Path_2744; + +type Val_2744 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2744 } + : T[K] extends object ? { t: 'o'; props: Val_2744 } + : { t: 'u' }; +}; +type EV_2744 = Val_2744; + +interface Registry_27_44 { + entities: Map; + validators: EV_2744; + paths: Set; + merged: DeepMerge_2744; +} + +type CK_2744 = `p27.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_44, Registry_27_44, CK_2744, EP_2744, EV_2744, DeepMerge_2744 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-45.ts new file mode 100644 index 00000000..8e45c852 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-45.ts @@ -0,0 +1,50 @@ +// pkg-27/types-45 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2745 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2745 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_45 | null; children: Entity_27_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2745: number; y2745: string; z2745: boolean }; +} + +type Path_2745 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2745}` }[keyof T & string] : never; +type EP_2745 = Path_2745; + +type Val_2745 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2745 } + : T[K] extends object ? { t: 'o'; props: Val_2745 } + : { t: 'u' }; +}; +type EV_2745 = Val_2745; + +interface Registry_27_45 { + entities: Map; + validators: EV_2745; + paths: Set; + merged: DeepMerge_2745; +} + +type CK_2745 = `p27.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_45, Registry_27_45, CK_2745, EP_2745, EV_2745, DeepMerge_2745 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-46.ts new file mode 100644 index 00000000..f710c41e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-46.ts @@ -0,0 +1,50 @@ +// pkg-27/types-46 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2746 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2746 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_46 | null; children: Entity_27_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2746: number; y2746: string; z2746: boolean }; +} + +type Path_2746 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2746}` }[keyof T & string] : never; +type EP_2746 = Path_2746; + +type Val_2746 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2746 } + : T[K] extends object ? { t: 'o'; props: Val_2746 } + : { t: 'u' }; +}; +type EV_2746 = Val_2746; + +interface Registry_27_46 { + entities: Map; + validators: EV_2746; + paths: Set; + merged: DeepMerge_2746; +} + +type CK_2746 = `p27.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_46, Registry_27_46, CK_2746, EP_2746, EV_2746, DeepMerge_2746 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-47.ts new file mode 100644 index 00000000..5c37f668 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-47.ts @@ -0,0 +1,50 @@ +// pkg-27/types-47 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2747 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2747 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_47 | null; children: Entity_27_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2747: number; y2747: string; z2747: boolean }; +} + +type Path_2747 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2747}` }[keyof T & string] : never; +type EP_2747 = Path_2747; + +type Val_2747 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2747 } + : T[K] extends object ? { t: 'o'; props: Val_2747 } + : { t: 'u' }; +}; +type EV_2747 = Val_2747; + +interface Registry_27_47 { + entities: Map; + validators: EV_2747; + paths: Set; + merged: DeepMerge_2747; +} + +type CK_2747 = `p27.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_47, Registry_27_47, CK_2747, EP_2747, EV_2747, DeepMerge_2747 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-48.ts new file mode 100644 index 00000000..43dcd969 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-48.ts @@ -0,0 +1,50 @@ +// pkg-27/types-48 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2748 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2748 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_48 | null; children: Entity_27_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2748: number; y2748: string; z2748: boolean }; +} + +type Path_2748 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2748}` }[keyof T & string] : never; +type EP_2748 = Path_2748; + +type Val_2748 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2748 } + : T[K] extends object ? { t: 'o'; props: Val_2748 } + : { t: 'u' }; +}; +type EV_2748 = Val_2748; + +interface Registry_27_48 { + entities: Map; + validators: EV_2748; + paths: Set; + merged: DeepMerge_2748; +} + +type CK_2748 = `p27.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_48, Registry_27_48, CK_2748, EP_2748, EV_2748, DeepMerge_2748 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-49.ts new file mode 100644 index 00000000..0ee97dda --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-49.ts @@ -0,0 +1,50 @@ +// pkg-27/types-49 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2749 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2749 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_49 | null; children: Entity_27_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2749: number; y2749: string; z2749: boolean }; +} + +type Path_2749 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2749}` }[keyof T & string] : never; +type EP_2749 = Path_2749; + +type Val_2749 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2749 } + : T[K] extends object ? { t: 'o'; props: Val_2749 } + : { t: 'u' }; +}; +type EV_2749 = Val_2749; + +interface Registry_27_49 { + entities: Map; + validators: EV_2749; + paths: Set; + merged: DeepMerge_2749; +} + +type CK_2749 = `p27.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_49, Registry_27_49, CK_2749, EP_2749, EV_2749, DeepMerge_2749 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-27/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-27/types-50.ts new file mode 100644 index 00000000..268c9659 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-27/types-50.ts @@ -0,0 +1,50 @@ +// pkg-27/types-50 - heavy interconnected types + +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; +import type { Entity_24_01, Registry_24_01 } from '../pkg-24/types-01'; +import type { Entity_24_10, Registry_24_10 } from '../pkg-24/types-10'; +import type { Entity_24_20, Registry_24_20 } from '../pkg-24/types-20'; + +type DeepMerge_2750 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2750 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_27_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_27_50 | null; children: Entity_27_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2750: number; y2750: string; z2750: boolean }; +} + +type Path_2750 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2750}` }[keyof T & string] : never; +type EP_2750 = Path_2750; + +type Val_2750 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2750 } + : T[K] extends object ? { t: 'o'; props: Val_2750 } + : { t: 'u' }; +}; +type EV_2750 = Val_2750; + +interface Registry_27_50 { + entities: Map; + validators: EV_2750; + paths: Set; + merged: DeepMerge_2750; +} + +type CK_2750 = `p27.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_27_50, Registry_27_50, CK_2750, EP_2750, EV_2750, DeepMerge_2750 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-28/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-01.ts new file mode 100644 index 00000000..7b2e6d02 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-01.ts @@ -0,0 +1,50 @@ +// pkg-28/types-01 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2801 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2801 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_01 | null; children: Entity_28_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2801: number; y2801: string; z2801: boolean }; +} + +type Path_2801 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2801}` }[keyof T & string] : never; +type EP_2801 = Path_2801; + +type Val_2801 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2801 } + : T[K] extends object ? { t: 'o'; props: Val_2801 } + : { t: 'u' }; +}; +type EV_2801 = Val_2801; + +interface Registry_28_01 { + entities: Map; + validators: EV_2801; + paths: Set; + merged: DeepMerge_2801; +} + +type CK_2801 = `p28.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_01, Registry_28_01, CK_2801, EP_2801, EV_2801, DeepMerge_2801 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-02.ts new file mode 100644 index 00000000..31b606c3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-02.ts @@ -0,0 +1,50 @@ +// pkg-28/types-02 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2802 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2802 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_02 | null; children: Entity_28_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2802: number; y2802: string; z2802: boolean }; +} + +type Path_2802 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2802}` }[keyof T & string] : never; +type EP_2802 = Path_2802; + +type Val_2802 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2802 } + : T[K] extends object ? { t: 'o'; props: Val_2802 } + : { t: 'u' }; +}; +type EV_2802 = Val_2802; + +interface Registry_28_02 { + entities: Map; + validators: EV_2802; + paths: Set; + merged: DeepMerge_2802; +} + +type CK_2802 = `p28.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_02, Registry_28_02, CK_2802, EP_2802, EV_2802, DeepMerge_2802 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-03.ts new file mode 100644 index 00000000..0aed3ccd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-03.ts @@ -0,0 +1,50 @@ +// pkg-28/types-03 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2803 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2803 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_03 | null; children: Entity_28_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2803: number; y2803: string; z2803: boolean }; +} + +type Path_2803 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2803}` }[keyof T & string] : never; +type EP_2803 = Path_2803; + +type Val_2803 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2803 } + : T[K] extends object ? { t: 'o'; props: Val_2803 } + : { t: 'u' }; +}; +type EV_2803 = Val_2803; + +interface Registry_28_03 { + entities: Map; + validators: EV_2803; + paths: Set; + merged: DeepMerge_2803; +} + +type CK_2803 = `p28.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_03, Registry_28_03, CK_2803, EP_2803, EV_2803, DeepMerge_2803 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-04.ts new file mode 100644 index 00000000..7e310ea8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-04.ts @@ -0,0 +1,50 @@ +// pkg-28/types-04 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2804 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2804 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_04 | null; children: Entity_28_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2804: number; y2804: string; z2804: boolean }; +} + +type Path_2804 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2804}` }[keyof T & string] : never; +type EP_2804 = Path_2804; + +type Val_2804 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2804 } + : T[K] extends object ? { t: 'o'; props: Val_2804 } + : { t: 'u' }; +}; +type EV_2804 = Val_2804; + +interface Registry_28_04 { + entities: Map; + validators: EV_2804; + paths: Set; + merged: DeepMerge_2804; +} + +type CK_2804 = `p28.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_04, Registry_28_04, CK_2804, EP_2804, EV_2804, DeepMerge_2804 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-05.ts new file mode 100644 index 00000000..8c4df74f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-05.ts @@ -0,0 +1,50 @@ +// pkg-28/types-05 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2805 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2805 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_05 | null; children: Entity_28_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2805: number; y2805: string; z2805: boolean }; +} + +type Path_2805 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2805}` }[keyof T & string] : never; +type EP_2805 = Path_2805; + +type Val_2805 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2805 } + : T[K] extends object ? { t: 'o'; props: Val_2805 } + : { t: 'u' }; +}; +type EV_2805 = Val_2805; + +interface Registry_28_05 { + entities: Map; + validators: EV_2805; + paths: Set; + merged: DeepMerge_2805; +} + +type CK_2805 = `p28.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_05, Registry_28_05, CK_2805, EP_2805, EV_2805, DeepMerge_2805 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-06.ts new file mode 100644 index 00000000..7b776d8e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-06.ts @@ -0,0 +1,50 @@ +// pkg-28/types-06 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2806 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2806 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_06 | null; children: Entity_28_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2806: number; y2806: string; z2806: boolean }; +} + +type Path_2806 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2806}` }[keyof T & string] : never; +type EP_2806 = Path_2806; + +type Val_2806 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2806 } + : T[K] extends object ? { t: 'o'; props: Val_2806 } + : { t: 'u' }; +}; +type EV_2806 = Val_2806; + +interface Registry_28_06 { + entities: Map; + validators: EV_2806; + paths: Set; + merged: DeepMerge_2806; +} + +type CK_2806 = `p28.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_06, Registry_28_06, CK_2806, EP_2806, EV_2806, DeepMerge_2806 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-07.ts new file mode 100644 index 00000000..ebde9dea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-07.ts @@ -0,0 +1,50 @@ +// pkg-28/types-07 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2807 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2807 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_07 | null; children: Entity_28_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2807: number; y2807: string; z2807: boolean }; +} + +type Path_2807 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2807}` }[keyof T & string] : never; +type EP_2807 = Path_2807; + +type Val_2807 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2807 } + : T[K] extends object ? { t: 'o'; props: Val_2807 } + : { t: 'u' }; +}; +type EV_2807 = Val_2807; + +interface Registry_28_07 { + entities: Map; + validators: EV_2807; + paths: Set; + merged: DeepMerge_2807; +} + +type CK_2807 = `p28.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_07, Registry_28_07, CK_2807, EP_2807, EV_2807, DeepMerge_2807 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-08.ts new file mode 100644 index 00000000..e9f84c7c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-08.ts @@ -0,0 +1,50 @@ +// pkg-28/types-08 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2808 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2808 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_08 | null; children: Entity_28_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2808: number; y2808: string; z2808: boolean }; +} + +type Path_2808 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2808}` }[keyof T & string] : never; +type EP_2808 = Path_2808; + +type Val_2808 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2808 } + : T[K] extends object ? { t: 'o'; props: Val_2808 } + : { t: 'u' }; +}; +type EV_2808 = Val_2808; + +interface Registry_28_08 { + entities: Map; + validators: EV_2808; + paths: Set; + merged: DeepMerge_2808; +} + +type CK_2808 = `p28.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_08, Registry_28_08, CK_2808, EP_2808, EV_2808, DeepMerge_2808 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-09.ts new file mode 100644 index 00000000..7784231f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-09.ts @@ -0,0 +1,50 @@ +// pkg-28/types-09 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2809 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2809 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_09 | null; children: Entity_28_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2809: number; y2809: string; z2809: boolean }; +} + +type Path_2809 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2809}` }[keyof T & string] : never; +type EP_2809 = Path_2809; + +type Val_2809 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2809 } + : T[K] extends object ? { t: 'o'; props: Val_2809 } + : { t: 'u' }; +}; +type EV_2809 = Val_2809; + +interface Registry_28_09 { + entities: Map; + validators: EV_2809; + paths: Set; + merged: DeepMerge_2809; +} + +type CK_2809 = `p28.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_09, Registry_28_09, CK_2809, EP_2809, EV_2809, DeepMerge_2809 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-10.ts new file mode 100644 index 00000000..545dd278 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-10.ts @@ -0,0 +1,50 @@ +// pkg-28/types-10 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2810 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2810 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_10 | null; children: Entity_28_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2810: number; y2810: string; z2810: boolean }; +} + +type Path_2810 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2810}` }[keyof T & string] : never; +type EP_2810 = Path_2810; + +type Val_2810 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2810 } + : T[K] extends object ? { t: 'o'; props: Val_2810 } + : { t: 'u' }; +}; +type EV_2810 = Val_2810; + +interface Registry_28_10 { + entities: Map; + validators: EV_2810; + paths: Set; + merged: DeepMerge_2810; +} + +type CK_2810 = `p28.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_10, Registry_28_10, CK_2810, EP_2810, EV_2810, DeepMerge_2810 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-11.ts new file mode 100644 index 00000000..5772742c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-11.ts @@ -0,0 +1,50 @@ +// pkg-28/types-11 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2811 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2811 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_11 | null; children: Entity_28_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2811: number; y2811: string; z2811: boolean }; +} + +type Path_2811 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2811}` }[keyof T & string] : never; +type EP_2811 = Path_2811; + +type Val_2811 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2811 } + : T[K] extends object ? { t: 'o'; props: Val_2811 } + : { t: 'u' }; +}; +type EV_2811 = Val_2811; + +interface Registry_28_11 { + entities: Map; + validators: EV_2811; + paths: Set; + merged: DeepMerge_2811; +} + +type CK_2811 = `p28.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_11, Registry_28_11, CK_2811, EP_2811, EV_2811, DeepMerge_2811 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-12.ts new file mode 100644 index 00000000..843ee12c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-12.ts @@ -0,0 +1,50 @@ +// pkg-28/types-12 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2812 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2812 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_12 | null; children: Entity_28_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2812: number; y2812: string; z2812: boolean }; +} + +type Path_2812 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2812}` }[keyof T & string] : never; +type EP_2812 = Path_2812; + +type Val_2812 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2812 } + : T[K] extends object ? { t: 'o'; props: Val_2812 } + : { t: 'u' }; +}; +type EV_2812 = Val_2812; + +interface Registry_28_12 { + entities: Map; + validators: EV_2812; + paths: Set; + merged: DeepMerge_2812; +} + +type CK_2812 = `p28.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_12, Registry_28_12, CK_2812, EP_2812, EV_2812, DeepMerge_2812 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-13.ts new file mode 100644 index 00000000..292ebc7a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-13.ts @@ -0,0 +1,50 @@ +// pkg-28/types-13 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2813 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2813 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_13 | null; children: Entity_28_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2813: number; y2813: string; z2813: boolean }; +} + +type Path_2813 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2813}` }[keyof T & string] : never; +type EP_2813 = Path_2813; + +type Val_2813 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2813 } + : T[K] extends object ? { t: 'o'; props: Val_2813 } + : { t: 'u' }; +}; +type EV_2813 = Val_2813; + +interface Registry_28_13 { + entities: Map; + validators: EV_2813; + paths: Set; + merged: DeepMerge_2813; +} + +type CK_2813 = `p28.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_13, Registry_28_13, CK_2813, EP_2813, EV_2813, DeepMerge_2813 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-14.ts new file mode 100644 index 00000000..d46b0615 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-14.ts @@ -0,0 +1,50 @@ +// pkg-28/types-14 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2814 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2814 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_14 | null; children: Entity_28_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2814: number; y2814: string; z2814: boolean }; +} + +type Path_2814 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2814}` }[keyof T & string] : never; +type EP_2814 = Path_2814; + +type Val_2814 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2814 } + : T[K] extends object ? { t: 'o'; props: Val_2814 } + : { t: 'u' }; +}; +type EV_2814 = Val_2814; + +interface Registry_28_14 { + entities: Map; + validators: EV_2814; + paths: Set; + merged: DeepMerge_2814; +} + +type CK_2814 = `p28.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_14, Registry_28_14, CK_2814, EP_2814, EV_2814, DeepMerge_2814 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-15.ts new file mode 100644 index 00000000..84d401ab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-15.ts @@ -0,0 +1,50 @@ +// pkg-28/types-15 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2815 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2815 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_15 | null; children: Entity_28_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2815: number; y2815: string; z2815: boolean }; +} + +type Path_2815 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2815}` }[keyof T & string] : never; +type EP_2815 = Path_2815; + +type Val_2815 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2815 } + : T[K] extends object ? { t: 'o'; props: Val_2815 } + : { t: 'u' }; +}; +type EV_2815 = Val_2815; + +interface Registry_28_15 { + entities: Map; + validators: EV_2815; + paths: Set; + merged: DeepMerge_2815; +} + +type CK_2815 = `p28.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_15, Registry_28_15, CK_2815, EP_2815, EV_2815, DeepMerge_2815 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-16.ts new file mode 100644 index 00000000..cce6cc0a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-16.ts @@ -0,0 +1,50 @@ +// pkg-28/types-16 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2816 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2816 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_16 | null; children: Entity_28_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2816: number; y2816: string; z2816: boolean }; +} + +type Path_2816 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2816}` }[keyof T & string] : never; +type EP_2816 = Path_2816; + +type Val_2816 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2816 } + : T[K] extends object ? { t: 'o'; props: Val_2816 } + : { t: 'u' }; +}; +type EV_2816 = Val_2816; + +interface Registry_28_16 { + entities: Map; + validators: EV_2816; + paths: Set; + merged: DeepMerge_2816; +} + +type CK_2816 = `p28.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_16, Registry_28_16, CK_2816, EP_2816, EV_2816, DeepMerge_2816 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-17.ts new file mode 100644 index 00000000..7fdd68b7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-17.ts @@ -0,0 +1,50 @@ +// pkg-28/types-17 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2817 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2817 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_17 | null; children: Entity_28_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2817: number; y2817: string; z2817: boolean }; +} + +type Path_2817 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2817}` }[keyof T & string] : never; +type EP_2817 = Path_2817; + +type Val_2817 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2817 } + : T[K] extends object ? { t: 'o'; props: Val_2817 } + : { t: 'u' }; +}; +type EV_2817 = Val_2817; + +interface Registry_28_17 { + entities: Map; + validators: EV_2817; + paths: Set; + merged: DeepMerge_2817; +} + +type CK_2817 = `p28.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_17, Registry_28_17, CK_2817, EP_2817, EV_2817, DeepMerge_2817 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-18.ts new file mode 100644 index 00000000..923e0a2b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-18.ts @@ -0,0 +1,50 @@ +// pkg-28/types-18 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2818 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2818 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_18 | null; children: Entity_28_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2818: number; y2818: string; z2818: boolean }; +} + +type Path_2818 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2818}` }[keyof T & string] : never; +type EP_2818 = Path_2818; + +type Val_2818 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2818 } + : T[K] extends object ? { t: 'o'; props: Val_2818 } + : { t: 'u' }; +}; +type EV_2818 = Val_2818; + +interface Registry_28_18 { + entities: Map; + validators: EV_2818; + paths: Set; + merged: DeepMerge_2818; +} + +type CK_2818 = `p28.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_18, Registry_28_18, CK_2818, EP_2818, EV_2818, DeepMerge_2818 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-19.ts new file mode 100644 index 00000000..b7c0f987 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-19.ts @@ -0,0 +1,50 @@ +// pkg-28/types-19 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2819 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2819 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_19 | null; children: Entity_28_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2819: number; y2819: string; z2819: boolean }; +} + +type Path_2819 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2819}` }[keyof T & string] : never; +type EP_2819 = Path_2819; + +type Val_2819 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2819 } + : T[K] extends object ? { t: 'o'; props: Val_2819 } + : { t: 'u' }; +}; +type EV_2819 = Val_2819; + +interface Registry_28_19 { + entities: Map; + validators: EV_2819; + paths: Set; + merged: DeepMerge_2819; +} + +type CK_2819 = `p28.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_19, Registry_28_19, CK_2819, EP_2819, EV_2819, DeepMerge_2819 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-20.ts new file mode 100644 index 00000000..3e26c728 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-20.ts @@ -0,0 +1,50 @@ +// pkg-28/types-20 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2820 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2820 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_20 | null; children: Entity_28_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2820: number; y2820: string; z2820: boolean }; +} + +type Path_2820 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2820}` }[keyof T & string] : never; +type EP_2820 = Path_2820; + +type Val_2820 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2820 } + : T[K] extends object ? { t: 'o'; props: Val_2820 } + : { t: 'u' }; +}; +type EV_2820 = Val_2820; + +interface Registry_28_20 { + entities: Map; + validators: EV_2820; + paths: Set; + merged: DeepMerge_2820; +} + +type CK_2820 = `p28.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_20, Registry_28_20, CK_2820, EP_2820, EV_2820, DeepMerge_2820 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-21.ts new file mode 100644 index 00000000..e8b2e98b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-21.ts @@ -0,0 +1,50 @@ +// pkg-28/types-21 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2821 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2821 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_21 | null; children: Entity_28_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2821: number; y2821: string; z2821: boolean }; +} + +type Path_2821 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2821}` }[keyof T & string] : never; +type EP_2821 = Path_2821; + +type Val_2821 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2821 } + : T[K] extends object ? { t: 'o'; props: Val_2821 } + : { t: 'u' }; +}; +type EV_2821 = Val_2821; + +interface Registry_28_21 { + entities: Map; + validators: EV_2821; + paths: Set; + merged: DeepMerge_2821; +} + +type CK_2821 = `p28.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_21, Registry_28_21, CK_2821, EP_2821, EV_2821, DeepMerge_2821 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-22.ts new file mode 100644 index 00000000..e486a9c2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-22.ts @@ -0,0 +1,50 @@ +// pkg-28/types-22 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2822 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2822 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_22 | null; children: Entity_28_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2822: number; y2822: string; z2822: boolean }; +} + +type Path_2822 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2822}` }[keyof T & string] : never; +type EP_2822 = Path_2822; + +type Val_2822 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2822 } + : T[K] extends object ? { t: 'o'; props: Val_2822 } + : { t: 'u' }; +}; +type EV_2822 = Val_2822; + +interface Registry_28_22 { + entities: Map; + validators: EV_2822; + paths: Set; + merged: DeepMerge_2822; +} + +type CK_2822 = `p28.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_22, Registry_28_22, CK_2822, EP_2822, EV_2822, DeepMerge_2822 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-23.ts new file mode 100644 index 00000000..6d845b0b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-23.ts @@ -0,0 +1,50 @@ +// pkg-28/types-23 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2823 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2823 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_23 | null; children: Entity_28_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2823: number; y2823: string; z2823: boolean }; +} + +type Path_2823 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2823}` }[keyof T & string] : never; +type EP_2823 = Path_2823; + +type Val_2823 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2823 } + : T[K] extends object ? { t: 'o'; props: Val_2823 } + : { t: 'u' }; +}; +type EV_2823 = Val_2823; + +interface Registry_28_23 { + entities: Map; + validators: EV_2823; + paths: Set; + merged: DeepMerge_2823; +} + +type CK_2823 = `p28.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_23, Registry_28_23, CK_2823, EP_2823, EV_2823, DeepMerge_2823 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-24.ts new file mode 100644 index 00000000..0d9cde8b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-24.ts @@ -0,0 +1,50 @@ +// pkg-28/types-24 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2824 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2824 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_24 | null; children: Entity_28_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2824: number; y2824: string; z2824: boolean }; +} + +type Path_2824 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2824}` }[keyof T & string] : never; +type EP_2824 = Path_2824; + +type Val_2824 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2824 } + : T[K] extends object ? { t: 'o'; props: Val_2824 } + : { t: 'u' }; +}; +type EV_2824 = Val_2824; + +interface Registry_28_24 { + entities: Map; + validators: EV_2824; + paths: Set; + merged: DeepMerge_2824; +} + +type CK_2824 = `p28.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_24, Registry_28_24, CK_2824, EP_2824, EV_2824, DeepMerge_2824 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-25.ts new file mode 100644 index 00000000..bc8915b5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-25.ts @@ -0,0 +1,50 @@ +// pkg-28/types-25 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2825 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2825 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_25 | null; children: Entity_28_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2825: number; y2825: string; z2825: boolean }; +} + +type Path_2825 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2825}` }[keyof T & string] : never; +type EP_2825 = Path_2825; + +type Val_2825 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2825 } + : T[K] extends object ? { t: 'o'; props: Val_2825 } + : { t: 'u' }; +}; +type EV_2825 = Val_2825; + +interface Registry_28_25 { + entities: Map; + validators: EV_2825; + paths: Set; + merged: DeepMerge_2825; +} + +type CK_2825 = `p28.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_25, Registry_28_25, CK_2825, EP_2825, EV_2825, DeepMerge_2825 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-26.ts new file mode 100644 index 00000000..df049dcc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-26.ts @@ -0,0 +1,50 @@ +// pkg-28/types-26 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2826 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2826 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_26 | null; children: Entity_28_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2826: number; y2826: string; z2826: boolean }; +} + +type Path_2826 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2826}` }[keyof T & string] : never; +type EP_2826 = Path_2826; + +type Val_2826 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2826 } + : T[K] extends object ? { t: 'o'; props: Val_2826 } + : { t: 'u' }; +}; +type EV_2826 = Val_2826; + +interface Registry_28_26 { + entities: Map; + validators: EV_2826; + paths: Set; + merged: DeepMerge_2826; +} + +type CK_2826 = `p28.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_26, Registry_28_26, CK_2826, EP_2826, EV_2826, DeepMerge_2826 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-27.ts new file mode 100644 index 00000000..b7ddeb1b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-27.ts @@ -0,0 +1,50 @@ +// pkg-28/types-27 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2827 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2827 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_27 | null; children: Entity_28_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2827: number; y2827: string; z2827: boolean }; +} + +type Path_2827 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2827}` }[keyof T & string] : never; +type EP_2827 = Path_2827; + +type Val_2827 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2827 } + : T[K] extends object ? { t: 'o'; props: Val_2827 } + : { t: 'u' }; +}; +type EV_2827 = Val_2827; + +interface Registry_28_27 { + entities: Map; + validators: EV_2827; + paths: Set; + merged: DeepMerge_2827; +} + +type CK_2827 = `p28.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_27, Registry_28_27, CK_2827, EP_2827, EV_2827, DeepMerge_2827 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-28.ts new file mode 100644 index 00000000..b1dece3a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-28.ts @@ -0,0 +1,50 @@ +// pkg-28/types-28 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2828 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2828 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_28 | null; children: Entity_28_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2828: number; y2828: string; z2828: boolean }; +} + +type Path_2828 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2828}` }[keyof T & string] : never; +type EP_2828 = Path_2828; + +type Val_2828 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2828 } + : T[K] extends object ? { t: 'o'; props: Val_2828 } + : { t: 'u' }; +}; +type EV_2828 = Val_2828; + +interface Registry_28_28 { + entities: Map; + validators: EV_2828; + paths: Set; + merged: DeepMerge_2828; +} + +type CK_2828 = `p28.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_28, Registry_28_28, CK_2828, EP_2828, EV_2828, DeepMerge_2828 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-29.ts new file mode 100644 index 00000000..c7b4d1af --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-29.ts @@ -0,0 +1,50 @@ +// pkg-28/types-29 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2829 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2829 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_29 | null; children: Entity_28_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2829: number; y2829: string; z2829: boolean }; +} + +type Path_2829 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2829}` }[keyof T & string] : never; +type EP_2829 = Path_2829; + +type Val_2829 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2829 } + : T[K] extends object ? { t: 'o'; props: Val_2829 } + : { t: 'u' }; +}; +type EV_2829 = Val_2829; + +interface Registry_28_29 { + entities: Map; + validators: EV_2829; + paths: Set; + merged: DeepMerge_2829; +} + +type CK_2829 = `p28.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_29, Registry_28_29, CK_2829, EP_2829, EV_2829, DeepMerge_2829 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-30.ts new file mode 100644 index 00000000..69b0653a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-30.ts @@ -0,0 +1,50 @@ +// pkg-28/types-30 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2830 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2830 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_30 | null; children: Entity_28_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2830: number; y2830: string; z2830: boolean }; +} + +type Path_2830 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2830}` }[keyof T & string] : never; +type EP_2830 = Path_2830; + +type Val_2830 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2830 } + : T[K] extends object ? { t: 'o'; props: Val_2830 } + : { t: 'u' }; +}; +type EV_2830 = Val_2830; + +interface Registry_28_30 { + entities: Map; + validators: EV_2830; + paths: Set; + merged: DeepMerge_2830; +} + +type CK_2830 = `p28.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_30, Registry_28_30, CK_2830, EP_2830, EV_2830, DeepMerge_2830 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-31.ts new file mode 100644 index 00000000..1fd5396e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-31.ts @@ -0,0 +1,50 @@ +// pkg-28/types-31 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2831 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2831 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_31 | null; children: Entity_28_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2831: number; y2831: string; z2831: boolean }; +} + +type Path_2831 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2831}` }[keyof T & string] : never; +type EP_2831 = Path_2831; + +type Val_2831 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2831 } + : T[K] extends object ? { t: 'o'; props: Val_2831 } + : { t: 'u' }; +}; +type EV_2831 = Val_2831; + +interface Registry_28_31 { + entities: Map; + validators: EV_2831; + paths: Set; + merged: DeepMerge_2831; +} + +type CK_2831 = `p28.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_31, Registry_28_31, CK_2831, EP_2831, EV_2831, DeepMerge_2831 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-32.ts new file mode 100644 index 00000000..e0606319 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-32.ts @@ -0,0 +1,50 @@ +// pkg-28/types-32 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2832 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2832 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_32 | null; children: Entity_28_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2832: number; y2832: string; z2832: boolean }; +} + +type Path_2832 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2832}` }[keyof T & string] : never; +type EP_2832 = Path_2832; + +type Val_2832 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2832 } + : T[K] extends object ? { t: 'o'; props: Val_2832 } + : { t: 'u' }; +}; +type EV_2832 = Val_2832; + +interface Registry_28_32 { + entities: Map; + validators: EV_2832; + paths: Set; + merged: DeepMerge_2832; +} + +type CK_2832 = `p28.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_32, Registry_28_32, CK_2832, EP_2832, EV_2832, DeepMerge_2832 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-33.ts new file mode 100644 index 00000000..e2acffae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-33.ts @@ -0,0 +1,50 @@ +// pkg-28/types-33 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2833 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2833 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_33 | null; children: Entity_28_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2833: number; y2833: string; z2833: boolean }; +} + +type Path_2833 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2833}` }[keyof T & string] : never; +type EP_2833 = Path_2833; + +type Val_2833 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2833 } + : T[K] extends object ? { t: 'o'; props: Val_2833 } + : { t: 'u' }; +}; +type EV_2833 = Val_2833; + +interface Registry_28_33 { + entities: Map; + validators: EV_2833; + paths: Set; + merged: DeepMerge_2833; +} + +type CK_2833 = `p28.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_33, Registry_28_33, CK_2833, EP_2833, EV_2833, DeepMerge_2833 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-34.ts new file mode 100644 index 00000000..88433c73 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-34.ts @@ -0,0 +1,50 @@ +// pkg-28/types-34 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2834 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2834 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_34 | null; children: Entity_28_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2834: number; y2834: string; z2834: boolean }; +} + +type Path_2834 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2834}` }[keyof T & string] : never; +type EP_2834 = Path_2834; + +type Val_2834 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2834 } + : T[K] extends object ? { t: 'o'; props: Val_2834 } + : { t: 'u' }; +}; +type EV_2834 = Val_2834; + +interface Registry_28_34 { + entities: Map; + validators: EV_2834; + paths: Set; + merged: DeepMerge_2834; +} + +type CK_2834 = `p28.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_34, Registry_28_34, CK_2834, EP_2834, EV_2834, DeepMerge_2834 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-35.ts new file mode 100644 index 00000000..f157bc8e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-35.ts @@ -0,0 +1,50 @@ +// pkg-28/types-35 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2835 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2835 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_35 | null; children: Entity_28_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2835: number; y2835: string; z2835: boolean }; +} + +type Path_2835 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2835}` }[keyof T & string] : never; +type EP_2835 = Path_2835; + +type Val_2835 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2835 } + : T[K] extends object ? { t: 'o'; props: Val_2835 } + : { t: 'u' }; +}; +type EV_2835 = Val_2835; + +interface Registry_28_35 { + entities: Map; + validators: EV_2835; + paths: Set; + merged: DeepMerge_2835; +} + +type CK_2835 = `p28.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_35, Registry_28_35, CK_2835, EP_2835, EV_2835, DeepMerge_2835 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-36.ts new file mode 100644 index 00000000..a95cbb92 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-36.ts @@ -0,0 +1,50 @@ +// pkg-28/types-36 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2836 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2836 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_36 | null; children: Entity_28_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2836: number; y2836: string; z2836: boolean }; +} + +type Path_2836 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2836}` }[keyof T & string] : never; +type EP_2836 = Path_2836; + +type Val_2836 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2836 } + : T[K] extends object ? { t: 'o'; props: Val_2836 } + : { t: 'u' }; +}; +type EV_2836 = Val_2836; + +interface Registry_28_36 { + entities: Map; + validators: EV_2836; + paths: Set; + merged: DeepMerge_2836; +} + +type CK_2836 = `p28.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_36, Registry_28_36, CK_2836, EP_2836, EV_2836, DeepMerge_2836 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-37.ts new file mode 100644 index 00000000..748090f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-37.ts @@ -0,0 +1,50 @@ +// pkg-28/types-37 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2837 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2837 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_37 | null; children: Entity_28_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2837: number; y2837: string; z2837: boolean }; +} + +type Path_2837 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2837}` }[keyof T & string] : never; +type EP_2837 = Path_2837; + +type Val_2837 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2837 } + : T[K] extends object ? { t: 'o'; props: Val_2837 } + : { t: 'u' }; +}; +type EV_2837 = Val_2837; + +interface Registry_28_37 { + entities: Map; + validators: EV_2837; + paths: Set; + merged: DeepMerge_2837; +} + +type CK_2837 = `p28.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_37, Registry_28_37, CK_2837, EP_2837, EV_2837, DeepMerge_2837 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-38.ts new file mode 100644 index 00000000..bb6d3297 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-38.ts @@ -0,0 +1,50 @@ +// pkg-28/types-38 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2838 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2838 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_38 | null; children: Entity_28_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2838: number; y2838: string; z2838: boolean }; +} + +type Path_2838 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2838}` }[keyof T & string] : never; +type EP_2838 = Path_2838; + +type Val_2838 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2838 } + : T[K] extends object ? { t: 'o'; props: Val_2838 } + : { t: 'u' }; +}; +type EV_2838 = Val_2838; + +interface Registry_28_38 { + entities: Map; + validators: EV_2838; + paths: Set; + merged: DeepMerge_2838; +} + +type CK_2838 = `p28.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_38, Registry_28_38, CK_2838, EP_2838, EV_2838, DeepMerge_2838 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-39.ts new file mode 100644 index 00000000..b922751d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-39.ts @@ -0,0 +1,50 @@ +// pkg-28/types-39 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2839 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2839 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_39 | null; children: Entity_28_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2839: number; y2839: string; z2839: boolean }; +} + +type Path_2839 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2839}` }[keyof T & string] : never; +type EP_2839 = Path_2839; + +type Val_2839 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2839 } + : T[K] extends object ? { t: 'o'; props: Val_2839 } + : { t: 'u' }; +}; +type EV_2839 = Val_2839; + +interface Registry_28_39 { + entities: Map; + validators: EV_2839; + paths: Set; + merged: DeepMerge_2839; +} + +type CK_2839 = `p28.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_39, Registry_28_39, CK_2839, EP_2839, EV_2839, DeepMerge_2839 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-40.ts new file mode 100644 index 00000000..7d74c651 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-40.ts @@ -0,0 +1,50 @@ +// pkg-28/types-40 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2840 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2840 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_40 | null; children: Entity_28_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2840: number; y2840: string; z2840: boolean }; +} + +type Path_2840 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2840}` }[keyof T & string] : never; +type EP_2840 = Path_2840; + +type Val_2840 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2840 } + : T[K] extends object ? { t: 'o'; props: Val_2840 } + : { t: 'u' }; +}; +type EV_2840 = Val_2840; + +interface Registry_28_40 { + entities: Map; + validators: EV_2840; + paths: Set; + merged: DeepMerge_2840; +} + +type CK_2840 = `p28.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_40, Registry_28_40, CK_2840, EP_2840, EV_2840, DeepMerge_2840 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-41.ts new file mode 100644 index 00000000..7da40eca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-41.ts @@ -0,0 +1,50 @@ +// pkg-28/types-41 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2841 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2841 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_41 | null; children: Entity_28_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2841: number; y2841: string; z2841: boolean }; +} + +type Path_2841 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2841}` }[keyof T & string] : never; +type EP_2841 = Path_2841; + +type Val_2841 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2841 } + : T[K] extends object ? { t: 'o'; props: Val_2841 } + : { t: 'u' }; +}; +type EV_2841 = Val_2841; + +interface Registry_28_41 { + entities: Map; + validators: EV_2841; + paths: Set; + merged: DeepMerge_2841; +} + +type CK_2841 = `p28.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_41, Registry_28_41, CK_2841, EP_2841, EV_2841, DeepMerge_2841 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-42.ts new file mode 100644 index 00000000..29b92752 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-42.ts @@ -0,0 +1,50 @@ +// pkg-28/types-42 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2842 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2842 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_42 | null; children: Entity_28_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2842: number; y2842: string; z2842: boolean }; +} + +type Path_2842 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2842}` }[keyof T & string] : never; +type EP_2842 = Path_2842; + +type Val_2842 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2842 } + : T[K] extends object ? { t: 'o'; props: Val_2842 } + : { t: 'u' }; +}; +type EV_2842 = Val_2842; + +interface Registry_28_42 { + entities: Map; + validators: EV_2842; + paths: Set; + merged: DeepMerge_2842; +} + +type CK_2842 = `p28.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_42, Registry_28_42, CK_2842, EP_2842, EV_2842, DeepMerge_2842 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-43.ts new file mode 100644 index 00000000..c3c41d08 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-43.ts @@ -0,0 +1,50 @@ +// pkg-28/types-43 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2843 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2843 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_43 | null; children: Entity_28_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2843: number; y2843: string; z2843: boolean }; +} + +type Path_2843 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2843}` }[keyof T & string] : never; +type EP_2843 = Path_2843; + +type Val_2843 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2843 } + : T[K] extends object ? { t: 'o'; props: Val_2843 } + : { t: 'u' }; +}; +type EV_2843 = Val_2843; + +interface Registry_28_43 { + entities: Map; + validators: EV_2843; + paths: Set; + merged: DeepMerge_2843; +} + +type CK_2843 = `p28.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_43, Registry_28_43, CK_2843, EP_2843, EV_2843, DeepMerge_2843 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-44.ts new file mode 100644 index 00000000..6c8f1c51 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-44.ts @@ -0,0 +1,50 @@ +// pkg-28/types-44 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2844 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2844 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_44 | null; children: Entity_28_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2844: number; y2844: string; z2844: boolean }; +} + +type Path_2844 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2844}` }[keyof T & string] : never; +type EP_2844 = Path_2844; + +type Val_2844 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2844 } + : T[K] extends object ? { t: 'o'; props: Val_2844 } + : { t: 'u' }; +}; +type EV_2844 = Val_2844; + +interface Registry_28_44 { + entities: Map; + validators: EV_2844; + paths: Set; + merged: DeepMerge_2844; +} + +type CK_2844 = `p28.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_44, Registry_28_44, CK_2844, EP_2844, EV_2844, DeepMerge_2844 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-45.ts new file mode 100644 index 00000000..08fd0d4d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-45.ts @@ -0,0 +1,50 @@ +// pkg-28/types-45 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2845 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2845 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_45 | null; children: Entity_28_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2845: number; y2845: string; z2845: boolean }; +} + +type Path_2845 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2845}` }[keyof T & string] : never; +type EP_2845 = Path_2845; + +type Val_2845 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2845 } + : T[K] extends object ? { t: 'o'; props: Val_2845 } + : { t: 'u' }; +}; +type EV_2845 = Val_2845; + +interface Registry_28_45 { + entities: Map; + validators: EV_2845; + paths: Set; + merged: DeepMerge_2845; +} + +type CK_2845 = `p28.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_45, Registry_28_45, CK_2845, EP_2845, EV_2845, DeepMerge_2845 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-46.ts new file mode 100644 index 00000000..7cc2ca21 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-46.ts @@ -0,0 +1,50 @@ +// pkg-28/types-46 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2846 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2846 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_46 | null; children: Entity_28_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2846: number; y2846: string; z2846: boolean }; +} + +type Path_2846 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2846}` }[keyof T & string] : never; +type EP_2846 = Path_2846; + +type Val_2846 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2846 } + : T[K] extends object ? { t: 'o'; props: Val_2846 } + : { t: 'u' }; +}; +type EV_2846 = Val_2846; + +interface Registry_28_46 { + entities: Map; + validators: EV_2846; + paths: Set; + merged: DeepMerge_2846; +} + +type CK_2846 = `p28.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_46, Registry_28_46, CK_2846, EP_2846, EV_2846, DeepMerge_2846 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-47.ts new file mode 100644 index 00000000..82874fca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-47.ts @@ -0,0 +1,50 @@ +// pkg-28/types-47 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2847 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2847 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_47 | null; children: Entity_28_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2847: number; y2847: string; z2847: boolean }; +} + +type Path_2847 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2847}` }[keyof T & string] : never; +type EP_2847 = Path_2847; + +type Val_2847 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2847 } + : T[K] extends object ? { t: 'o'; props: Val_2847 } + : { t: 'u' }; +}; +type EV_2847 = Val_2847; + +interface Registry_28_47 { + entities: Map; + validators: EV_2847; + paths: Set; + merged: DeepMerge_2847; +} + +type CK_2847 = `p28.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_47, Registry_28_47, CK_2847, EP_2847, EV_2847, DeepMerge_2847 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-48.ts new file mode 100644 index 00000000..60feca28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-48.ts @@ -0,0 +1,50 @@ +// pkg-28/types-48 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2848 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2848 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_48 | null; children: Entity_28_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2848: number; y2848: string; z2848: boolean }; +} + +type Path_2848 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2848}` }[keyof T & string] : never; +type EP_2848 = Path_2848; + +type Val_2848 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2848 } + : T[K] extends object ? { t: 'o'; props: Val_2848 } + : { t: 'u' }; +}; +type EV_2848 = Val_2848; + +interface Registry_28_48 { + entities: Map; + validators: EV_2848; + paths: Set; + merged: DeepMerge_2848; +} + +type CK_2848 = `p28.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_48, Registry_28_48, CK_2848, EP_2848, EV_2848, DeepMerge_2848 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-49.ts new file mode 100644 index 00000000..ef10a3c3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-49.ts @@ -0,0 +1,50 @@ +// pkg-28/types-49 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2849 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2849 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_49 | null; children: Entity_28_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2849: number; y2849: string; z2849: boolean }; +} + +type Path_2849 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2849}` }[keyof T & string] : never; +type EP_2849 = Path_2849; + +type Val_2849 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2849 } + : T[K] extends object ? { t: 'o'; props: Val_2849 } + : { t: 'u' }; +}; +type EV_2849 = Val_2849; + +interface Registry_28_49 { + entities: Map; + validators: EV_2849; + paths: Set; + merged: DeepMerge_2849; +} + +type CK_2849 = `p28.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_49, Registry_28_49, CK_2849, EP_2849, EV_2849, DeepMerge_2849 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-28/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-28/types-50.ts new file mode 100644 index 00000000..b1ccf844 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-28/types-50.ts @@ -0,0 +1,50 @@ +// pkg-28/types-50 - heavy interconnected types + +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; +import type { Entity_25_01, Registry_25_01 } from '../pkg-25/types-01'; +import type { Entity_25_10, Registry_25_10 } from '../pkg-25/types-10'; +import type { Entity_25_20, Registry_25_20 } from '../pkg-25/types-20'; + +type DeepMerge_2850 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2850 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_28_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_28_50 | null; children: Entity_28_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2850: number; y2850: string; z2850: boolean }; +} + +type Path_2850 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2850}` }[keyof T & string] : never; +type EP_2850 = Path_2850; + +type Val_2850 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2850 } + : T[K] extends object ? { t: 'o'; props: Val_2850 } + : { t: 'u' }; +}; +type EV_2850 = Val_2850; + +interface Registry_28_50 { + entities: Map; + validators: EV_2850; + paths: Set; + merged: DeepMerge_2850; +} + +type CK_2850 = `p28.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_28_50, Registry_28_50, CK_2850, EP_2850, EV_2850, DeepMerge_2850 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-29/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-01.ts new file mode 100644 index 00000000..2117a12d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-01.ts @@ -0,0 +1,50 @@ +// pkg-29/types-01 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2901 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2901 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_01 | null; children: Entity_29_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x2901: number; y2901: string; z2901: boolean }; +} + +type Path_2901 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2901}` }[keyof T & string] : never; +type EP_2901 = Path_2901; + +type Val_2901 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2901 } + : T[K] extends object ? { t: 'o'; props: Val_2901 } + : { t: 'u' }; +}; +type EV_2901 = Val_2901; + +interface Registry_29_01 { + entities: Map; + validators: EV_2901; + paths: Set; + merged: DeepMerge_2901; +} + +type CK_2901 = `p29.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_01, Registry_29_01, CK_2901, EP_2901, EV_2901, DeepMerge_2901 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-02.ts new file mode 100644 index 00000000..64f342cf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-02.ts @@ -0,0 +1,50 @@ +// pkg-29/types-02 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2902 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2902 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_02 | null; children: Entity_29_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x2902: number; y2902: string; z2902: boolean }; +} + +type Path_2902 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2902}` }[keyof T & string] : never; +type EP_2902 = Path_2902; + +type Val_2902 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2902 } + : T[K] extends object ? { t: 'o'; props: Val_2902 } + : { t: 'u' }; +}; +type EV_2902 = Val_2902; + +interface Registry_29_02 { + entities: Map; + validators: EV_2902; + paths: Set; + merged: DeepMerge_2902; +} + +type CK_2902 = `p29.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_02, Registry_29_02, CK_2902, EP_2902, EV_2902, DeepMerge_2902 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-03.ts new file mode 100644 index 00000000..07457cfd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-03.ts @@ -0,0 +1,50 @@ +// pkg-29/types-03 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2903 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2903 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_03 | null; children: Entity_29_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x2903: number; y2903: string; z2903: boolean }; +} + +type Path_2903 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2903}` }[keyof T & string] : never; +type EP_2903 = Path_2903; + +type Val_2903 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2903 } + : T[K] extends object ? { t: 'o'; props: Val_2903 } + : { t: 'u' }; +}; +type EV_2903 = Val_2903; + +interface Registry_29_03 { + entities: Map; + validators: EV_2903; + paths: Set; + merged: DeepMerge_2903; +} + +type CK_2903 = `p29.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_03, Registry_29_03, CK_2903, EP_2903, EV_2903, DeepMerge_2903 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-04.ts new file mode 100644 index 00000000..2f51edba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-04.ts @@ -0,0 +1,50 @@ +// pkg-29/types-04 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2904 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2904 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_04 | null; children: Entity_29_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x2904: number; y2904: string; z2904: boolean }; +} + +type Path_2904 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2904}` }[keyof T & string] : never; +type EP_2904 = Path_2904; + +type Val_2904 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2904 } + : T[K] extends object ? { t: 'o'; props: Val_2904 } + : { t: 'u' }; +}; +type EV_2904 = Val_2904; + +interface Registry_29_04 { + entities: Map; + validators: EV_2904; + paths: Set; + merged: DeepMerge_2904; +} + +type CK_2904 = `p29.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_04, Registry_29_04, CK_2904, EP_2904, EV_2904, DeepMerge_2904 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-05.ts new file mode 100644 index 00000000..57e73072 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-05.ts @@ -0,0 +1,50 @@ +// pkg-29/types-05 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2905 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2905 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_05 | null; children: Entity_29_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x2905: number; y2905: string; z2905: boolean }; +} + +type Path_2905 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2905}` }[keyof T & string] : never; +type EP_2905 = Path_2905; + +type Val_2905 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2905 } + : T[K] extends object ? { t: 'o'; props: Val_2905 } + : { t: 'u' }; +}; +type EV_2905 = Val_2905; + +interface Registry_29_05 { + entities: Map; + validators: EV_2905; + paths: Set; + merged: DeepMerge_2905; +} + +type CK_2905 = `p29.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_05, Registry_29_05, CK_2905, EP_2905, EV_2905, DeepMerge_2905 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-06.ts new file mode 100644 index 00000000..b8a7a86a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-06.ts @@ -0,0 +1,50 @@ +// pkg-29/types-06 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2906 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2906 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_06 | null; children: Entity_29_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x2906: number; y2906: string; z2906: boolean }; +} + +type Path_2906 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2906}` }[keyof T & string] : never; +type EP_2906 = Path_2906; + +type Val_2906 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2906 } + : T[K] extends object ? { t: 'o'; props: Val_2906 } + : { t: 'u' }; +}; +type EV_2906 = Val_2906; + +interface Registry_29_06 { + entities: Map; + validators: EV_2906; + paths: Set; + merged: DeepMerge_2906; +} + +type CK_2906 = `p29.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_06, Registry_29_06, CK_2906, EP_2906, EV_2906, DeepMerge_2906 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-07.ts new file mode 100644 index 00000000..b9951cea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-07.ts @@ -0,0 +1,50 @@ +// pkg-29/types-07 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2907 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2907 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_07 | null; children: Entity_29_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x2907: number; y2907: string; z2907: boolean }; +} + +type Path_2907 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2907}` }[keyof T & string] : never; +type EP_2907 = Path_2907; + +type Val_2907 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2907 } + : T[K] extends object ? { t: 'o'; props: Val_2907 } + : { t: 'u' }; +}; +type EV_2907 = Val_2907; + +interface Registry_29_07 { + entities: Map; + validators: EV_2907; + paths: Set; + merged: DeepMerge_2907; +} + +type CK_2907 = `p29.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_07, Registry_29_07, CK_2907, EP_2907, EV_2907, DeepMerge_2907 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-08.ts new file mode 100644 index 00000000..1934499b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-08.ts @@ -0,0 +1,50 @@ +// pkg-29/types-08 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2908 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2908 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_08 | null; children: Entity_29_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x2908: number; y2908: string; z2908: boolean }; +} + +type Path_2908 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2908}` }[keyof T & string] : never; +type EP_2908 = Path_2908; + +type Val_2908 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2908 } + : T[K] extends object ? { t: 'o'; props: Val_2908 } + : { t: 'u' }; +}; +type EV_2908 = Val_2908; + +interface Registry_29_08 { + entities: Map; + validators: EV_2908; + paths: Set; + merged: DeepMerge_2908; +} + +type CK_2908 = `p29.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_08, Registry_29_08, CK_2908, EP_2908, EV_2908, DeepMerge_2908 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-09.ts new file mode 100644 index 00000000..4560ed3a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-09.ts @@ -0,0 +1,50 @@ +// pkg-29/types-09 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2909 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2909 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_09 | null; children: Entity_29_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x2909: number; y2909: string; z2909: boolean }; +} + +type Path_2909 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2909}` }[keyof T & string] : never; +type EP_2909 = Path_2909; + +type Val_2909 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2909 } + : T[K] extends object ? { t: 'o'; props: Val_2909 } + : { t: 'u' }; +}; +type EV_2909 = Val_2909; + +interface Registry_29_09 { + entities: Map; + validators: EV_2909; + paths: Set; + merged: DeepMerge_2909; +} + +type CK_2909 = `p29.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_09, Registry_29_09, CK_2909, EP_2909, EV_2909, DeepMerge_2909 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-10.ts new file mode 100644 index 00000000..c88fcaa1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-10.ts @@ -0,0 +1,50 @@ +// pkg-29/types-10 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2910 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2910 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_10 | null; children: Entity_29_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x2910: number; y2910: string; z2910: boolean }; +} + +type Path_2910 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2910}` }[keyof T & string] : never; +type EP_2910 = Path_2910; + +type Val_2910 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2910 } + : T[K] extends object ? { t: 'o'; props: Val_2910 } + : { t: 'u' }; +}; +type EV_2910 = Val_2910; + +interface Registry_29_10 { + entities: Map; + validators: EV_2910; + paths: Set; + merged: DeepMerge_2910; +} + +type CK_2910 = `p29.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_10, Registry_29_10, CK_2910, EP_2910, EV_2910, DeepMerge_2910 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-11.ts new file mode 100644 index 00000000..38a90723 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-11.ts @@ -0,0 +1,50 @@ +// pkg-29/types-11 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2911 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2911 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_11 | null; children: Entity_29_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x2911: number; y2911: string; z2911: boolean }; +} + +type Path_2911 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2911}` }[keyof T & string] : never; +type EP_2911 = Path_2911; + +type Val_2911 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2911 } + : T[K] extends object ? { t: 'o'; props: Val_2911 } + : { t: 'u' }; +}; +type EV_2911 = Val_2911; + +interface Registry_29_11 { + entities: Map; + validators: EV_2911; + paths: Set; + merged: DeepMerge_2911; +} + +type CK_2911 = `p29.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_11, Registry_29_11, CK_2911, EP_2911, EV_2911, DeepMerge_2911 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-12.ts new file mode 100644 index 00000000..0a3a5583 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-12.ts @@ -0,0 +1,50 @@ +// pkg-29/types-12 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2912 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2912 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_12 | null; children: Entity_29_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x2912: number; y2912: string; z2912: boolean }; +} + +type Path_2912 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2912}` }[keyof T & string] : never; +type EP_2912 = Path_2912; + +type Val_2912 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2912 } + : T[K] extends object ? { t: 'o'; props: Val_2912 } + : { t: 'u' }; +}; +type EV_2912 = Val_2912; + +interface Registry_29_12 { + entities: Map; + validators: EV_2912; + paths: Set; + merged: DeepMerge_2912; +} + +type CK_2912 = `p29.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_12, Registry_29_12, CK_2912, EP_2912, EV_2912, DeepMerge_2912 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-13.ts new file mode 100644 index 00000000..43045420 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-13.ts @@ -0,0 +1,50 @@ +// pkg-29/types-13 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2913 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2913 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_13 | null; children: Entity_29_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x2913: number; y2913: string; z2913: boolean }; +} + +type Path_2913 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2913}` }[keyof T & string] : never; +type EP_2913 = Path_2913; + +type Val_2913 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2913 } + : T[K] extends object ? { t: 'o'; props: Val_2913 } + : { t: 'u' }; +}; +type EV_2913 = Val_2913; + +interface Registry_29_13 { + entities: Map; + validators: EV_2913; + paths: Set; + merged: DeepMerge_2913; +} + +type CK_2913 = `p29.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_13, Registry_29_13, CK_2913, EP_2913, EV_2913, DeepMerge_2913 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-14.ts new file mode 100644 index 00000000..474f448c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-14.ts @@ -0,0 +1,50 @@ +// pkg-29/types-14 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2914 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2914 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_14 | null; children: Entity_29_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x2914: number; y2914: string; z2914: boolean }; +} + +type Path_2914 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2914}` }[keyof T & string] : never; +type EP_2914 = Path_2914; + +type Val_2914 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2914 } + : T[K] extends object ? { t: 'o'; props: Val_2914 } + : { t: 'u' }; +}; +type EV_2914 = Val_2914; + +interface Registry_29_14 { + entities: Map; + validators: EV_2914; + paths: Set; + merged: DeepMerge_2914; +} + +type CK_2914 = `p29.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_14, Registry_29_14, CK_2914, EP_2914, EV_2914, DeepMerge_2914 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-15.ts new file mode 100644 index 00000000..221ff2bc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-15.ts @@ -0,0 +1,50 @@ +// pkg-29/types-15 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2915 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2915 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_15 | null; children: Entity_29_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x2915: number; y2915: string; z2915: boolean }; +} + +type Path_2915 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2915}` }[keyof T & string] : never; +type EP_2915 = Path_2915; + +type Val_2915 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2915 } + : T[K] extends object ? { t: 'o'; props: Val_2915 } + : { t: 'u' }; +}; +type EV_2915 = Val_2915; + +interface Registry_29_15 { + entities: Map; + validators: EV_2915; + paths: Set; + merged: DeepMerge_2915; +} + +type CK_2915 = `p29.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_15, Registry_29_15, CK_2915, EP_2915, EV_2915, DeepMerge_2915 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-16.ts new file mode 100644 index 00000000..ecee6ea2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-16.ts @@ -0,0 +1,50 @@ +// pkg-29/types-16 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2916 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2916 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_16 | null; children: Entity_29_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x2916: number; y2916: string; z2916: boolean }; +} + +type Path_2916 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2916}` }[keyof T & string] : never; +type EP_2916 = Path_2916; + +type Val_2916 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2916 } + : T[K] extends object ? { t: 'o'; props: Val_2916 } + : { t: 'u' }; +}; +type EV_2916 = Val_2916; + +interface Registry_29_16 { + entities: Map; + validators: EV_2916; + paths: Set; + merged: DeepMerge_2916; +} + +type CK_2916 = `p29.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_16, Registry_29_16, CK_2916, EP_2916, EV_2916, DeepMerge_2916 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-17.ts new file mode 100644 index 00000000..47519a53 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-17.ts @@ -0,0 +1,50 @@ +// pkg-29/types-17 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2917 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2917 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_17 | null; children: Entity_29_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x2917: number; y2917: string; z2917: boolean }; +} + +type Path_2917 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2917}` }[keyof T & string] : never; +type EP_2917 = Path_2917; + +type Val_2917 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2917 } + : T[K] extends object ? { t: 'o'; props: Val_2917 } + : { t: 'u' }; +}; +type EV_2917 = Val_2917; + +interface Registry_29_17 { + entities: Map; + validators: EV_2917; + paths: Set; + merged: DeepMerge_2917; +} + +type CK_2917 = `p29.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_17, Registry_29_17, CK_2917, EP_2917, EV_2917, DeepMerge_2917 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-18.ts new file mode 100644 index 00000000..10d47572 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-18.ts @@ -0,0 +1,50 @@ +// pkg-29/types-18 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2918 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2918 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_18 | null; children: Entity_29_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x2918: number; y2918: string; z2918: boolean }; +} + +type Path_2918 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2918}` }[keyof T & string] : never; +type EP_2918 = Path_2918; + +type Val_2918 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2918 } + : T[K] extends object ? { t: 'o'; props: Val_2918 } + : { t: 'u' }; +}; +type EV_2918 = Val_2918; + +interface Registry_29_18 { + entities: Map; + validators: EV_2918; + paths: Set; + merged: DeepMerge_2918; +} + +type CK_2918 = `p29.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_18, Registry_29_18, CK_2918, EP_2918, EV_2918, DeepMerge_2918 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-19.ts new file mode 100644 index 00000000..9be648cf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-19.ts @@ -0,0 +1,50 @@ +// pkg-29/types-19 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2919 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2919 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_19 | null; children: Entity_29_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x2919: number; y2919: string; z2919: boolean }; +} + +type Path_2919 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2919}` }[keyof T & string] : never; +type EP_2919 = Path_2919; + +type Val_2919 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2919 } + : T[K] extends object ? { t: 'o'; props: Val_2919 } + : { t: 'u' }; +}; +type EV_2919 = Val_2919; + +interface Registry_29_19 { + entities: Map; + validators: EV_2919; + paths: Set; + merged: DeepMerge_2919; +} + +type CK_2919 = `p29.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_19, Registry_29_19, CK_2919, EP_2919, EV_2919, DeepMerge_2919 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-20.ts new file mode 100644 index 00000000..7b4d4dec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-20.ts @@ -0,0 +1,50 @@ +// pkg-29/types-20 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2920 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2920 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_20 | null; children: Entity_29_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x2920: number; y2920: string; z2920: boolean }; +} + +type Path_2920 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2920}` }[keyof T & string] : never; +type EP_2920 = Path_2920; + +type Val_2920 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2920 } + : T[K] extends object ? { t: 'o'; props: Val_2920 } + : { t: 'u' }; +}; +type EV_2920 = Val_2920; + +interface Registry_29_20 { + entities: Map; + validators: EV_2920; + paths: Set; + merged: DeepMerge_2920; +} + +type CK_2920 = `p29.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_20, Registry_29_20, CK_2920, EP_2920, EV_2920, DeepMerge_2920 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-21.ts new file mode 100644 index 00000000..3d82a99d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-21.ts @@ -0,0 +1,50 @@ +// pkg-29/types-21 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2921 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2921 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_21 | null; children: Entity_29_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x2921: number; y2921: string; z2921: boolean }; +} + +type Path_2921 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2921}` }[keyof T & string] : never; +type EP_2921 = Path_2921; + +type Val_2921 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2921 } + : T[K] extends object ? { t: 'o'; props: Val_2921 } + : { t: 'u' }; +}; +type EV_2921 = Val_2921; + +interface Registry_29_21 { + entities: Map; + validators: EV_2921; + paths: Set; + merged: DeepMerge_2921; +} + +type CK_2921 = `p29.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_21, Registry_29_21, CK_2921, EP_2921, EV_2921, DeepMerge_2921 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-22.ts new file mode 100644 index 00000000..823f3419 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-22.ts @@ -0,0 +1,50 @@ +// pkg-29/types-22 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2922 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2922 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_22 | null; children: Entity_29_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x2922: number; y2922: string; z2922: boolean }; +} + +type Path_2922 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2922}` }[keyof T & string] : never; +type EP_2922 = Path_2922; + +type Val_2922 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2922 } + : T[K] extends object ? { t: 'o'; props: Val_2922 } + : { t: 'u' }; +}; +type EV_2922 = Val_2922; + +interface Registry_29_22 { + entities: Map; + validators: EV_2922; + paths: Set; + merged: DeepMerge_2922; +} + +type CK_2922 = `p29.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_22, Registry_29_22, CK_2922, EP_2922, EV_2922, DeepMerge_2922 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-23.ts new file mode 100644 index 00000000..135c64c2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-23.ts @@ -0,0 +1,50 @@ +// pkg-29/types-23 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2923 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2923 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_23 | null; children: Entity_29_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x2923: number; y2923: string; z2923: boolean }; +} + +type Path_2923 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2923}` }[keyof T & string] : never; +type EP_2923 = Path_2923; + +type Val_2923 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2923 } + : T[K] extends object ? { t: 'o'; props: Val_2923 } + : { t: 'u' }; +}; +type EV_2923 = Val_2923; + +interface Registry_29_23 { + entities: Map; + validators: EV_2923; + paths: Set; + merged: DeepMerge_2923; +} + +type CK_2923 = `p29.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_23, Registry_29_23, CK_2923, EP_2923, EV_2923, DeepMerge_2923 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-24.ts new file mode 100644 index 00000000..49919f5a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-24.ts @@ -0,0 +1,50 @@ +// pkg-29/types-24 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2924 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2924 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_24 | null; children: Entity_29_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x2924: number; y2924: string; z2924: boolean }; +} + +type Path_2924 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2924}` }[keyof T & string] : never; +type EP_2924 = Path_2924; + +type Val_2924 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2924 } + : T[K] extends object ? { t: 'o'; props: Val_2924 } + : { t: 'u' }; +}; +type EV_2924 = Val_2924; + +interface Registry_29_24 { + entities: Map; + validators: EV_2924; + paths: Set; + merged: DeepMerge_2924; +} + +type CK_2924 = `p29.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_24, Registry_29_24, CK_2924, EP_2924, EV_2924, DeepMerge_2924 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-25.ts new file mode 100644 index 00000000..c083fc9f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-25.ts @@ -0,0 +1,50 @@ +// pkg-29/types-25 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2925 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2925 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_25 | null; children: Entity_29_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x2925: number; y2925: string; z2925: boolean }; +} + +type Path_2925 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2925}` }[keyof T & string] : never; +type EP_2925 = Path_2925; + +type Val_2925 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2925 } + : T[K] extends object ? { t: 'o'; props: Val_2925 } + : { t: 'u' }; +}; +type EV_2925 = Val_2925; + +interface Registry_29_25 { + entities: Map; + validators: EV_2925; + paths: Set; + merged: DeepMerge_2925; +} + +type CK_2925 = `p29.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_25, Registry_29_25, CK_2925, EP_2925, EV_2925, DeepMerge_2925 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-26.ts new file mode 100644 index 00000000..5e044d5f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-26.ts @@ -0,0 +1,50 @@ +// pkg-29/types-26 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2926 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2926 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_26 | null; children: Entity_29_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x2926: number; y2926: string; z2926: boolean }; +} + +type Path_2926 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2926}` }[keyof T & string] : never; +type EP_2926 = Path_2926; + +type Val_2926 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2926 } + : T[K] extends object ? { t: 'o'; props: Val_2926 } + : { t: 'u' }; +}; +type EV_2926 = Val_2926; + +interface Registry_29_26 { + entities: Map; + validators: EV_2926; + paths: Set; + merged: DeepMerge_2926; +} + +type CK_2926 = `p29.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_26, Registry_29_26, CK_2926, EP_2926, EV_2926, DeepMerge_2926 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-27.ts new file mode 100644 index 00000000..29e41320 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-27.ts @@ -0,0 +1,50 @@ +// pkg-29/types-27 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2927 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2927 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_27 | null; children: Entity_29_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x2927: number; y2927: string; z2927: boolean }; +} + +type Path_2927 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2927}` }[keyof T & string] : never; +type EP_2927 = Path_2927; + +type Val_2927 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2927 } + : T[K] extends object ? { t: 'o'; props: Val_2927 } + : { t: 'u' }; +}; +type EV_2927 = Val_2927; + +interface Registry_29_27 { + entities: Map; + validators: EV_2927; + paths: Set; + merged: DeepMerge_2927; +} + +type CK_2927 = `p29.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_27, Registry_29_27, CK_2927, EP_2927, EV_2927, DeepMerge_2927 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-28.ts new file mode 100644 index 00000000..7649836d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-28.ts @@ -0,0 +1,50 @@ +// pkg-29/types-28 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2928 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2928 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_28 | null; children: Entity_29_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x2928: number; y2928: string; z2928: boolean }; +} + +type Path_2928 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2928}` }[keyof T & string] : never; +type EP_2928 = Path_2928; + +type Val_2928 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2928 } + : T[K] extends object ? { t: 'o'; props: Val_2928 } + : { t: 'u' }; +}; +type EV_2928 = Val_2928; + +interface Registry_29_28 { + entities: Map; + validators: EV_2928; + paths: Set; + merged: DeepMerge_2928; +} + +type CK_2928 = `p29.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_28, Registry_29_28, CK_2928, EP_2928, EV_2928, DeepMerge_2928 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-29.ts new file mode 100644 index 00000000..7d8b961c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-29.ts @@ -0,0 +1,50 @@ +// pkg-29/types-29 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2929 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2929 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_29 | null; children: Entity_29_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x2929: number; y2929: string; z2929: boolean }; +} + +type Path_2929 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2929}` }[keyof T & string] : never; +type EP_2929 = Path_2929; + +type Val_2929 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2929 } + : T[K] extends object ? { t: 'o'; props: Val_2929 } + : { t: 'u' }; +}; +type EV_2929 = Val_2929; + +interface Registry_29_29 { + entities: Map; + validators: EV_2929; + paths: Set; + merged: DeepMerge_2929; +} + +type CK_2929 = `p29.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_29, Registry_29_29, CK_2929, EP_2929, EV_2929, DeepMerge_2929 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-30.ts new file mode 100644 index 00000000..adc712ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-30.ts @@ -0,0 +1,50 @@ +// pkg-29/types-30 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2930 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2930 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_30 | null; children: Entity_29_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x2930: number; y2930: string; z2930: boolean }; +} + +type Path_2930 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2930}` }[keyof T & string] : never; +type EP_2930 = Path_2930; + +type Val_2930 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2930 } + : T[K] extends object ? { t: 'o'; props: Val_2930 } + : { t: 'u' }; +}; +type EV_2930 = Val_2930; + +interface Registry_29_30 { + entities: Map; + validators: EV_2930; + paths: Set; + merged: DeepMerge_2930; +} + +type CK_2930 = `p29.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_30, Registry_29_30, CK_2930, EP_2930, EV_2930, DeepMerge_2930 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-31.ts new file mode 100644 index 00000000..026965d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-31.ts @@ -0,0 +1,50 @@ +// pkg-29/types-31 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2931 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2931 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_31 | null; children: Entity_29_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x2931: number; y2931: string; z2931: boolean }; +} + +type Path_2931 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2931}` }[keyof T & string] : never; +type EP_2931 = Path_2931; + +type Val_2931 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2931 } + : T[K] extends object ? { t: 'o'; props: Val_2931 } + : { t: 'u' }; +}; +type EV_2931 = Val_2931; + +interface Registry_29_31 { + entities: Map; + validators: EV_2931; + paths: Set; + merged: DeepMerge_2931; +} + +type CK_2931 = `p29.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_31, Registry_29_31, CK_2931, EP_2931, EV_2931, DeepMerge_2931 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-32.ts new file mode 100644 index 00000000..90e7767a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-32.ts @@ -0,0 +1,50 @@ +// pkg-29/types-32 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2932 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2932 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_32 | null; children: Entity_29_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x2932: number; y2932: string; z2932: boolean }; +} + +type Path_2932 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2932}` }[keyof T & string] : never; +type EP_2932 = Path_2932; + +type Val_2932 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2932 } + : T[K] extends object ? { t: 'o'; props: Val_2932 } + : { t: 'u' }; +}; +type EV_2932 = Val_2932; + +interface Registry_29_32 { + entities: Map; + validators: EV_2932; + paths: Set; + merged: DeepMerge_2932; +} + +type CK_2932 = `p29.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_32, Registry_29_32, CK_2932, EP_2932, EV_2932, DeepMerge_2932 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-33.ts new file mode 100644 index 00000000..ef79b290 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-33.ts @@ -0,0 +1,50 @@ +// pkg-29/types-33 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2933 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2933 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_33 | null; children: Entity_29_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x2933: number; y2933: string; z2933: boolean }; +} + +type Path_2933 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2933}` }[keyof T & string] : never; +type EP_2933 = Path_2933; + +type Val_2933 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2933 } + : T[K] extends object ? { t: 'o'; props: Val_2933 } + : { t: 'u' }; +}; +type EV_2933 = Val_2933; + +interface Registry_29_33 { + entities: Map; + validators: EV_2933; + paths: Set; + merged: DeepMerge_2933; +} + +type CK_2933 = `p29.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_33, Registry_29_33, CK_2933, EP_2933, EV_2933, DeepMerge_2933 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-34.ts new file mode 100644 index 00000000..c13106d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-34.ts @@ -0,0 +1,50 @@ +// pkg-29/types-34 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2934 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2934 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_34 | null; children: Entity_29_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x2934: number; y2934: string; z2934: boolean }; +} + +type Path_2934 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2934}` }[keyof T & string] : never; +type EP_2934 = Path_2934; + +type Val_2934 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2934 } + : T[K] extends object ? { t: 'o'; props: Val_2934 } + : { t: 'u' }; +}; +type EV_2934 = Val_2934; + +interface Registry_29_34 { + entities: Map; + validators: EV_2934; + paths: Set; + merged: DeepMerge_2934; +} + +type CK_2934 = `p29.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_34, Registry_29_34, CK_2934, EP_2934, EV_2934, DeepMerge_2934 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-35.ts new file mode 100644 index 00000000..6e70b85b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-35.ts @@ -0,0 +1,50 @@ +// pkg-29/types-35 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2935 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2935 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_35 | null; children: Entity_29_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x2935: number; y2935: string; z2935: boolean }; +} + +type Path_2935 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2935}` }[keyof T & string] : never; +type EP_2935 = Path_2935; + +type Val_2935 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2935 } + : T[K] extends object ? { t: 'o'; props: Val_2935 } + : { t: 'u' }; +}; +type EV_2935 = Val_2935; + +interface Registry_29_35 { + entities: Map; + validators: EV_2935; + paths: Set; + merged: DeepMerge_2935; +} + +type CK_2935 = `p29.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_35, Registry_29_35, CK_2935, EP_2935, EV_2935, DeepMerge_2935 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-36.ts new file mode 100644 index 00000000..157fad07 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-36.ts @@ -0,0 +1,50 @@ +// pkg-29/types-36 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2936 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2936 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_36 | null; children: Entity_29_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x2936: number; y2936: string; z2936: boolean }; +} + +type Path_2936 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2936}` }[keyof T & string] : never; +type EP_2936 = Path_2936; + +type Val_2936 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2936 } + : T[K] extends object ? { t: 'o'; props: Val_2936 } + : { t: 'u' }; +}; +type EV_2936 = Val_2936; + +interface Registry_29_36 { + entities: Map; + validators: EV_2936; + paths: Set; + merged: DeepMerge_2936; +} + +type CK_2936 = `p29.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_36, Registry_29_36, CK_2936, EP_2936, EV_2936, DeepMerge_2936 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-37.ts new file mode 100644 index 00000000..ed989d79 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-37.ts @@ -0,0 +1,50 @@ +// pkg-29/types-37 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2937 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2937 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_37 | null; children: Entity_29_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x2937: number; y2937: string; z2937: boolean }; +} + +type Path_2937 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2937}` }[keyof T & string] : never; +type EP_2937 = Path_2937; + +type Val_2937 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2937 } + : T[K] extends object ? { t: 'o'; props: Val_2937 } + : { t: 'u' }; +}; +type EV_2937 = Val_2937; + +interface Registry_29_37 { + entities: Map; + validators: EV_2937; + paths: Set; + merged: DeepMerge_2937; +} + +type CK_2937 = `p29.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_37, Registry_29_37, CK_2937, EP_2937, EV_2937, DeepMerge_2937 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-38.ts new file mode 100644 index 00000000..4188cabd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-38.ts @@ -0,0 +1,50 @@ +// pkg-29/types-38 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2938 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2938 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_38 | null; children: Entity_29_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x2938: number; y2938: string; z2938: boolean }; +} + +type Path_2938 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2938}` }[keyof T & string] : never; +type EP_2938 = Path_2938; + +type Val_2938 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2938 } + : T[K] extends object ? { t: 'o'; props: Val_2938 } + : { t: 'u' }; +}; +type EV_2938 = Val_2938; + +interface Registry_29_38 { + entities: Map; + validators: EV_2938; + paths: Set; + merged: DeepMerge_2938; +} + +type CK_2938 = `p29.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_38, Registry_29_38, CK_2938, EP_2938, EV_2938, DeepMerge_2938 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-39.ts new file mode 100644 index 00000000..22199e44 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-39.ts @@ -0,0 +1,50 @@ +// pkg-29/types-39 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2939 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2939 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_39 | null; children: Entity_29_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x2939: number; y2939: string; z2939: boolean }; +} + +type Path_2939 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2939}` }[keyof T & string] : never; +type EP_2939 = Path_2939; + +type Val_2939 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2939 } + : T[K] extends object ? { t: 'o'; props: Val_2939 } + : { t: 'u' }; +}; +type EV_2939 = Val_2939; + +interface Registry_29_39 { + entities: Map; + validators: EV_2939; + paths: Set; + merged: DeepMerge_2939; +} + +type CK_2939 = `p29.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_39, Registry_29_39, CK_2939, EP_2939, EV_2939, DeepMerge_2939 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-40.ts new file mode 100644 index 00000000..63a64fea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-40.ts @@ -0,0 +1,50 @@ +// pkg-29/types-40 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2940 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2940 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_40 | null; children: Entity_29_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x2940: number; y2940: string; z2940: boolean }; +} + +type Path_2940 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2940}` }[keyof T & string] : never; +type EP_2940 = Path_2940; + +type Val_2940 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2940 } + : T[K] extends object ? { t: 'o'; props: Val_2940 } + : { t: 'u' }; +}; +type EV_2940 = Val_2940; + +interface Registry_29_40 { + entities: Map; + validators: EV_2940; + paths: Set; + merged: DeepMerge_2940; +} + +type CK_2940 = `p29.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_40, Registry_29_40, CK_2940, EP_2940, EV_2940, DeepMerge_2940 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-41.ts new file mode 100644 index 00000000..eb438721 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-41.ts @@ -0,0 +1,50 @@ +// pkg-29/types-41 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2941 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2941 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_41 | null; children: Entity_29_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x2941: number; y2941: string; z2941: boolean }; +} + +type Path_2941 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2941}` }[keyof T & string] : never; +type EP_2941 = Path_2941; + +type Val_2941 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2941 } + : T[K] extends object ? { t: 'o'; props: Val_2941 } + : { t: 'u' }; +}; +type EV_2941 = Val_2941; + +interface Registry_29_41 { + entities: Map; + validators: EV_2941; + paths: Set; + merged: DeepMerge_2941; +} + +type CK_2941 = `p29.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_41, Registry_29_41, CK_2941, EP_2941, EV_2941, DeepMerge_2941 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-42.ts new file mode 100644 index 00000000..979acf2b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-42.ts @@ -0,0 +1,50 @@ +// pkg-29/types-42 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2942 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2942 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_42 | null; children: Entity_29_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x2942: number; y2942: string; z2942: boolean }; +} + +type Path_2942 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2942}` }[keyof T & string] : never; +type EP_2942 = Path_2942; + +type Val_2942 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2942 } + : T[K] extends object ? { t: 'o'; props: Val_2942 } + : { t: 'u' }; +}; +type EV_2942 = Val_2942; + +interface Registry_29_42 { + entities: Map; + validators: EV_2942; + paths: Set; + merged: DeepMerge_2942; +} + +type CK_2942 = `p29.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_42, Registry_29_42, CK_2942, EP_2942, EV_2942, DeepMerge_2942 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-43.ts new file mode 100644 index 00000000..b04e99e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-43.ts @@ -0,0 +1,50 @@ +// pkg-29/types-43 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2943 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2943 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_43 | null; children: Entity_29_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x2943: number; y2943: string; z2943: boolean }; +} + +type Path_2943 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2943}` }[keyof T & string] : never; +type EP_2943 = Path_2943; + +type Val_2943 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2943 } + : T[K] extends object ? { t: 'o'; props: Val_2943 } + : { t: 'u' }; +}; +type EV_2943 = Val_2943; + +interface Registry_29_43 { + entities: Map; + validators: EV_2943; + paths: Set; + merged: DeepMerge_2943; +} + +type CK_2943 = `p29.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_43, Registry_29_43, CK_2943, EP_2943, EV_2943, DeepMerge_2943 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-44.ts new file mode 100644 index 00000000..90db721e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-44.ts @@ -0,0 +1,50 @@ +// pkg-29/types-44 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2944 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2944 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_44 | null; children: Entity_29_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x2944: number; y2944: string; z2944: boolean }; +} + +type Path_2944 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2944}` }[keyof T & string] : never; +type EP_2944 = Path_2944; + +type Val_2944 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2944 } + : T[K] extends object ? { t: 'o'; props: Val_2944 } + : { t: 'u' }; +}; +type EV_2944 = Val_2944; + +interface Registry_29_44 { + entities: Map; + validators: EV_2944; + paths: Set; + merged: DeepMerge_2944; +} + +type CK_2944 = `p29.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_44, Registry_29_44, CK_2944, EP_2944, EV_2944, DeepMerge_2944 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-45.ts new file mode 100644 index 00000000..20bb9ea2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-45.ts @@ -0,0 +1,50 @@ +// pkg-29/types-45 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2945 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2945 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_45 | null; children: Entity_29_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x2945: number; y2945: string; z2945: boolean }; +} + +type Path_2945 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2945}` }[keyof T & string] : never; +type EP_2945 = Path_2945; + +type Val_2945 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2945 } + : T[K] extends object ? { t: 'o'; props: Val_2945 } + : { t: 'u' }; +}; +type EV_2945 = Val_2945; + +interface Registry_29_45 { + entities: Map; + validators: EV_2945; + paths: Set; + merged: DeepMerge_2945; +} + +type CK_2945 = `p29.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_45, Registry_29_45, CK_2945, EP_2945, EV_2945, DeepMerge_2945 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-46.ts new file mode 100644 index 00000000..ad2189e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-46.ts @@ -0,0 +1,50 @@ +// pkg-29/types-46 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2946 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2946 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_46 | null; children: Entity_29_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x2946: number; y2946: string; z2946: boolean }; +} + +type Path_2946 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2946}` }[keyof T & string] : never; +type EP_2946 = Path_2946; + +type Val_2946 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2946 } + : T[K] extends object ? { t: 'o'; props: Val_2946 } + : { t: 'u' }; +}; +type EV_2946 = Val_2946; + +interface Registry_29_46 { + entities: Map; + validators: EV_2946; + paths: Set; + merged: DeepMerge_2946; +} + +type CK_2946 = `p29.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_46, Registry_29_46, CK_2946, EP_2946, EV_2946, DeepMerge_2946 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-47.ts new file mode 100644 index 00000000..927d2542 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-47.ts @@ -0,0 +1,50 @@ +// pkg-29/types-47 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2947 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2947 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_47 | null; children: Entity_29_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x2947: number; y2947: string; z2947: boolean }; +} + +type Path_2947 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2947}` }[keyof T & string] : never; +type EP_2947 = Path_2947; + +type Val_2947 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2947 } + : T[K] extends object ? { t: 'o'; props: Val_2947 } + : { t: 'u' }; +}; +type EV_2947 = Val_2947; + +interface Registry_29_47 { + entities: Map; + validators: EV_2947; + paths: Set; + merged: DeepMerge_2947; +} + +type CK_2947 = `p29.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_47, Registry_29_47, CK_2947, EP_2947, EV_2947, DeepMerge_2947 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-48.ts new file mode 100644 index 00000000..e4e6c783 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-48.ts @@ -0,0 +1,50 @@ +// pkg-29/types-48 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2948 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2948 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_48 | null; children: Entity_29_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x2948: number; y2948: string; z2948: boolean }; +} + +type Path_2948 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2948}` }[keyof T & string] : never; +type EP_2948 = Path_2948; + +type Val_2948 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2948 } + : T[K] extends object ? { t: 'o'; props: Val_2948 } + : { t: 'u' }; +}; +type EV_2948 = Val_2948; + +interface Registry_29_48 { + entities: Map; + validators: EV_2948; + paths: Set; + merged: DeepMerge_2948; +} + +type CK_2948 = `p29.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_48, Registry_29_48, CK_2948, EP_2948, EV_2948, DeepMerge_2948 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-49.ts new file mode 100644 index 00000000..bcce3728 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-49.ts @@ -0,0 +1,50 @@ +// pkg-29/types-49 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2949 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2949 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_49 | null; children: Entity_29_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x2949: number; y2949: string; z2949: boolean }; +} + +type Path_2949 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2949}` }[keyof T & string] : never; +type EP_2949 = Path_2949; + +type Val_2949 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2949 } + : T[K] extends object ? { t: 'o'; props: Val_2949 } + : { t: 'u' }; +}; +type EV_2949 = Val_2949; + +interface Registry_29_49 { + entities: Map; + validators: EV_2949; + paths: Set; + merged: DeepMerge_2949; +} + +type CK_2949 = `p29.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_49, Registry_29_49, CK_2949, EP_2949, EV_2949, DeepMerge_2949 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-29/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-29/types-50.ts new file mode 100644 index 00000000..f04b5463 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-29/types-50.ts @@ -0,0 +1,50 @@ +// pkg-29/types-50 - heavy interconnected types + +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; +import type { Entity_26_01, Registry_26_01 } from '../pkg-26/types-01'; +import type { Entity_26_10, Registry_26_10 } from '../pkg-26/types-10'; +import type { Entity_26_20, Registry_26_20 } from '../pkg-26/types-20'; + +type DeepMerge_2950 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_2950 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_29_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_29_50 | null; children: Entity_29_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x2950: number; y2950: string; z2950: boolean }; +} + +type Path_2950 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_2950}` }[keyof T & string] : never; +type EP_2950 = Path_2950; + +type Val_2950 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_2950 } + : T[K] extends object ? { t: 'o'; props: Val_2950 } + : { t: 'u' }; +}; +type EV_2950 = Val_2950; + +interface Registry_29_50 { + entities: Map; + validators: EV_2950; + paths: Set; + merged: DeepMerge_2950; +} + +type CK_2950 = `p29.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_29_50, Registry_29_50, CK_2950, EP_2950, EV_2950, DeepMerge_2950 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-30/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-01.ts new file mode 100644 index 00000000..00a26b6a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-01.ts @@ -0,0 +1,50 @@ +// pkg-30/types-01 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3001 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3001 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_01 | null; children: Entity_30_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3001: number; y3001: string; z3001: boolean }; +} + +type Path_3001 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3001}` }[keyof T & string] : never; +type EP_3001 = Path_3001; + +type Val_3001 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3001 } + : T[K] extends object ? { t: 'o'; props: Val_3001 } + : { t: 'u' }; +}; +type EV_3001 = Val_3001; + +interface Registry_30_01 { + entities: Map; + validators: EV_3001; + paths: Set; + merged: DeepMerge_3001; +} + +type CK_3001 = `p30.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_01, Registry_30_01, CK_3001, EP_3001, EV_3001, DeepMerge_3001 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-02.ts new file mode 100644 index 00000000..019fb9b4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-02.ts @@ -0,0 +1,50 @@ +// pkg-30/types-02 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3002 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3002 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_02 | null; children: Entity_30_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3002: number; y3002: string; z3002: boolean }; +} + +type Path_3002 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3002}` }[keyof T & string] : never; +type EP_3002 = Path_3002; + +type Val_3002 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3002 } + : T[K] extends object ? { t: 'o'; props: Val_3002 } + : { t: 'u' }; +}; +type EV_3002 = Val_3002; + +interface Registry_30_02 { + entities: Map; + validators: EV_3002; + paths: Set; + merged: DeepMerge_3002; +} + +type CK_3002 = `p30.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_02, Registry_30_02, CK_3002, EP_3002, EV_3002, DeepMerge_3002 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-03.ts new file mode 100644 index 00000000..7793ccd1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-03.ts @@ -0,0 +1,50 @@ +// pkg-30/types-03 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3003 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3003 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_03 | null; children: Entity_30_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3003: number; y3003: string; z3003: boolean }; +} + +type Path_3003 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3003}` }[keyof T & string] : never; +type EP_3003 = Path_3003; + +type Val_3003 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3003 } + : T[K] extends object ? { t: 'o'; props: Val_3003 } + : { t: 'u' }; +}; +type EV_3003 = Val_3003; + +interface Registry_30_03 { + entities: Map; + validators: EV_3003; + paths: Set; + merged: DeepMerge_3003; +} + +type CK_3003 = `p30.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_03, Registry_30_03, CK_3003, EP_3003, EV_3003, DeepMerge_3003 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-04.ts new file mode 100644 index 00000000..01243c52 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-04.ts @@ -0,0 +1,50 @@ +// pkg-30/types-04 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3004 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3004 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_04 | null; children: Entity_30_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3004: number; y3004: string; z3004: boolean }; +} + +type Path_3004 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3004}` }[keyof T & string] : never; +type EP_3004 = Path_3004; + +type Val_3004 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3004 } + : T[K] extends object ? { t: 'o'; props: Val_3004 } + : { t: 'u' }; +}; +type EV_3004 = Val_3004; + +interface Registry_30_04 { + entities: Map; + validators: EV_3004; + paths: Set; + merged: DeepMerge_3004; +} + +type CK_3004 = `p30.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_04, Registry_30_04, CK_3004, EP_3004, EV_3004, DeepMerge_3004 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-05.ts new file mode 100644 index 00000000..8b16cdb9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-05.ts @@ -0,0 +1,50 @@ +// pkg-30/types-05 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3005 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3005 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_05 | null; children: Entity_30_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3005: number; y3005: string; z3005: boolean }; +} + +type Path_3005 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3005}` }[keyof T & string] : never; +type EP_3005 = Path_3005; + +type Val_3005 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3005 } + : T[K] extends object ? { t: 'o'; props: Val_3005 } + : { t: 'u' }; +}; +type EV_3005 = Val_3005; + +interface Registry_30_05 { + entities: Map; + validators: EV_3005; + paths: Set; + merged: DeepMerge_3005; +} + +type CK_3005 = `p30.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_05, Registry_30_05, CK_3005, EP_3005, EV_3005, DeepMerge_3005 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-06.ts new file mode 100644 index 00000000..74603e86 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-06.ts @@ -0,0 +1,50 @@ +// pkg-30/types-06 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3006 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3006 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_06 | null; children: Entity_30_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3006: number; y3006: string; z3006: boolean }; +} + +type Path_3006 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3006}` }[keyof T & string] : never; +type EP_3006 = Path_3006; + +type Val_3006 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3006 } + : T[K] extends object ? { t: 'o'; props: Val_3006 } + : { t: 'u' }; +}; +type EV_3006 = Val_3006; + +interface Registry_30_06 { + entities: Map; + validators: EV_3006; + paths: Set; + merged: DeepMerge_3006; +} + +type CK_3006 = `p30.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_06, Registry_30_06, CK_3006, EP_3006, EV_3006, DeepMerge_3006 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-07.ts new file mode 100644 index 00000000..59bf53e6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-07.ts @@ -0,0 +1,50 @@ +// pkg-30/types-07 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3007 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3007 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_07 | null; children: Entity_30_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3007: number; y3007: string; z3007: boolean }; +} + +type Path_3007 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3007}` }[keyof T & string] : never; +type EP_3007 = Path_3007; + +type Val_3007 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3007 } + : T[K] extends object ? { t: 'o'; props: Val_3007 } + : { t: 'u' }; +}; +type EV_3007 = Val_3007; + +interface Registry_30_07 { + entities: Map; + validators: EV_3007; + paths: Set; + merged: DeepMerge_3007; +} + +type CK_3007 = `p30.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_07, Registry_30_07, CK_3007, EP_3007, EV_3007, DeepMerge_3007 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-08.ts new file mode 100644 index 00000000..0dbf6e2c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-08.ts @@ -0,0 +1,50 @@ +// pkg-30/types-08 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3008 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3008 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_08 | null; children: Entity_30_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3008: number; y3008: string; z3008: boolean }; +} + +type Path_3008 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3008}` }[keyof T & string] : never; +type EP_3008 = Path_3008; + +type Val_3008 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3008 } + : T[K] extends object ? { t: 'o'; props: Val_3008 } + : { t: 'u' }; +}; +type EV_3008 = Val_3008; + +interface Registry_30_08 { + entities: Map; + validators: EV_3008; + paths: Set; + merged: DeepMerge_3008; +} + +type CK_3008 = `p30.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_08, Registry_30_08, CK_3008, EP_3008, EV_3008, DeepMerge_3008 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-09.ts new file mode 100644 index 00000000..feebdea7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-09.ts @@ -0,0 +1,50 @@ +// pkg-30/types-09 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3009 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3009 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_09 | null; children: Entity_30_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3009: number; y3009: string; z3009: boolean }; +} + +type Path_3009 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3009}` }[keyof T & string] : never; +type EP_3009 = Path_3009; + +type Val_3009 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3009 } + : T[K] extends object ? { t: 'o'; props: Val_3009 } + : { t: 'u' }; +}; +type EV_3009 = Val_3009; + +interface Registry_30_09 { + entities: Map; + validators: EV_3009; + paths: Set; + merged: DeepMerge_3009; +} + +type CK_3009 = `p30.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_09, Registry_30_09, CK_3009, EP_3009, EV_3009, DeepMerge_3009 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-10.ts new file mode 100644 index 00000000..411ec2fc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-10.ts @@ -0,0 +1,50 @@ +// pkg-30/types-10 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3010 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3010 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_10 | null; children: Entity_30_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3010: number; y3010: string; z3010: boolean }; +} + +type Path_3010 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3010}` }[keyof T & string] : never; +type EP_3010 = Path_3010; + +type Val_3010 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3010 } + : T[K] extends object ? { t: 'o'; props: Val_3010 } + : { t: 'u' }; +}; +type EV_3010 = Val_3010; + +interface Registry_30_10 { + entities: Map; + validators: EV_3010; + paths: Set; + merged: DeepMerge_3010; +} + +type CK_3010 = `p30.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_10, Registry_30_10, CK_3010, EP_3010, EV_3010, DeepMerge_3010 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-11.ts new file mode 100644 index 00000000..3f8a45a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-11.ts @@ -0,0 +1,50 @@ +// pkg-30/types-11 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3011 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3011 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_11 | null; children: Entity_30_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3011: number; y3011: string; z3011: boolean }; +} + +type Path_3011 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3011}` }[keyof T & string] : never; +type EP_3011 = Path_3011; + +type Val_3011 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3011 } + : T[K] extends object ? { t: 'o'; props: Val_3011 } + : { t: 'u' }; +}; +type EV_3011 = Val_3011; + +interface Registry_30_11 { + entities: Map; + validators: EV_3011; + paths: Set; + merged: DeepMerge_3011; +} + +type CK_3011 = `p30.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_11, Registry_30_11, CK_3011, EP_3011, EV_3011, DeepMerge_3011 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-12.ts new file mode 100644 index 00000000..9cc69734 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-12.ts @@ -0,0 +1,50 @@ +// pkg-30/types-12 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3012 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3012 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_12 | null; children: Entity_30_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3012: number; y3012: string; z3012: boolean }; +} + +type Path_3012 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3012}` }[keyof T & string] : never; +type EP_3012 = Path_3012; + +type Val_3012 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3012 } + : T[K] extends object ? { t: 'o'; props: Val_3012 } + : { t: 'u' }; +}; +type EV_3012 = Val_3012; + +interface Registry_30_12 { + entities: Map; + validators: EV_3012; + paths: Set; + merged: DeepMerge_3012; +} + +type CK_3012 = `p30.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_12, Registry_30_12, CK_3012, EP_3012, EV_3012, DeepMerge_3012 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-13.ts new file mode 100644 index 00000000..7b2fade7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-13.ts @@ -0,0 +1,50 @@ +// pkg-30/types-13 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3013 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3013 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_13 | null; children: Entity_30_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3013: number; y3013: string; z3013: boolean }; +} + +type Path_3013 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3013}` }[keyof T & string] : never; +type EP_3013 = Path_3013; + +type Val_3013 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3013 } + : T[K] extends object ? { t: 'o'; props: Val_3013 } + : { t: 'u' }; +}; +type EV_3013 = Val_3013; + +interface Registry_30_13 { + entities: Map; + validators: EV_3013; + paths: Set; + merged: DeepMerge_3013; +} + +type CK_3013 = `p30.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_13, Registry_30_13, CK_3013, EP_3013, EV_3013, DeepMerge_3013 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-14.ts new file mode 100644 index 00000000..e19cadb7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-14.ts @@ -0,0 +1,50 @@ +// pkg-30/types-14 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3014 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3014 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_14 | null; children: Entity_30_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3014: number; y3014: string; z3014: boolean }; +} + +type Path_3014 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3014}` }[keyof T & string] : never; +type EP_3014 = Path_3014; + +type Val_3014 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3014 } + : T[K] extends object ? { t: 'o'; props: Val_3014 } + : { t: 'u' }; +}; +type EV_3014 = Val_3014; + +interface Registry_30_14 { + entities: Map; + validators: EV_3014; + paths: Set; + merged: DeepMerge_3014; +} + +type CK_3014 = `p30.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_14, Registry_30_14, CK_3014, EP_3014, EV_3014, DeepMerge_3014 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-15.ts new file mode 100644 index 00000000..834e3302 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-15.ts @@ -0,0 +1,50 @@ +// pkg-30/types-15 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3015 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3015 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_15 | null; children: Entity_30_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3015: number; y3015: string; z3015: boolean }; +} + +type Path_3015 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3015}` }[keyof T & string] : never; +type EP_3015 = Path_3015; + +type Val_3015 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3015 } + : T[K] extends object ? { t: 'o'; props: Val_3015 } + : { t: 'u' }; +}; +type EV_3015 = Val_3015; + +interface Registry_30_15 { + entities: Map; + validators: EV_3015; + paths: Set; + merged: DeepMerge_3015; +} + +type CK_3015 = `p30.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_15, Registry_30_15, CK_3015, EP_3015, EV_3015, DeepMerge_3015 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-16.ts new file mode 100644 index 00000000..a21af2fc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-16.ts @@ -0,0 +1,50 @@ +// pkg-30/types-16 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3016 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3016 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_16 | null; children: Entity_30_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3016: number; y3016: string; z3016: boolean }; +} + +type Path_3016 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3016}` }[keyof T & string] : never; +type EP_3016 = Path_3016; + +type Val_3016 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3016 } + : T[K] extends object ? { t: 'o'; props: Val_3016 } + : { t: 'u' }; +}; +type EV_3016 = Val_3016; + +interface Registry_30_16 { + entities: Map; + validators: EV_3016; + paths: Set; + merged: DeepMerge_3016; +} + +type CK_3016 = `p30.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_16, Registry_30_16, CK_3016, EP_3016, EV_3016, DeepMerge_3016 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-17.ts new file mode 100644 index 00000000..504095a2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-17.ts @@ -0,0 +1,50 @@ +// pkg-30/types-17 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3017 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3017 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_17 | null; children: Entity_30_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3017: number; y3017: string; z3017: boolean }; +} + +type Path_3017 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3017}` }[keyof T & string] : never; +type EP_3017 = Path_3017; + +type Val_3017 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3017 } + : T[K] extends object ? { t: 'o'; props: Val_3017 } + : { t: 'u' }; +}; +type EV_3017 = Val_3017; + +interface Registry_30_17 { + entities: Map; + validators: EV_3017; + paths: Set; + merged: DeepMerge_3017; +} + +type CK_3017 = `p30.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_17, Registry_30_17, CK_3017, EP_3017, EV_3017, DeepMerge_3017 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-18.ts new file mode 100644 index 00000000..33a4805a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-18.ts @@ -0,0 +1,50 @@ +// pkg-30/types-18 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3018 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3018 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_18 | null; children: Entity_30_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3018: number; y3018: string; z3018: boolean }; +} + +type Path_3018 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3018}` }[keyof T & string] : never; +type EP_3018 = Path_3018; + +type Val_3018 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3018 } + : T[K] extends object ? { t: 'o'; props: Val_3018 } + : { t: 'u' }; +}; +type EV_3018 = Val_3018; + +interface Registry_30_18 { + entities: Map; + validators: EV_3018; + paths: Set; + merged: DeepMerge_3018; +} + +type CK_3018 = `p30.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_18, Registry_30_18, CK_3018, EP_3018, EV_3018, DeepMerge_3018 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-19.ts new file mode 100644 index 00000000..0101dda3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-19.ts @@ -0,0 +1,50 @@ +// pkg-30/types-19 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3019 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3019 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_19 | null; children: Entity_30_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3019: number; y3019: string; z3019: boolean }; +} + +type Path_3019 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3019}` }[keyof T & string] : never; +type EP_3019 = Path_3019; + +type Val_3019 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3019 } + : T[K] extends object ? { t: 'o'; props: Val_3019 } + : { t: 'u' }; +}; +type EV_3019 = Val_3019; + +interface Registry_30_19 { + entities: Map; + validators: EV_3019; + paths: Set; + merged: DeepMerge_3019; +} + +type CK_3019 = `p30.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_19, Registry_30_19, CK_3019, EP_3019, EV_3019, DeepMerge_3019 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-20.ts new file mode 100644 index 00000000..cc579cb3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-20.ts @@ -0,0 +1,50 @@ +// pkg-30/types-20 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3020 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3020 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_20 | null; children: Entity_30_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3020: number; y3020: string; z3020: boolean }; +} + +type Path_3020 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3020}` }[keyof T & string] : never; +type EP_3020 = Path_3020; + +type Val_3020 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3020 } + : T[K] extends object ? { t: 'o'; props: Val_3020 } + : { t: 'u' }; +}; +type EV_3020 = Val_3020; + +interface Registry_30_20 { + entities: Map; + validators: EV_3020; + paths: Set; + merged: DeepMerge_3020; +} + +type CK_3020 = `p30.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_20, Registry_30_20, CK_3020, EP_3020, EV_3020, DeepMerge_3020 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-21.ts new file mode 100644 index 00000000..e7a2c13b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-21.ts @@ -0,0 +1,50 @@ +// pkg-30/types-21 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3021 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3021 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_21 | null; children: Entity_30_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3021: number; y3021: string; z3021: boolean }; +} + +type Path_3021 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3021}` }[keyof T & string] : never; +type EP_3021 = Path_3021; + +type Val_3021 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3021 } + : T[K] extends object ? { t: 'o'; props: Val_3021 } + : { t: 'u' }; +}; +type EV_3021 = Val_3021; + +interface Registry_30_21 { + entities: Map; + validators: EV_3021; + paths: Set; + merged: DeepMerge_3021; +} + +type CK_3021 = `p30.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_21, Registry_30_21, CK_3021, EP_3021, EV_3021, DeepMerge_3021 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-22.ts new file mode 100644 index 00000000..f472bf7c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-22.ts @@ -0,0 +1,50 @@ +// pkg-30/types-22 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3022 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3022 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_22 | null; children: Entity_30_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3022: number; y3022: string; z3022: boolean }; +} + +type Path_3022 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3022}` }[keyof T & string] : never; +type EP_3022 = Path_3022; + +type Val_3022 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3022 } + : T[K] extends object ? { t: 'o'; props: Val_3022 } + : { t: 'u' }; +}; +type EV_3022 = Val_3022; + +interface Registry_30_22 { + entities: Map; + validators: EV_3022; + paths: Set; + merged: DeepMerge_3022; +} + +type CK_3022 = `p30.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_22, Registry_30_22, CK_3022, EP_3022, EV_3022, DeepMerge_3022 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-23.ts new file mode 100644 index 00000000..2f361ab3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-23.ts @@ -0,0 +1,50 @@ +// pkg-30/types-23 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3023 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3023 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_23 | null; children: Entity_30_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3023: number; y3023: string; z3023: boolean }; +} + +type Path_3023 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3023}` }[keyof T & string] : never; +type EP_3023 = Path_3023; + +type Val_3023 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3023 } + : T[K] extends object ? { t: 'o'; props: Val_3023 } + : { t: 'u' }; +}; +type EV_3023 = Val_3023; + +interface Registry_30_23 { + entities: Map; + validators: EV_3023; + paths: Set; + merged: DeepMerge_3023; +} + +type CK_3023 = `p30.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_23, Registry_30_23, CK_3023, EP_3023, EV_3023, DeepMerge_3023 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-24.ts new file mode 100644 index 00000000..85ca60d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-24.ts @@ -0,0 +1,50 @@ +// pkg-30/types-24 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3024 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3024 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_24 | null; children: Entity_30_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3024: number; y3024: string; z3024: boolean }; +} + +type Path_3024 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3024}` }[keyof T & string] : never; +type EP_3024 = Path_3024; + +type Val_3024 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3024 } + : T[K] extends object ? { t: 'o'; props: Val_3024 } + : { t: 'u' }; +}; +type EV_3024 = Val_3024; + +interface Registry_30_24 { + entities: Map; + validators: EV_3024; + paths: Set; + merged: DeepMerge_3024; +} + +type CK_3024 = `p30.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_24, Registry_30_24, CK_3024, EP_3024, EV_3024, DeepMerge_3024 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-25.ts new file mode 100644 index 00000000..89903d76 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-25.ts @@ -0,0 +1,50 @@ +// pkg-30/types-25 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3025 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3025 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_25 | null; children: Entity_30_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3025: number; y3025: string; z3025: boolean }; +} + +type Path_3025 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3025}` }[keyof T & string] : never; +type EP_3025 = Path_3025; + +type Val_3025 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3025 } + : T[K] extends object ? { t: 'o'; props: Val_3025 } + : { t: 'u' }; +}; +type EV_3025 = Val_3025; + +interface Registry_30_25 { + entities: Map; + validators: EV_3025; + paths: Set; + merged: DeepMerge_3025; +} + +type CK_3025 = `p30.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_25, Registry_30_25, CK_3025, EP_3025, EV_3025, DeepMerge_3025 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-26.ts new file mode 100644 index 00000000..45ad0b51 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-26.ts @@ -0,0 +1,50 @@ +// pkg-30/types-26 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3026 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3026 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_26 | null; children: Entity_30_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3026: number; y3026: string; z3026: boolean }; +} + +type Path_3026 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3026}` }[keyof T & string] : never; +type EP_3026 = Path_3026; + +type Val_3026 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3026 } + : T[K] extends object ? { t: 'o'; props: Val_3026 } + : { t: 'u' }; +}; +type EV_3026 = Val_3026; + +interface Registry_30_26 { + entities: Map; + validators: EV_3026; + paths: Set; + merged: DeepMerge_3026; +} + +type CK_3026 = `p30.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_26, Registry_30_26, CK_3026, EP_3026, EV_3026, DeepMerge_3026 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-27.ts new file mode 100644 index 00000000..1ca1b970 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-27.ts @@ -0,0 +1,50 @@ +// pkg-30/types-27 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3027 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3027 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_27 | null; children: Entity_30_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3027: number; y3027: string; z3027: boolean }; +} + +type Path_3027 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3027}` }[keyof T & string] : never; +type EP_3027 = Path_3027; + +type Val_3027 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3027 } + : T[K] extends object ? { t: 'o'; props: Val_3027 } + : { t: 'u' }; +}; +type EV_3027 = Val_3027; + +interface Registry_30_27 { + entities: Map; + validators: EV_3027; + paths: Set; + merged: DeepMerge_3027; +} + +type CK_3027 = `p30.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_27, Registry_30_27, CK_3027, EP_3027, EV_3027, DeepMerge_3027 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-28.ts new file mode 100644 index 00000000..b014e901 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-28.ts @@ -0,0 +1,50 @@ +// pkg-30/types-28 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3028 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3028 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_28 | null; children: Entity_30_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3028: number; y3028: string; z3028: boolean }; +} + +type Path_3028 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3028}` }[keyof T & string] : never; +type EP_3028 = Path_3028; + +type Val_3028 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3028 } + : T[K] extends object ? { t: 'o'; props: Val_3028 } + : { t: 'u' }; +}; +type EV_3028 = Val_3028; + +interface Registry_30_28 { + entities: Map; + validators: EV_3028; + paths: Set; + merged: DeepMerge_3028; +} + +type CK_3028 = `p30.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_28, Registry_30_28, CK_3028, EP_3028, EV_3028, DeepMerge_3028 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-29.ts new file mode 100644 index 00000000..79095b52 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-29.ts @@ -0,0 +1,50 @@ +// pkg-30/types-29 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3029 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3029 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_29 | null; children: Entity_30_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3029: number; y3029: string; z3029: boolean }; +} + +type Path_3029 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3029}` }[keyof T & string] : never; +type EP_3029 = Path_3029; + +type Val_3029 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3029 } + : T[K] extends object ? { t: 'o'; props: Val_3029 } + : { t: 'u' }; +}; +type EV_3029 = Val_3029; + +interface Registry_30_29 { + entities: Map; + validators: EV_3029; + paths: Set; + merged: DeepMerge_3029; +} + +type CK_3029 = `p30.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_29, Registry_30_29, CK_3029, EP_3029, EV_3029, DeepMerge_3029 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-30.ts new file mode 100644 index 00000000..40af24fc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-30.ts @@ -0,0 +1,50 @@ +// pkg-30/types-30 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3030 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3030 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_30 | null; children: Entity_30_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3030: number; y3030: string; z3030: boolean }; +} + +type Path_3030 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3030}` }[keyof T & string] : never; +type EP_3030 = Path_3030; + +type Val_3030 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3030 } + : T[K] extends object ? { t: 'o'; props: Val_3030 } + : { t: 'u' }; +}; +type EV_3030 = Val_3030; + +interface Registry_30_30 { + entities: Map; + validators: EV_3030; + paths: Set; + merged: DeepMerge_3030; +} + +type CK_3030 = `p30.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_30, Registry_30_30, CK_3030, EP_3030, EV_3030, DeepMerge_3030 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-31.ts new file mode 100644 index 00000000..0bb2dd2a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-31.ts @@ -0,0 +1,50 @@ +// pkg-30/types-31 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3031 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3031 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_31 | null; children: Entity_30_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3031: number; y3031: string; z3031: boolean }; +} + +type Path_3031 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3031}` }[keyof T & string] : never; +type EP_3031 = Path_3031; + +type Val_3031 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3031 } + : T[K] extends object ? { t: 'o'; props: Val_3031 } + : { t: 'u' }; +}; +type EV_3031 = Val_3031; + +interface Registry_30_31 { + entities: Map; + validators: EV_3031; + paths: Set; + merged: DeepMerge_3031; +} + +type CK_3031 = `p30.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_31, Registry_30_31, CK_3031, EP_3031, EV_3031, DeepMerge_3031 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-32.ts new file mode 100644 index 00000000..290317ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-32.ts @@ -0,0 +1,50 @@ +// pkg-30/types-32 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3032 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3032 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_32 | null; children: Entity_30_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3032: number; y3032: string; z3032: boolean }; +} + +type Path_3032 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3032}` }[keyof T & string] : never; +type EP_3032 = Path_3032; + +type Val_3032 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3032 } + : T[K] extends object ? { t: 'o'; props: Val_3032 } + : { t: 'u' }; +}; +type EV_3032 = Val_3032; + +interface Registry_30_32 { + entities: Map; + validators: EV_3032; + paths: Set; + merged: DeepMerge_3032; +} + +type CK_3032 = `p30.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_32, Registry_30_32, CK_3032, EP_3032, EV_3032, DeepMerge_3032 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-33.ts new file mode 100644 index 00000000..554c13ea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-33.ts @@ -0,0 +1,50 @@ +// pkg-30/types-33 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3033 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3033 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_33 | null; children: Entity_30_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3033: number; y3033: string; z3033: boolean }; +} + +type Path_3033 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3033}` }[keyof T & string] : never; +type EP_3033 = Path_3033; + +type Val_3033 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3033 } + : T[K] extends object ? { t: 'o'; props: Val_3033 } + : { t: 'u' }; +}; +type EV_3033 = Val_3033; + +interface Registry_30_33 { + entities: Map; + validators: EV_3033; + paths: Set; + merged: DeepMerge_3033; +} + +type CK_3033 = `p30.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_33, Registry_30_33, CK_3033, EP_3033, EV_3033, DeepMerge_3033 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-34.ts new file mode 100644 index 00000000..8327a50a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-34.ts @@ -0,0 +1,50 @@ +// pkg-30/types-34 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3034 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3034 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_34 | null; children: Entity_30_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3034: number; y3034: string; z3034: boolean }; +} + +type Path_3034 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3034}` }[keyof T & string] : never; +type EP_3034 = Path_3034; + +type Val_3034 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3034 } + : T[K] extends object ? { t: 'o'; props: Val_3034 } + : { t: 'u' }; +}; +type EV_3034 = Val_3034; + +interface Registry_30_34 { + entities: Map; + validators: EV_3034; + paths: Set; + merged: DeepMerge_3034; +} + +type CK_3034 = `p30.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_34, Registry_30_34, CK_3034, EP_3034, EV_3034, DeepMerge_3034 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-35.ts new file mode 100644 index 00000000..c8100945 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-35.ts @@ -0,0 +1,50 @@ +// pkg-30/types-35 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3035 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3035 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_35 | null; children: Entity_30_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3035: number; y3035: string; z3035: boolean }; +} + +type Path_3035 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3035}` }[keyof T & string] : never; +type EP_3035 = Path_3035; + +type Val_3035 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3035 } + : T[K] extends object ? { t: 'o'; props: Val_3035 } + : { t: 'u' }; +}; +type EV_3035 = Val_3035; + +interface Registry_30_35 { + entities: Map; + validators: EV_3035; + paths: Set; + merged: DeepMerge_3035; +} + +type CK_3035 = `p30.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_35, Registry_30_35, CK_3035, EP_3035, EV_3035, DeepMerge_3035 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-36.ts new file mode 100644 index 00000000..b6b06c27 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-36.ts @@ -0,0 +1,50 @@ +// pkg-30/types-36 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3036 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3036 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_36 | null; children: Entity_30_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3036: number; y3036: string; z3036: boolean }; +} + +type Path_3036 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3036}` }[keyof T & string] : never; +type EP_3036 = Path_3036; + +type Val_3036 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3036 } + : T[K] extends object ? { t: 'o'; props: Val_3036 } + : { t: 'u' }; +}; +type EV_3036 = Val_3036; + +interface Registry_30_36 { + entities: Map; + validators: EV_3036; + paths: Set; + merged: DeepMerge_3036; +} + +type CK_3036 = `p30.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_36, Registry_30_36, CK_3036, EP_3036, EV_3036, DeepMerge_3036 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-37.ts new file mode 100644 index 00000000..a2c7b327 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-37.ts @@ -0,0 +1,50 @@ +// pkg-30/types-37 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3037 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3037 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_37 | null; children: Entity_30_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3037: number; y3037: string; z3037: boolean }; +} + +type Path_3037 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3037}` }[keyof T & string] : never; +type EP_3037 = Path_3037; + +type Val_3037 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3037 } + : T[K] extends object ? { t: 'o'; props: Val_3037 } + : { t: 'u' }; +}; +type EV_3037 = Val_3037; + +interface Registry_30_37 { + entities: Map; + validators: EV_3037; + paths: Set; + merged: DeepMerge_3037; +} + +type CK_3037 = `p30.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_37, Registry_30_37, CK_3037, EP_3037, EV_3037, DeepMerge_3037 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-38.ts new file mode 100644 index 00000000..0c3f6fc8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-38.ts @@ -0,0 +1,50 @@ +// pkg-30/types-38 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3038 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3038 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_38 | null; children: Entity_30_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3038: number; y3038: string; z3038: boolean }; +} + +type Path_3038 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3038}` }[keyof T & string] : never; +type EP_3038 = Path_3038; + +type Val_3038 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3038 } + : T[K] extends object ? { t: 'o'; props: Val_3038 } + : { t: 'u' }; +}; +type EV_3038 = Val_3038; + +interface Registry_30_38 { + entities: Map; + validators: EV_3038; + paths: Set; + merged: DeepMerge_3038; +} + +type CK_3038 = `p30.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_38, Registry_30_38, CK_3038, EP_3038, EV_3038, DeepMerge_3038 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-39.ts new file mode 100644 index 00000000..a41ee477 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-39.ts @@ -0,0 +1,50 @@ +// pkg-30/types-39 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3039 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3039 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_39 | null; children: Entity_30_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3039: number; y3039: string; z3039: boolean }; +} + +type Path_3039 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3039}` }[keyof T & string] : never; +type EP_3039 = Path_3039; + +type Val_3039 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3039 } + : T[K] extends object ? { t: 'o'; props: Val_3039 } + : { t: 'u' }; +}; +type EV_3039 = Val_3039; + +interface Registry_30_39 { + entities: Map; + validators: EV_3039; + paths: Set; + merged: DeepMerge_3039; +} + +type CK_3039 = `p30.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_39, Registry_30_39, CK_3039, EP_3039, EV_3039, DeepMerge_3039 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-40.ts new file mode 100644 index 00000000..3f9c86a6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-40.ts @@ -0,0 +1,50 @@ +// pkg-30/types-40 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3040 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3040 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_40 | null; children: Entity_30_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3040: number; y3040: string; z3040: boolean }; +} + +type Path_3040 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3040}` }[keyof T & string] : never; +type EP_3040 = Path_3040; + +type Val_3040 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3040 } + : T[K] extends object ? { t: 'o'; props: Val_3040 } + : { t: 'u' }; +}; +type EV_3040 = Val_3040; + +interface Registry_30_40 { + entities: Map; + validators: EV_3040; + paths: Set; + merged: DeepMerge_3040; +} + +type CK_3040 = `p30.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_40, Registry_30_40, CK_3040, EP_3040, EV_3040, DeepMerge_3040 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-41.ts new file mode 100644 index 00000000..8826d0fe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-41.ts @@ -0,0 +1,50 @@ +// pkg-30/types-41 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3041 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3041 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_41 | null; children: Entity_30_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3041: number; y3041: string; z3041: boolean }; +} + +type Path_3041 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3041}` }[keyof T & string] : never; +type EP_3041 = Path_3041; + +type Val_3041 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3041 } + : T[K] extends object ? { t: 'o'; props: Val_3041 } + : { t: 'u' }; +}; +type EV_3041 = Val_3041; + +interface Registry_30_41 { + entities: Map; + validators: EV_3041; + paths: Set; + merged: DeepMerge_3041; +} + +type CK_3041 = `p30.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_41, Registry_30_41, CK_3041, EP_3041, EV_3041, DeepMerge_3041 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-42.ts new file mode 100644 index 00000000..53b7d3c5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-42.ts @@ -0,0 +1,50 @@ +// pkg-30/types-42 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3042 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3042 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_42 | null; children: Entity_30_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3042: number; y3042: string; z3042: boolean }; +} + +type Path_3042 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3042}` }[keyof T & string] : never; +type EP_3042 = Path_3042; + +type Val_3042 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3042 } + : T[K] extends object ? { t: 'o'; props: Val_3042 } + : { t: 'u' }; +}; +type EV_3042 = Val_3042; + +interface Registry_30_42 { + entities: Map; + validators: EV_3042; + paths: Set; + merged: DeepMerge_3042; +} + +type CK_3042 = `p30.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_42, Registry_30_42, CK_3042, EP_3042, EV_3042, DeepMerge_3042 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-43.ts new file mode 100644 index 00000000..f2892574 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-43.ts @@ -0,0 +1,50 @@ +// pkg-30/types-43 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3043 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3043 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_43 | null; children: Entity_30_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3043: number; y3043: string; z3043: boolean }; +} + +type Path_3043 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3043}` }[keyof T & string] : never; +type EP_3043 = Path_3043; + +type Val_3043 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3043 } + : T[K] extends object ? { t: 'o'; props: Val_3043 } + : { t: 'u' }; +}; +type EV_3043 = Val_3043; + +interface Registry_30_43 { + entities: Map; + validators: EV_3043; + paths: Set; + merged: DeepMerge_3043; +} + +type CK_3043 = `p30.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_43, Registry_30_43, CK_3043, EP_3043, EV_3043, DeepMerge_3043 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-44.ts new file mode 100644 index 00000000..d97de737 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-44.ts @@ -0,0 +1,50 @@ +// pkg-30/types-44 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3044 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3044 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_44 | null; children: Entity_30_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3044: number; y3044: string; z3044: boolean }; +} + +type Path_3044 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3044}` }[keyof T & string] : never; +type EP_3044 = Path_3044; + +type Val_3044 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3044 } + : T[K] extends object ? { t: 'o'; props: Val_3044 } + : { t: 'u' }; +}; +type EV_3044 = Val_3044; + +interface Registry_30_44 { + entities: Map; + validators: EV_3044; + paths: Set; + merged: DeepMerge_3044; +} + +type CK_3044 = `p30.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_44, Registry_30_44, CK_3044, EP_3044, EV_3044, DeepMerge_3044 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-45.ts new file mode 100644 index 00000000..b75cefff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-45.ts @@ -0,0 +1,50 @@ +// pkg-30/types-45 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3045 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3045 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_45 | null; children: Entity_30_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3045: number; y3045: string; z3045: boolean }; +} + +type Path_3045 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3045}` }[keyof T & string] : never; +type EP_3045 = Path_3045; + +type Val_3045 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3045 } + : T[K] extends object ? { t: 'o'; props: Val_3045 } + : { t: 'u' }; +}; +type EV_3045 = Val_3045; + +interface Registry_30_45 { + entities: Map; + validators: EV_3045; + paths: Set; + merged: DeepMerge_3045; +} + +type CK_3045 = `p30.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_45, Registry_30_45, CK_3045, EP_3045, EV_3045, DeepMerge_3045 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-46.ts new file mode 100644 index 00000000..ffbd4a40 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-46.ts @@ -0,0 +1,50 @@ +// pkg-30/types-46 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3046 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3046 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_46 | null; children: Entity_30_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3046: number; y3046: string; z3046: boolean }; +} + +type Path_3046 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3046}` }[keyof T & string] : never; +type EP_3046 = Path_3046; + +type Val_3046 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3046 } + : T[K] extends object ? { t: 'o'; props: Val_3046 } + : { t: 'u' }; +}; +type EV_3046 = Val_3046; + +interface Registry_30_46 { + entities: Map; + validators: EV_3046; + paths: Set; + merged: DeepMerge_3046; +} + +type CK_3046 = `p30.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_46, Registry_30_46, CK_3046, EP_3046, EV_3046, DeepMerge_3046 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-47.ts new file mode 100644 index 00000000..416c46bd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-47.ts @@ -0,0 +1,50 @@ +// pkg-30/types-47 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3047 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3047 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_47 | null; children: Entity_30_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3047: number; y3047: string; z3047: boolean }; +} + +type Path_3047 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3047}` }[keyof T & string] : never; +type EP_3047 = Path_3047; + +type Val_3047 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3047 } + : T[K] extends object ? { t: 'o'; props: Val_3047 } + : { t: 'u' }; +}; +type EV_3047 = Val_3047; + +interface Registry_30_47 { + entities: Map; + validators: EV_3047; + paths: Set; + merged: DeepMerge_3047; +} + +type CK_3047 = `p30.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_47, Registry_30_47, CK_3047, EP_3047, EV_3047, DeepMerge_3047 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-48.ts new file mode 100644 index 00000000..dea57e81 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-48.ts @@ -0,0 +1,50 @@ +// pkg-30/types-48 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3048 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3048 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_48 | null; children: Entity_30_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3048: number; y3048: string; z3048: boolean }; +} + +type Path_3048 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3048}` }[keyof T & string] : never; +type EP_3048 = Path_3048; + +type Val_3048 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3048 } + : T[K] extends object ? { t: 'o'; props: Val_3048 } + : { t: 'u' }; +}; +type EV_3048 = Val_3048; + +interface Registry_30_48 { + entities: Map; + validators: EV_3048; + paths: Set; + merged: DeepMerge_3048; +} + +type CK_3048 = `p30.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_48, Registry_30_48, CK_3048, EP_3048, EV_3048, DeepMerge_3048 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-49.ts new file mode 100644 index 00000000..fcb8741f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-49.ts @@ -0,0 +1,50 @@ +// pkg-30/types-49 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3049 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3049 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_49 | null; children: Entity_30_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3049: number; y3049: string; z3049: boolean }; +} + +type Path_3049 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3049}` }[keyof T & string] : never; +type EP_3049 = Path_3049; + +type Val_3049 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3049 } + : T[K] extends object ? { t: 'o'; props: Val_3049 } + : { t: 'u' }; +}; +type EV_3049 = Val_3049; + +interface Registry_30_49 { + entities: Map; + validators: EV_3049; + paths: Set; + merged: DeepMerge_3049; +} + +type CK_3049 = `p30.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_49, Registry_30_49, CK_3049, EP_3049, EV_3049, DeepMerge_3049 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-30/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-30/types-50.ts new file mode 100644 index 00000000..a8c5fc83 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-30/types-50.ts @@ -0,0 +1,50 @@ +// pkg-30/types-50 - heavy interconnected types + +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; +import type { Entity_27_01, Registry_27_01 } from '../pkg-27/types-01'; +import type { Entity_27_10, Registry_27_10 } from '../pkg-27/types-10'; +import type { Entity_27_20, Registry_27_20 } from '../pkg-27/types-20'; + +type DeepMerge_3050 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3050 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_30_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_30_50 | null; children: Entity_30_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3050: number; y3050: string; z3050: boolean }; +} + +type Path_3050 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3050}` }[keyof T & string] : never; +type EP_3050 = Path_3050; + +type Val_3050 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3050 } + : T[K] extends object ? { t: 'o'; props: Val_3050 } + : { t: 'u' }; +}; +type EV_3050 = Val_3050; + +interface Registry_30_50 { + entities: Map; + validators: EV_3050; + paths: Set; + merged: DeepMerge_3050; +} + +type CK_3050 = `p30.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_30_50, Registry_30_50, CK_3050, EP_3050, EV_3050, DeepMerge_3050 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-31/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-01.ts new file mode 100644 index 00000000..e87392c6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-01.ts @@ -0,0 +1,50 @@ +// pkg-31/types-01 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3101 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3101 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_01 | null; children: Entity_31_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3101: number; y3101: string; z3101: boolean }; +} + +type Path_3101 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3101}` }[keyof T & string] : never; +type EP_3101 = Path_3101; + +type Val_3101 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3101 } + : T[K] extends object ? { t: 'o'; props: Val_3101 } + : { t: 'u' }; +}; +type EV_3101 = Val_3101; + +interface Registry_31_01 { + entities: Map; + validators: EV_3101; + paths: Set; + merged: DeepMerge_3101; +} + +type CK_3101 = `p31.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_01, Registry_31_01, CK_3101, EP_3101, EV_3101, DeepMerge_3101 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-02.ts new file mode 100644 index 00000000..80a21c3f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-02.ts @@ -0,0 +1,50 @@ +// pkg-31/types-02 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3102 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3102 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_02 | null; children: Entity_31_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3102: number; y3102: string; z3102: boolean }; +} + +type Path_3102 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3102}` }[keyof T & string] : never; +type EP_3102 = Path_3102; + +type Val_3102 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3102 } + : T[K] extends object ? { t: 'o'; props: Val_3102 } + : { t: 'u' }; +}; +type EV_3102 = Val_3102; + +interface Registry_31_02 { + entities: Map; + validators: EV_3102; + paths: Set; + merged: DeepMerge_3102; +} + +type CK_3102 = `p31.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_02, Registry_31_02, CK_3102, EP_3102, EV_3102, DeepMerge_3102 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-03.ts new file mode 100644 index 00000000..bafcb5ad --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-03.ts @@ -0,0 +1,50 @@ +// pkg-31/types-03 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3103 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3103 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_03 | null; children: Entity_31_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3103: number; y3103: string; z3103: boolean }; +} + +type Path_3103 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3103}` }[keyof T & string] : never; +type EP_3103 = Path_3103; + +type Val_3103 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3103 } + : T[K] extends object ? { t: 'o'; props: Val_3103 } + : { t: 'u' }; +}; +type EV_3103 = Val_3103; + +interface Registry_31_03 { + entities: Map; + validators: EV_3103; + paths: Set; + merged: DeepMerge_3103; +} + +type CK_3103 = `p31.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_03, Registry_31_03, CK_3103, EP_3103, EV_3103, DeepMerge_3103 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-04.ts new file mode 100644 index 00000000..dca848d3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-04.ts @@ -0,0 +1,50 @@ +// pkg-31/types-04 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3104 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3104 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_04 | null; children: Entity_31_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3104: number; y3104: string; z3104: boolean }; +} + +type Path_3104 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3104}` }[keyof T & string] : never; +type EP_3104 = Path_3104; + +type Val_3104 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3104 } + : T[K] extends object ? { t: 'o'; props: Val_3104 } + : { t: 'u' }; +}; +type EV_3104 = Val_3104; + +interface Registry_31_04 { + entities: Map; + validators: EV_3104; + paths: Set; + merged: DeepMerge_3104; +} + +type CK_3104 = `p31.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_04, Registry_31_04, CK_3104, EP_3104, EV_3104, DeepMerge_3104 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-05.ts new file mode 100644 index 00000000..84c22e01 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-05.ts @@ -0,0 +1,50 @@ +// pkg-31/types-05 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3105 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3105 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_05 | null; children: Entity_31_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3105: number; y3105: string; z3105: boolean }; +} + +type Path_3105 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3105}` }[keyof T & string] : never; +type EP_3105 = Path_3105; + +type Val_3105 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3105 } + : T[K] extends object ? { t: 'o'; props: Val_3105 } + : { t: 'u' }; +}; +type EV_3105 = Val_3105; + +interface Registry_31_05 { + entities: Map; + validators: EV_3105; + paths: Set; + merged: DeepMerge_3105; +} + +type CK_3105 = `p31.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_05, Registry_31_05, CK_3105, EP_3105, EV_3105, DeepMerge_3105 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-06.ts new file mode 100644 index 00000000..7b8c9650 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-06.ts @@ -0,0 +1,50 @@ +// pkg-31/types-06 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3106 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3106 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_06 | null; children: Entity_31_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3106: number; y3106: string; z3106: boolean }; +} + +type Path_3106 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3106}` }[keyof T & string] : never; +type EP_3106 = Path_3106; + +type Val_3106 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3106 } + : T[K] extends object ? { t: 'o'; props: Val_3106 } + : { t: 'u' }; +}; +type EV_3106 = Val_3106; + +interface Registry_31_06 { + entities: Map; + validators: EV_3106; + paths: Set; + merged: DeepMerge_3106; +} + +type CK_3106 = `p31.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_06, Registry_31_06, CK_3106, EP_3106, EV_3106, DeepMerge_3106 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-07.ts new file mode 100644 index 00000000..290bc7fd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-07.ts @@ -0,0 +1,50 @@ +// pkg-31/types-07 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3107 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3107 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_07 | null; children: Entity_31_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3107: number; y3107: string; z3107: boolean }; +} + +type Path_3107 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3107}` }[keyof T & string] : never; +type EP_3107 = Path_3107; + +type Val_3107 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3107 } + : T[K] extends object ? { t: 'o'; props: Val_3107 } + : { t: 'u' }; +}; +type EV_3107 = Val_3107; + +interface Registry_31_07 { + entities: Map; + validators: EV_3107; + paths: Set; + merged: DeepMerge_3107; +} + +type CK_3107 = `p31.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_07, Registry_31_07, CK_3107, EP_3107, EV_3107, DeepMerge_3107 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-08.ts new file mode 100644 index 00000000..b02f35be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-08.ts @@ -0,0 +1,50 @@ +// pkg-31/types-08 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3108 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3108 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_08 | null; children: Entity_31_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3108: number; y3108: string; z3108: boolean }; +} + +type Path_3108 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3108}` }[keyof T & string] : never; +type EP_3108 = Path_3108; + +type Val_3108 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3108 } + : T[K] extends object ? { t: 'o'; props: Val_3108 } + : { t: 'u' }; +}; +type EV_3108 = Val_3108; + +interface Registry_31_08 { + entities: Map; + validators: EV_3108; + paths: Set; + merged: DeepMerge_3108; +} + +type CK_3108 = `p31.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_08, Registry_31_08, CK_3108, EP_3108, EV_3108, DeepMerge_3108 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-09.ts new file mode 100644 index 00000000..02561536 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-09.ts @@ -0,0 +1,50 @@ +// pkg-31/types-09 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3109 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3109 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_09 | null; children: Entity_31_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3109: number; y3109: string; z3109: boolean }; +} + +type Path_3109 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3109}` }[keyof T & string] : never; +type EP_3109 = Path_3109; + +type Val_3109 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3109 } + : T[K] extends object ? { t: 'o'; props: Val_3109 } + : { t: 'u' }; +}; +type EV_3109 = Val_3109; + +interface Registry_31_09 { + entities: Map; + validators: EV_3109; + paths: Set; + merged: DeepMerge_3109; +} + +type CK_3109 = `p31.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_09, Registry_31_09, CK_3109, EP_3109, EV_3109, DeepMerge_3109 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-10.ts new file mode 100644 index 00000000..717d74e6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-10.ts @@ -0,0 +1,50 @@ +// pkg-31/types-10 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3110 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3110 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_10 | null; children: Entity_31_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3110: number; y3110: string; z3110: boolean }; +} + +type Path_3110 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3110}` }[keyof T & string] : never; +type EP_3110 = Path_3110; + +type Val_3110 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3110 } + : T[K] extends object ? { t: 'o'; props: Val_3110 } + : { t: 'u' }; +}; +type EV_3110 = Val_3110; + +interface Registry_31_10 { + entities: Map; + validators: EV_3110; + paths: Set; + merged: DeepMerge_3110; +} + +type CK_3110 = `p31.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_10, Registry_31_10, CK_3110, EP_3110, EV_3110, DeepMerge_3110 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-11.ts new file mode 100644 index 00000000..853ef689 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-11.ts @@ -0,0 +1,50 @@ +// pkg-31/types-11 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3111 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3111 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_11 | null; children: Entity_31_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3111: number; y3111: string; z3111: boolean }; +} + +type Path_3111 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3111}` }[keyof T & string] : never; +type EP_3111 = Path_3111; + +type Val_3111 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3111 } + : T[K] extends object ? { t: 'o'; props: Val_3111 } + : { t: 'u' }; +}; +type EV_3111 = Val_3111; + +interface Registry_31_11 { + entities: Map; + validators: EV_3111; + paths: Set; + merged: DeepMerge_3111; +} + +type CK_3111 = `p31.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_11, Registry_31_11, CK_3111, EP_3111, EV_3111, DeepMerge_3111 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-12.ts new file mode 100644 index 00000000..a43e188e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-12.ts @@ -0,0 +1,50 @@ +// pkg-31/types-12 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3112 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3112 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_12 | null; children: Entity_31_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3112: number; y3112: string; z3112: boolean }; +} + +type Path_3112 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3112}` }[keyof T & string] : never; +type EP_3112 = Path_3112; + +type Val_3112 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3112 } + : T[K] extends object ? { t: 'o'; props: Val_3112 } + : { t: 'u' }; +}; +type EV_3112 = Val_3112; + +interface Registry_31_12 { + entities: Map; + validators: EV_3112; + paths: Set; + merged: DeepMerge_3112; +} + +type CK_3112 = `p31.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_12, Registry_31_12, CK_3112, EP_3112, EV_3112, DeepMerge_3112 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-13.ts new file mode 100644 index 00000000..c6971081 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-13.ts @@ -0,0 +1,50 @@ +// pkg-31/types-13 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3113 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3113 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_13 | null; children: Entity_31_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3113: number; y3113: string; z3113: boolean }; +} + +type Path_3113 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3113}` }[keyof T & string] : never; +type EP_3113 = Path_3113; + +type Val_3113 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3113 } + : T[K] extends object ? { t: 'o'; props: Val_3113 } + : { t: 'u' }; +}; +type EV_3113 = Val_3113; + +interface Registry_31_13 { + entities: Map; + validators: EV_3113; + paths: Set; + merged: DeepMerge_3113; +} + +type CK_3113 = `p31.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_13, Registry_31_13, CK_3113, EP_3113, EV_3113, DeepMerge_3113 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-14.ts new file mode 100644 index 00000000..591adbaf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-14.ts @@ -0,0 +1,50 @@ +// pkg-31/types-14 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3114 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3114 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_14 | null; children: Entity_31_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3114: number; y3114: string; z3114: boolean }; +} + +type Path_3114 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3114}` }[keyof T & string] : never; +type EP_3114 = Path_3114; + +type Val_3114 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3114 } + : T[K] extends object ? { t: 'o'; props: Val_3114 } + : { t: 'u' }; +}; +type EV_3114 = Val_3114; + +interface Registry_31_14 { + entities: Map; + validators: EV_3114; + paths: Set; + merged: DeepMerge_3114; +} + +type CK_3114 = `p31.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_14, Registry_31_14, CK_3114, EP_3114, EV_3114, DeepMerge_3114 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-15.ts new file mode 100644 index 00000000..fe0db917 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-15.ts @@ -0,0 +1,50 @@ +// pkg-31/types-15 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3115 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3115 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_15 | null; children: Entity_31_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3115: number; y3115: string; z3115: boolean }; +} + +type Path_3115 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3115}` }[keyof T & string] : never; +type EP_3115 = Path_3115; + +type Val_3115 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3115 } + : T[K] extends object ? { t: 'o'; props: Val_3115 } + : { t: 'u' }; +}; +type EV_3115 = Val_3115; + +interface Registry_31_15 { + entities: Map; + validators: EV_3115; + paths: Set; + merged: DeepMerge_3115; +} + +type CK_3115 = `p31.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_15, Registry_31_15, CK_3115, EP_3115, EV_3115, DeepMerge_3115 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-16.ts new file mode 100644 index 00000000..f1ab5811 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-16.ts @@ -0,0 +1,50 @@ +// pkg-31/types-16 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3116 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3116 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_16 | null; children: Entity_31_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3116: number; y3116: string; z3116: boolean }; +} + +type Path_3116 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3116}` }[keyof T & string] : never; +type EP_3116 = Path_3116; + +type Val_3116 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3116 } + : T[K] extends object ? { t: 'o'; props: Val_3116 } + : { t: 'u' }; +}; +type EV_3116 = Val_3116; + +interface Registry_31_16 { + entities: Map; + validators: EV_3116; + paths: Set; + merged: DeepMerge_3116; +} + +type CK_3116 = `p31.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_16, Registry_31_16, CK_3116, EP_3116, EV_3116, DeepMerge_3116 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-17.ts new file mode 100644 index 00000000..a9b0e128 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-17.ts @@ -0,0 +1,50 @@ +// pkg-31/types-17 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3117 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3117 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_17 | null; children: Entity_31_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3117: number; y3117: string; z3117: boolean }; +} + +type Path_3117 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3117}` }[keyof T & string] : never; +type EP_3117 = Path_3117; + +type Val_3117 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3117 } + : T[K] extends object ? { t: 'o'; props: Val_3117 } + : { t: 'u' }; +}; +type EV_3117 = Val_3117; + +interface Registry_31_17 { + entities: Map; + validators: EV_3117; + paths: Set; + merged: DeepMerge_3117; +} + +type CK_3117 = `p31.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_17, Registry_31_17, CK_3117, EP_3117, EV_3117, DeepMerge_3117 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-18.ts new file mode 100644 index 00000000..08e28c28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-18.ts @@ -0,0 +1,50 @@ +// pkg-31/types-18 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3118 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3118 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_18 | null; children: Entity_31_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3118: number; y3118: string; z3118: boolean }; +} + +type Path_3118 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3118}` }[keyof T & string] : never; +type EP_3118 = Path_3118; + +type Val_3118 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3118 } + : T[K] extends object ? { t: 'o'; props: Val_3118 } + : { t: 'u' }; +}; +type EV_3118 = Val_3118; + +interface Registry_31_18 { + entities: Map; + validators: EV_3118; + paths: Set; + merged: DeepMerge_3118; +} + +type CK_3118 = `p31.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_18, Registry_31_18, CK_3118, EP_3118, EV_3118, DeepMerge_3118 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-19.ts new file mode 100644 index 00000000..279ae545 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-19.ts @@ -0,0 +1,50 @@ +// pkg-31/types-19 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3119 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3119 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_19 | null; children: Entity_31_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3119: number; y3119: string; z3119: boolean }; +} + +type Path_3119 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3119}` }[keyof T & string] : never; +type EP_3119 = Path_3119; + +type Val_3119 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3119 } + : T[K] extends object ? { t: 'o'; props: Val_3119 } + : { t: 'u' }; +}; +type EV_3119 = Val_3119; + +interface Registry_31_19 { + entities: Map; + validators: EV_3119; + paths: Set; + merged: DeepMerge_3119; +} + +type CK_3119 = `p31.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_19, Registry_31_19, CK_3119, EP_3119, EV_3119, DeepMerge_3119 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-20.ts new file mode 100644 index 00000000..8ca4e378 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-20.ts @@ -0,0 +1,50 @@ +// pkg-31/types-20 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3120 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3120 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_20 | null; children: Entity_31_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3120: number; y3120: string; z3120: boolean }; +} + +type Path_3120 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3120}` }[keyof T & string] : never; +type EP_3120 = Path_3120; + +type Val_3120 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3120 } + : T[K] extends object ? { t: 'o'; props: Val_3120 } + : { t: 'u' }; +}; +type EV_3120 = Val_3120; + +interface Registry_31_20 { + entities: Map; + validators: EV_3120; + paths: Set; + merged: DeepMerge_3120; +} + +type CK_3120 = `p31.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_20, Registry_31_20, CK_3120, EP_3120, EV_3120, DeepMerge_3120 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-21.ts new file mode 100644 index 00000000..514f0d87 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-21.ts @@ -0,0 +1,50 @@ +// pkg-31/types-21 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3121 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3121 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_21 | null; children: Entity_31_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3121: number; y3121: string; z3121: boolean }; +} + +type Path_3121 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3121}` }[keyof T & string] : never; +type EP_3121 = Path_3121; + +type Val_3121 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3121 } + : T[K] extends object ? { t: 'o'; props: Val_3121 } + : { t: 'u' }; +}; +type EV_3121 = Val_3121; + +interface Registry_31_21 { + entities: Map; + validators: EV_3121; + paths: Set; + merged: DeepMerge_3121; +} + +type CK_3121 = `p31.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_21, Registry_31_21, CK_3121, EP_3121, EV_3121, DeepMerge_3121 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-22.ts new file mode 100644 index 00000000..0248853c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-22.ts @@ -0,0 +1,50 @@ +// pkg-31/types-22 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3122 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3122 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_22 | null; children: Entity_31_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3122: number; y3122: string; z3122: boolean }; +} + +type Path_3122 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3122}` }[keyof T & string] : never; +type EP_3122 = Path_3122; + +type Val_3122 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3122 } + : T[K] extends object ? { t: 'o'; props: Val_3122 } + : { t: 'u' }; +}; +type EV_3122 = Val_3122; + +interface Registry_31_22 { + entities: Map; + validators: EV_3122; + paths: Set; + merged: DeepMerge_3122; +} + +type CK_3122 = `p31.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_22, Registry_31_22, CK_3122, EP_3122, EV_3122, DeepMerge_3122 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-23.ts new file mode 100644 index 00000000..97d18d38 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-23.ts @@ -0,0 +1,50 @@ +// pkg-31/types-23 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3123 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3123 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_23 | null; children: Entity_31_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3123: number; y3123: string; z3123: boolean }; +} + +type Path_3123 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3123}` }[keyof T & string] : never; +type EP_3123 = Path_3123; + +type Val_3123 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3123 } + : T[K] extends object ? { t: 'o'; props: Val_3123 } + : { t: 'u' }; +}; +type EV_3123 = Val_3123; + +interface Registry_31_23 { + entities: Map; + validators: EV_3123; + paths: Set; + merged: DeepMerge_3123; +} + +type CK_3123 = `p31.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_23, Registry_31_23, CK_3123, EP_3123, EV_3123, DeepMerge_3123 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-24.ts new file mode 100644 index 00000000..ac31a6e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-24.ts @@ -0,0 +1,50 @@ +// pkg-31/types-24 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3124 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3124 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_24 | null; children: Entity_31_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3124: number; y3124: string; z3124: boolean }; +} + +type Path_3124 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3124}` }[keyof T & string] : never; +type EP_3124 = Path_3124; + +type Val_3124 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3124 } + : T[K] extends object ? { t: 'o'; props: Val_3124 } + : { t: 'u' }; +}; +type EV_3124 = Val_3124; + +interface Registry_31_24 { + entities: Map; + validators: EV_3124; + paths: Set; + merged: DeepMerge_3124; +} + +type CK_3124 = `p31.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_24, Registry_31_24, CK_3124, EP_3124, EV_3124, DeepMerge_3124 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-25.ts new file mode 100644 index 00000000..d580c362 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-25.ts @@ -0,0 +1,50 @@ +// pkg-31/types-25 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3125 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3125 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_25 | null; children: Entity_31_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3125: number; y3125: string; z3125: boolean }; +} + +type Path_3125 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3125}` }[keyof T & string] : never; +type EP_3125 = Path_3125; + +type Val_3125 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3125 } + : T[K] extends object ? { t: 'o'; props: Val_3125 } + : { t: 'u' }; +}; +type EV_3125 = Val_3125; + +interface Registry_31_25 { + entities: Map; + validators: EV_3125; + paths: Set; + merged: DeepMerge_3125; +} + +type CK_3125 = `p31.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_25, Registry_31_25, CK_3125, EP_3125, EV_3125, DeepMerge_3125 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-26.ts new file mode 100644 index 00000000..d9d05adb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-26.ts @@ -0,0 +1,50 @@ +// pkg-31/types-26 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3126 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3126 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_26 | null; children: Entity_31_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3126: number; y3126: string; z3126: boolean }; +} + +type Path_3126 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3126}` }[keyof T & string] : never; +type EP_3126 = Path_3126; + +type Val_3126 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3126 } + : T[K] extends object ? { t: 'o'; props: Val_3126 } + : { t: 'u' }; +}; +type EV_3126 = Val_3126; + +interface Registry_31_26 { + entities: Map; + validators: EV_3126; + paths: Set; + merged: DeepMerge_3126; +} + +type CK_3126 = `p31.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_26, Registry_31_26, CK_3126, EP_3126, EV_3126, DeepMerge_3126 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-27.ts new file mode 100644 index 00000000..22394724 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-27.ts @@ -0,0 +1,50 @@ +// pkg-31/types-27 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3127 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3127 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_27 | null; children: Entity_31_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3127: number; y3127: string; z3127: boolean }; +} + +type Path_3127 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3127}` }[keyof T & string] : never; +type EP_3127 = Path_3127; + +type Val_3127 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3127 } + : T[K] extends object ? { t: 'o'; props: Val_3127 } + : { t: 'u' }; +}; +type EV_3127 = Val_3127; + +interface Registry_31_27 { + entities: Map; + validators: EV_3127; + paths: Set; + merged: DeepMerge_3127; +} + +type CK_3127 = `p31.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_27, Registry_31_27, CK_3127, EP_3127, EV_3127, DeepMerge_3127 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-28.ts new file mode 100644 index 00000000..b198b708 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-28.ts @@ -0,0 +1,50 @@ +// pkg-31/types-28 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3128 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3128 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_28 | null; children: Entity_31_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3128: number; y3128: string; z3128: boolean }; +} + +type Path_3128 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3128}` }[keyof T & string] : never; +type EP_3128 = Path_3128; + +type Val_3128 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3128 } + : T[K] extends object ? { t: 'o'; props: Val_3128 } + : { t: 'u' }; +}; +type EV_3128 = Val_3128; + +interface Registry_31_28 { + entities: Map; + validators: EV_3128; + paths: Set; + merged: DeepMerge_3128; +} + +type CK_3128 = `p31.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_28, Registry_31_28, CK_3128, EP_3128, EV_3128, DeepMerge_3128 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-29.ts new file mode 100644 index 00000000..c85e61f7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-29.ts @@ -0,0 +1,50 @@ +// pkg-31/types-29 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3129 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3129 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_29 | null; children: Entity_31_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3129: number; y3129: string; z3129: boolean }; +} + +type Path_3129 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3129}` }[keyof T & string] : never; +type EP_3129 = Path_3129; + +type Val_3129 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3129 } + : T[K] extends object ? { t: 'o'; props: Val_3129 } + : { t: 'u' }; +}; +type EV_3129 = Val_3129; + +interface Registry_31_29 { + entities: Map; + validators: EV_3129; + paths: Set; + merged: DeepMerge_3129; +} + +type CK_3129 = `p31.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_29, Registry_31_29, CK_3129, EP_3129, EV_3129, DeepMerge_3129 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-30.ts new file mode 100644 index 00000000..20d72b57 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-30.ts @@ -0,0 +1,50 @@ +// pkg-31/types-30 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3130 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3130 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_30 | null; children: Entity_31_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3130: number; y3130: string; z3130: boolean }; +} + +type Path_3130 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3130}` }[keyof T & string] : never; +type EP_3130 = Path_3130; + +type Val_3130 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3130 } + : T[K] extends object ? { t: 'o'; props: Val_3130 } + : { t: 'u' }; +}; +type EV_3130 = Val_3130; + +interface Registry_31_30 { + entities: Map; + validators: EV_3130; + paths: Set; + merged: DeepMerge_3130; +} + +type CK_3130 = `p31.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_30, Registry_31_30, CK_3130, EP_3130, EV_3130, DeepMerge_3130 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-31.ts new file mode 100644 index 00000000..c9872283 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-31.ts @@ -0,0 +1,50 @@ +// pkg-31/types-31 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3131 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3131 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_31 | null; children: Entity_31_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3131: number; y3131: string; z3131: boolean }; +} + +type Path_3131 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3131}` }[keyof T & string] : never; +type EP_3131 = Path_3131; + +type Val_3131 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3131 } + : T[K] extends object ? { t: 'o'; props: Val_3131 } + : { t: 'u' }; +}; +type EV_3131 = Val_3131; + +interface Registry_31_31 { + entities: Map; + validators: EV_3131; + paths: Set; + merged: DeepMerge_3131; +} + +type CK_3131 = `p31.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_31, Registry_31_31, CK_3131, EP_3131, EV_3131, DeepMerge_3131 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-32.ts new file mode 100644 index 00000000..fc49b0b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-32.ts @@ -0,0 +1,50 @@ +// pkg-31/types-32 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3132 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3132 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_32 | null; children: Entity_31_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3132: number; y3132: string; z3132: boolean }; +} + +type Path_3132 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3132}` }[keyof T & string] : never; +type EP_3132 = Path_3132; + +type Val_3132 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3132 } + : T[K] extends object ? { t: 'o'; props: Val_3132 } + : { t: 'u' }; +}; +type EV_3132 = Val_3132; + +interface Registry_31_32 { + entities: Map; + validators: EV_3132; + paths: Set; + merged: DeepMerge_3132; +} + +type CK_3132 = `p31.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_32, Registry_31_32, CK_3132, EP_3132, EV_3132, DeepMerge_3132 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-33.ts new file mode 100644 index 00000000..e43ddc59 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-33.ts @@ -0,0 +1,50 @@ +// pkg-31/types-33 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3133 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3133 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_33 | null; children: Entity_31_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3133: number; y3133: string; z3133: boolean }; +} + +type Path_3133 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3133}` }[keyof T & string] : never; +type EP_3133 = Path_3133; + +type Val_3133 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3133 } + : T[K] extends object ? { t: 'o'; props: Val_3133 } + : { t: 'u' }; +}; +type EV_3133 = Val_3133; + +interface Registry_31_33 { + entities: Map; + validators: EV_3133; + paths: Set; + merged: DeepMerge_3133; +} + +type CK_3133 = `p31.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_33, Registry_31_33, CK_3133, EP_3133, EV_3133, DeepMerge_3133 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-34.ts new file mode 100644 index 00000000..22ce3a2a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-34.ts @@ -0,0 +1,50 @@ +// pkg-31/types-34 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3134 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3134 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_34 | null; children: Entity_31_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3134: number; y3134: string; z3134: boolean }; +} + +type Path_3134 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3134}` }[keyof T & string] : never; +type EP_3134 = Path_3134; + +type Val_3134 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3134 } + : T[K] extends object ? { t: 'o'; props: Val_3134 } + : { t: 'u' }; +}; +type EV_3134 = Val_3134; + +interface Registry_31_34 { + entities: Map; + validators: EV_3134; + paths: Set; + merged: DeepMerge_3134; +} + +type CK_3134 = `p31.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_34, Registry_31_34, CK_3134, EP_3134, EV_3134, DeepMerge_3134 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-35.ts new file mode 100644 index 00000000..04f9d1cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-35.ts @@ -0,0 +1,50 @@ +// pkg-31/types-35 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3135 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3135 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_35 | null; children: Entity_31_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3135: number; y3135: string; z3135: boolean }; +} + +type Path_3135 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3135}` }[keyof T & string] : never; +type EP_3135 = Path_3135; + +type Val_3135 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3135 } + : T[K] extends object ? { t: 'o'; props: Val_3135 } + : { t: 'u' }; +}; +type EV_3135 = Val_3135; + +interface Registry_31_35 { + entities: Map; + validators: EV_3135; + paths: Set; + merged: DeepMerge_3135; +} + +type CK_3135 = `p31.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_35, Registry_31_35, CK_3135, EP_3135, EV_3135, DeepMerge_3135 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-36.ts new file mode 100644 index 00000000..a7a1b855 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-36.ts @@ -0,0 +1,50 @@ +// pkg-31/types-36 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3136 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3136 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_36 | null; children: Entity_31_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3136: number; y3136: string; z3136: boolean }; +} + +type Path_3136 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3136}` }[keyof T & string] : never; +type EP_3136 = Path_3136; + +type Val_3136 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3136 } + : T[K] extends object ? { t: 'o'; props: Val_3136 } + : { t: 'u' }; +}; +type EV_3136 = Val_3136; + +interface Registry_31_36 { + entities: Map; + validators: EV_3136; + paths: Set; + merged: DeepMerge_3136; +} + +type CK_3136 = `p31.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_36, Registry_31_36, CK_3136, EP_3136, EV_3136, DeepMerge_3136 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-37.ts new file mode 100644 index 00000000..87d33c1e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-37.ts @@ -0,0 +1,50 @@ +// pkg-31/types-37 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3137 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3137 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_37 | null; children: Entity_31_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3137: number; y3137: string; z3137: boolean }; +} + +type Path_3137 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3137}` }[keyof T & string] : never; +type EP_3137 = Path_3137; + +type Val_3137 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3137 } + : T[K] extends object ? { t: 'o'; props: Val_3137 } + : { t: 'u' }; +}; +type EV_3137 = Val_3137; + +interface Registry_31_37 { + entities: Map; + validators: EV_3137; + paths: Set; + merged: DeepMerge_3137; +} + +type CK_3137 = `p31.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_37, Registry_31_37, CK_3137, EP_3137, EV_3137, DeepMerge_3137 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-38.ts new file mode 100644 index 00000000..cc316cc7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-38.ts @@ -0,0 +1,50 @@ +// pkg-31/types-38 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3138 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3138 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_38 | null; children: Entity_31_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3138: number; y3138: string; z3138: boolean }; +} + +type Path_3138 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3138}` }[keyof T & string] : never; +type EP_3138 = Path_3138; + +type Val_3138 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3138 } + : T[K] extends object ? { t: 'o'; props: Val_3138 } + : { t: 'u' }; +}; +type EV_3138 = Val_3138; + +interface Registry_31_38 { + entities: Map; + validators: EV_3138; + paths: Set; + merged: DeepMerge_3138; +} + +type CK_3138 = `p31.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_38, Registry_31_38, CK_3138, EP_3138, EV_3138, DeepMerge_3138 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-39.ts new file mode 100644 index 00000000..e2c825f2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-39.ts @@ -0,0 +1,50 @@ +// pkg-31/types-39 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3139 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3139 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_39 | null; children: Entity_31_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3139: number; y3139: string; z3139: boolean }; +} + +type Path_3139 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3139}` }[keyof T & string] : never; +type EP_3139 = Path_3139; + +type Val_3139 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3139 } + : T[K] extends object ? { t: 'o'; props: Val_3139 } + : { t: 'u' }; +}; +type EV_3139 = Val_3139; + +interface Registry_31_39 { + entities: Map; + validators: EV_3139; + paths: Set; + merged: DeepMerge_3139; +} + +type CK_3139 = `p31.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_39, Registry_31_39, CK_3139, EP_3139, EV_3139, DeepMerge_3139 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-40.ts new file mode 100644 index 00000000..30b2cd6e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-40.ts @@ -0,0 +1,50 @@ +// pkg-31/types-40 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3140 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3140 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_40 | null; children: Entity_31_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3140: number; y3140: string; z3140: boolean }; +} + +type Path_3140 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3140}` }[keyof T & string] : never; +type EP_3140 = Path_3140; + +type Val_3140 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3140 } + : T[K] extends object ? { t: 'o'; props: Val_3140 } + : { t: 'u' }; +}; +type EV_3140 = Val_3140; + +interface Registry_31_40 { + entities: Map; + validators: EV_3140; + paths: Set; + merged: DeepMerge_3140; +} + +type CK_3140 = `p31.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_40, Registry_31_40, CK_3140, EP_3140, EV_3140, DeepMerge_3140 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-41.ts new file mode 100644 index 00000000..4decccf4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-41.ts @@ -0,0 +1,50 @@ +// pkg-31/types-41 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3141 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3141 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_41 | null; children: Entity_31_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3141: number; y3141: string; z3141: boolean }; +} + +type Path_3141 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3141}` }[keyof T & string] : never; +type EP_3141 = Path_3141; + +type Val_3141 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3141 } + : T[K] extends object ? { t: 'o'; props: Val_3141 } + : { t: 'u' }; +}; +type EV_3141 = Val_3141; + +interface Registry_31_41 { + entities: Map; + validators: EV_3141; + paths: Set; + merged: DeepMerge_3141; +} + +type CK_3141 = `p31.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_41, Registry_31_41, CK_3141, EP_3141, EV_3141, DeepMerge_3141 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-42.ts new file mode 100644 index 00000000..4265d38e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-42.ts @@ -0,0 +1,50 @@ +// pkg-31/types-42 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3142 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3142 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_42 | null; children: Entity_31_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3142: number; y3142: string; z3142: boolean }; +} + +type Path_3142 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3142}` }[keyof T & string] : never; +type EP_3142 = Path_3142; + +type Val_3142 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3142 } + : T[K] extends object ? { t: 'o'; props: Val_3142 } + : { t: 'u' }; +}; +type EV_3142 = Val_3142; + +interface Registry_31_42 { + entities: Map; + validators: EV_3142; + paths: Set; + merged: DeepMerge_3142; +} + +type CK_3142 = `p31.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_42, Registry_31_42, CK_3142, EP_3142, EV_3142, DeepMerge_3142 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-43.ts new file mode 100644 index 00000000..b7f00f28 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-43.ts @@ -0,0 +1,50 @@ +// pkg-31/types-43 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3143 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3143 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_43 | null; children: Entity_31_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3143: number; y3143: string; z3143: boolean }; +} + +type Path_3143 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3143}` }[keyof T & string] : never; +type EP_3143 = Path_3143; + +type Val_3143 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3143 } + : T[K] extends object ? { t: 'o'; props: Val_3143 } + : { t: 'u' }; +}; +type EV_3143 = Val_3143; + +interface Registry_31_43 { + entities: Map; + validators: EV_3143; + paths: Set; + merged: DeepMerge_3143; +} + +type CK_3143 = `p31.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_43, Registry_31_43, CK_3143, EP_3143, EV_3143, DeepMerge_3143 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-44.ts new file mode 100644 index 00000000..b8ff77d0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-44.ts @@ -0,0 +1,50 @@ +// pkg-31/types-44 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3144 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3144 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_44 | null; children: Entity_31_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3144: number; y3144: string; z3144: boolean }; +} + +type Path_3144 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3144}` }[keyof T & string] : never; +type EP_3144 = Path_3144; + +type Val_3144 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3144 } + : T[K] extends object ? { t: 'o'; props: Val_3144 } + : { t: 'u' }; +}; +type EV_3144 = Val_3144; + +interface Registry_31_44 { + entities: Map; + validators: EV_3144; + paths: Set; + merged: DeepMerge_3144; +} + +type CK_3144 = `p31.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_44, Registry_31_44, CK_3144, EP_3144, EV_3144, DeepMerge_3144 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-45.ts new file mode 100644 index 00000000..11daac6f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-45.ts @@ -0,0 +1,50 @@ +// pkg-31/types-45 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3145 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3145 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_45 | null; children: Entity_31_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3145: number; y3145: string; z3145: boolean }; +} + +type Path_3145 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3145}` }[keyof T & string] : never; +type EP_3145 = Path_3145; + +type Val_3145 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3145 } + : T[K] extends object ? { t: 'o'; props: Val_3145 } + : { t: 'u' }; +}; +type EV_3145 = Val_3145; + +interface Registry_31_45 { + entities: Map; + validators: EV_3145; + paths: Set; + merged: DeepMerge_3145; +} + +type CK_3145 = `p31.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_45, Registry_31_45, CK_3145, EP_3145, EV_3145, DeepMerge_3145 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-46.ts new file mode 100644 index 00000000..da08e4f8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-46.ts @@ -0,0 +1,50 @@ +// pkg-31/types-46 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3146 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3146 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_46 | null; children: Entity_31_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3146: number; y3146: string; z3146: boolean }; +} + +type Path_3146 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3146}` }[keyof T & string] : never; +type EP_3146 = Path_3146; + +type Val_3146 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3146 } + : T[K] extends object ? { t: 'o'; props: Val_3146 } + : { t: 'u' }; +}; +type EV_3146 = Val_3146; + +interface Registry_31_46 { + entities: Map; + validators: EV_3146; + paths: Set; + merged: DeepMerge_3146; +} + +type CK_3146 = `p31.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_46, Registry_31_46, CK_3146, EP_3146, EV_3146, DeepMerge_3146 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-47.ts new file mode 100644 index 00000000..80f47429 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-47.ts @@ -0,0 +1,50 @@ +// pkg-31/types-47 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3147 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3147 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_47 | null; children: Entity_31_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3147: number; y3147: string; z3147: boolean }; +} + +type Path_3147 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3147}` }[keyof T & string] : never; +type EP_3147 = Path_3147; + +type Val_3147 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3147 } + : T[K] extends object ? { t: 'o'; props: Val_3147 } + : { t: 'u' }; +}; +type EV_3147 = Val_3147; + +interface Registry_31_47 { + entities: Map; + validators: EV_3147; + paths: Set; + merged: DeepMerge_3147; +} + +type CK_3147 = `p31.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_47, Registry_31_47, CK_3147, EP_3147, EV_3147, DeepMerge_3147 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-48.ts new file mode 100644 index 00000000..4713020c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-48.ts @@ -0,0 +1,50 @@ +// pkg-31/types-48 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3148 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3148 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_48 | null; children: Entity_31_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3148: number; y3148: string; z3148: boolean }; +} + +type Path_3148 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3148}` }[keyof T & string] : never; +type EP_3148 = Path_3148; + +type Val_3148 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3148 } + : T[K] extends object ? { t: 'o'; props: Val_3148 } + : { t: 'u' }; +}; +type EV_3148 = Val_3148; + +interface Registry_31_48 { + entities: Map; + validators: EV_3148; + paths: Set; + merged: DeepMerge_3148; +} + +type CK_3148 = `p31.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_48, Registry_31_48, CK_3148, EP_3148, EV_3148, DeepMerge_3148 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-49.ts new file mode 100644 index 00000000..bf4213c4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-49.ts @@ -0,0 +1,50 @@ +// pkg-31/types-49 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3149 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3149 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_49 | null; children: Entity_31_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3149: number; y3149: string; z3149: boolean }; +} + +type Path_3149 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3149}` }[keyof T & string] : never; +type EP_3149 = Path_3149; + +type Val_3149 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3149 } + : T[K] extends object ? { t: 'o'; props: Val_3149 } + : { t: 'u' }; +}; +type EV_3149 = Val_3149; + +interface Registry_31_49 { + entities: Map; + validators: EV_3149; + paths: Set; + merged: DeepMerge_3149; +} + +type CK_3149 = `p31.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_49, Registry_31_49, CK_3149, EP_3149, EV_3149, DeepMerge_3149 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-31/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-31/types-50.ts new file mode 100644 index 00000000..7770d5da --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-31/types-50.ts @@ -0,0 +1,50 @@ +// pkg-31/types-50 - heavy interconnected types + +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; +import type { Entity_28_01, Registry_28_01 } from '../pkg-28/types-01'; +import type { Entity_28_10, Registry_28_10 } from '../pkg-28/types-10'; +import type { Entity_28_20, Registry_28_20 } from '../pkg-28/types-20'; + +type DeepMerge_3150 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3150 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_31_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_31_50 | null; children: Entity_31_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3150: number; y3150: string; z3150: boolean }; +} + +type Path_3150 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3150}` }[keyof T & string] : never; +type EP_3150 = Path_3150; + +type Val_3150 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3150 } + : T[K] extends object ? { t: 'o'; props: Val_3150 } + : { t: 'u' }; +}; +type EV_3150 = Val_3150; + +interface Registry_31_50 { + entities: Map; + validators: EV_3150; + paths: Set; + merged: DeepMerge_3150; +} + +type CK_3150 = `p31.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_31_50, Registry_31_50, CK_3150, EP_3150, EV_3150, DeepMerge_3150 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-32/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-01.ts new file mode 100644 index 00000000..8d5269f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-01.ts @@ -0,0 +1,50 @@ +// pkg-32/types-01 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3201 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3201 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_01 | null; children: Entity_32_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3201: number; y3201: string; z3201: boolean }; +} + +type Path_3201 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3201}` }[keyof T & string] : never; +type EP_3201 = Path_3201; + +type Val_3201 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3201 } + : T[K] extends object ? { t: 'o'; props: Val_3201 } + : { t: 'u' }; +}; +type EV_3201 = Val_3201; + +interface Registry_32_01 { + entities: Map; + validators: EV_3201; + paths: Set; + merged: DeepMerge_3201; +} + +type CK_3201 = `p32.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_01, Registry_32_01, CK_3201, EP_3201, EV_3201, DeepMerge_3201 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-02.ts new file mode 100644 index 00000000..a5befa13 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-02.ts @@ -0,0 +1,50 @@ +// pkg-32/types-02 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3202 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3202 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_02 | null; children: Entity_32_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3202: number; y3202: string; z3202: boolean }; +} + +type Path_3202 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3202}` }[keyof T & string] : never; +type EP_3202 = Path_3202; + +type Val_3202 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3202 } + : T[K] extends object ? { t: 'o'; props: Val_3202 } + : { t: 'u' }; +}; +type EV_3202 = Val_3202; + +interface Registry_32_02 { + entities: Map; + validators: EV_3202; + paths: Set; + merged: DeepMerge_3202; +} + +type CK_3202 = `p32.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_02, Registry_32_02, CK_3202, EP_3202, EV_3202, DeepMerge_3202 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-03.ts new file mode 100644 index 00000000..512192b9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-03.ts @@ -0,0 +1,50 @@ +// pkg-32/types-03 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3203 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3203 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_03 | null; children: Entity_32_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3203: number; y3203: string; z3203: boolean }; +} + +type Path_3203 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3203}` }[keyof T & string] : never; +type EP_3203 = Path_3203; + +type Val_3203 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3203 } + : T[K] extends object ? { t: 'o'; props: Val_3203 } + : { t: 'u' }; +}; +type EV_3203 = Val_3203; + +interface Registry_32_03 { + entities: Map; + validators: EV_3203; + paths: Set; + merged: DeepMerge_3203; +} + +type CK_3203 = `p32.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_03, Registry_32_03, CK_3203, EP_3203, EV_3203, DeepMerge_3203 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-04.ts new file mode 100644 index 00000000..d5ae86ec --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-04.ts @@ -0,0 +1,50 @@ +// pkg-32/types-04 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3204 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3204 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_04 | null; children: Entity_32_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3204: number; y3204: string; z3204: boolean }; +} + +type Path_3204 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3204}` }[keyof T & string] : never; +type EP_3204 = Path_3204; + +type Val_3204 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3204 } + : T[K] extends object ? { t: 'o'; props: Val_3204 } + : { t: 'u' }; +}; +type EV_3204 = Val_3204; + +interface Registry_32_04 { + entities: Map; + validators: EV_3204; + paths: Set; + merged: DeepMerge_3204; +} + +type CK_3204 = `p32.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_04, Registry_32_04, CK_3204, EP_3204, EV_3204, DeepMerge_3204 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-05.ts new file mode 100644 index 00000000..c9246773 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-05.ts @@ -0,0 +1,50 @@ +// pkg-32/types-05 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3205 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3205 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_05 | null; children: Entity_32_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3205: number; y3205: string; z3205: boolean }; +} + +type Path_3205 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3205}` }[keyof T & string] : never; +type EP_3205 = Path_3205; + +type Val_3205 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3205 } + : T[K] extends object ? { t: 'o'; props: Val_3205 } + : { t: 'u' }; +}; +type EV_3205 = Val_3205; + +interface Registry_32_05 { + entities: Map; + validators: EV_3205; + paths: Set; + merged: DeepMerge_3205; +} + +type CK_3205 = `p32.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_05, Registry_32_05, CK_3205, EP_3205, EV_3205, DeepMerge_3205 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-06.ts new file mode 100644 index 00000000..5618ede4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-06.ts @@ -0,0 +1,50 @@ +// pkg-32/types-06 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3206 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3206 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_06 | null; children: Entity_32_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3206: number; y3206: string; z3206: boolean }; +} + +type Path_3206 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3206}` }[keyof T & string] : never; +type EP_3206 = Path_3206; + +type Val_3206 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3206 } + : T[K] extends object ? { t: 'o'; props: Val_3206 } + : { t: 'u' }; +}; +type EV_3206 = Val_3206; + +interface Registry_32_06 { + entities: Map; + validators: EV_3206; + paths: Set; + merged: DeepMerge_3206; +} + +type CK_3206 = `p32.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_06, Registry_32_06, CK_3206, EP_3206, EV_3206, DeepMerge_3206 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-07.ts new file mode 100644 index 00000000..47eb0024 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-07.ts @@ -0,0 +1,50 @@ +// pkg-32/types-07 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3207 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3207 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_07 | null; children: Entity_32_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3207: number; y3207: string; z3207: boolean }; +} + +type Path_3207 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3207}` }[keyof T & string] : never; +type EP_3207 = Path_3207; + +type Val_3207 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3207 } + : T[K] extends object ? { t: 'o'; props: Val_3207 } + : { t: 'u' }; +}; +type EV_3207 = Val_3207; + +interface Registry_32_07 { + entities: Map; + validators: EV_3207; + paths: Set; + merged: DeepMerge_3207; +} + +type CK_3207 = `p32.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_07, Registry_32_07, CK_3207, EP_3207, EV_3207, DeepMerge_3207 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-08.ts new file mode 100644 index 00000000..5648c960 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-08.ts @@ -0,0 +1,50 @@ +// pkg-32/types-08 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3208 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3208 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_08 | null; children: Entity_32_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3208: number; y3208: string; z3208: boolean }; +} + +type Path_3208 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3208}` }[keyof T & string] : never; +type EP_3208 = Path_3208; + +type Val_3208 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3208 } + : T[K] extends object ? { t: 'o'; props: Val_3208 } + : { t: 'u' }; +}; +type EV_3208 = Val_3208; + +interface Registry_32_08 { + entities: Map; + validators: EV_3208; + paths: Set; + merged: DeepMerge_3208; +} + +type CK_3208 = `p32.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_08, Registry_32_08, CK_3208, EP_3208, EV_3208, DeepMerge_3208 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-09.ts new file mode 100644 index 00000000..e29b0d0a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-09.ts @@ -0,0 +1,50 @@ +// pkg-32/types-09 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3209 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3209 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_09 | null; children: Entity_32_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3209: number; y3209: string; z3209: boolean }; +} + +type Path_3209 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3209}` }[keyof T & string] : never; +type EP_3209 = Path_3209; + +type Val_3209 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3209 } + : T[K] extends object ? { t: 'o'; props: Val_3209 } + : { t: 'u' }; +}; +type EV_3209 = Val_3209; + +interface Registry_32_09 { + entities: Map; + validators: EV_3209; + paths: Set; + merged: DeepMerge_3209; +} + +type CK_3209 = `p32.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_09, Registry_32_09, CK_3209, EP_3209, EV_3209, DeepMerge_3209 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-10.ts new file mode 100644 index 00000000..0eb2cf86 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-10.ts @@ -0,0 +1,50 @@ +// pkg-32/types-10 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3210 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3210 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_10 | null; children: Entity_32_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3210: number; y3210: string; z3210: boolean }; +} + +type Path_3210 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3210}` }[keyof T & string] : never; +type EP_3210 = Path_3210; + +type Val_3210 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3210 } + : T[K] extends object ? { t: 'o'; props: Val_3210 } + : { t: 'u' }; +}; +type EV_3210 = Val_3210; + +interface Registry_32_10 { + entities: Map; + validators: EV_3210; + paths: Set; + merged: DeepMerge_3210; +} + +type CK_3210 = `p32.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_10, Registry_32_10, CK_3210, EP_3210, EV_3210, DeepMerge_3210 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-11.ts new file mode 100644 index 00000000..ebb43834 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-11.ts @@ -0,0 +1,50 @@ +// pkg-32/types-11 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3211 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3211 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_11 | null; children: Entity_32_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3211: number; y3211: string; z3211: boolean }; +} + +type Path_3211 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3211}` }[keyof T & string] : never; +type EP_3211 = Path_3211; + +type Val_3211 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3211 } + : T[K] extends object ? { t: 'o'; props: Val_3211 } + : { t: 'u' }; +}; +type EV_3211 = Val_3211; + +interface Registry_32_11 { + entities: Map; + validators: EV_3211; + paths: Set; + merged: DeepMerge_3211; +} + +type CK_3211 = `p32.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_11, Registry_32_11, CK_3211, EP_3211, EV_3211, DeepMerge_3211 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-12.ts new file mode 100644 index 00000000..da5d600c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-12.ts @@ -0,0 +1,50 @@ +// pkg-32/types-12 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3212 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3212 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_12 | null; children: Entity_32_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3212: number; y3212: string; z3212: boolean }; +} + +type Path_3212 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3212}` }[keyof T & string] : never; +type EP_3212 = Path_3212; + +type Val_3212 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3212 } + : T[K] extends object ? { t: 'o'; props: Val_3212 } + : { t: 'u' }; +}; +type EV_3212 = Val_3212; + +interface Registry_32_12 { + entities: Map; + validators: EV_3212; + paths: Set; + merged: DeepMerge_3212; +} + +type CK_3212 = `p32.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_12, Registry_32_12, CK_3212, EP_3212, EV_3212, DeepMerge_3212 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-13.ts new file mode 100644 index 00000000..f917d60f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-13.ts @@ -0,0 +1,50 @@ +// pkg-32/types-13 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3213 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3213 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_13 | null; children: Entity_32_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3213: number; y3213: string; z3213: boolean }; +} + +type Path_3213 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3213}` }[keyof T & string] : never; +type EP_3213 = Path_3213; + +type Val_3213 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3213 } + : T[K] extends object ? { t: 'o'; props: Val_3213 } + : { t: 'u' }; +}; +type EV_3213 = Val_3213; + +interface Registry_32_13 { + entities: Map; + validators: EV_3213; + paths: Set; + merged: DeepMerge_3213; +} + +type CK_3213 = `p32.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_13, Registry_32_13, CK_3213, EP_3213, EV_3213, DeepMerge_3213 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-14.ts new file mode 100644 index 00000000..762275c8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-14.ts @@ -0,0 +1,50 @@ +// pkg-32/types-14 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3214 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3214 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_14 | null; children: Entity_32_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3214: number; y3214: string; z3214: boolean }; +} + +type Path_3214 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3214}` }[keyof T & string] : never; +type EP_3214 = Path_3214; + +type Val_3214 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3214 } + : T[K] extends object ? { t: 'o'; props: Val_3214 } + : { t: 'u' }; +}; +type EV_3214 = Val_3214; + +interface Registry_32_14 { + entities: Map; + validators: EV_3214; + paths: Set; + merged: DeepMerge_3214; +} + +type CK_3214 = `p32.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_14, Registry_32_14, CK_3214, EP_3214, EV_3214, DeepMerge_3214 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-15.ts new file mode 100644 index 00000000..b96ca97f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-15.ts @@ -0,0 +1,50 @@ +// pkg-32/types-15 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3215 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3215 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_15 | null; children: Entity_32_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3215: number; y3215: string; z3215: boolean }; +} + +type Path_3215 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3215}` }[keyof T & string] : never; +type EP_3215 = Path_3215; + +type Val_3215 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3215 } + : T[K] extends object ? { t: 'o'; props: Val_3215 } + : { t: 'u' }; +}; +type EV_3215 = Val_3215; + +interface Registry_32_15 { + entities: Map; + validators: EV_3215; + paths: Set; + merged: DeepMerge_3215; +} + +type CK_3215 = `p32.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_15, Registry_32_15, CK_3215, EP_3215, EV_3215, DeepMerge_3215 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-16.ts new file mode 100644 index 00000000..3c90d0a2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-16.ts @@ -0,0 +1,50 @@ +// pkg-32/types-16 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3216 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3216 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_16 | null; children: Entity_32_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3216: number; y3216: string; z3216: boolean }; +} + +type Path_3216 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3216}` }[keyof T & string] : never; +type EP_3216 = Path_3216; + +type Val_3216 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3216 } + : T[K] extends object ? { t: 'o'; props: Val_3216 } + : { t: 'u' }; +}; +type EV_3216 = Val_3216; + +interface Registry_32_16 { + entities: Map; + validators: EV_3216; + paths: Set; + merged: DeepMerge_3216; +} + +type CK_3216 = `p32.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_16, Registry_32_16, CK_3216, EP_3216, EV_3216, DeepMerge_3216 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-17.ts new file mode 100644 index 00000000..87da449c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-17.ts @@ -0,0 +1,50 @@ +// pkg-32/types-17 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3217 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3217 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_17 | null; children: Entity_32_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3217: number; y3217: string; z3217: boolean }; +} + +type Path_3217 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3217}` }[keyof T & string] : never; +type EP_3217 = Path_3217; + +type Val_3217 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3217 } + : T[K] extends object ? { t: 'o'; props: Val_3217 } + : { t: 'u' }; +}; +type EV_3217 = Val_3217; + +interface Registry_32_17 { + entities: Map; + validators: EV_3217; + paths: Set; + merged: DeepMerge_3217; +} + +type CK_3217 = `p32.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_17, Registry_32_17, CK_3217, EP_3217, EV_3217, DeepMerge_3217 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-18.ts new file mode 100644 index 00000000..aeb90ae4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-18.ts @@ -0,0 +1,50 @@ +// pkg-32/types-18 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3218 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3218 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_18 | null; children: Entity_32_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3218: number; y3218: string; z3218: boolean }; +} + +type Path_3218 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3218}` }[keyof T & string] : never; +type EP_3218 = Path_3218; + +type Val_3218 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3218 } + : T[K] extends object ? { t: 'o'; props: Val_3218 } + : { t: 'u' }; +}; +type EV_3218 = Val_3218; + +interface Registry_32_18 { + entities: Map; + validators: EV_3218; + paths: Set; + merged: DeepMerge_3218; +} + +type CK_3218 = `p32.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_18, Registry_32_18, CK_3218, EP_3218, EV_3218, DeepMerge_3218 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-19.ts new file mode 100644 index 00000000..688751aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-19.ts @@ -0,0 +1,50 @@ +// pkg-32/types-19 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3219 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3219 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_19 | null; children: Entity_32_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3219: number; y3219: string; z3219: boolean }; +} + +type Path_3219 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3219}` }[keyof T & string] : never; +type EP_3219 = Path_3219; + +type Val_3219 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3219 } + : T[K] extends object ? { t: 'o'; props: Val_3219 } + : { t: 'u' }; +}; +type EV_3219 = Val_3219; + +interface Registry_32_19 { + entities: Map; + validators: EV_3219; + paths: Set; + merged: DeepMerge_3219; +} + +type CK_3219 = `p32.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_19, Registry_32_19, CK_3219, EP_3219, EV_3219, DeepMerge_3219 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-20.ts new file mode 100644 index 00000000..7ff11c7b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-20.ts @@ -0,0 +1,50 @@ +// pkg-32/types-20 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3220 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3220 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_20 | null; children: Entity_32_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3220: number; y3220: string; z3220: boolean }; +} + +type Path_3220 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3220}` }[keyof T & string] : never; +type EP_3220 = Path_3220; + +type Val_3220 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3220 } + : T[K] extends object ? { t: 'o'; props: Val_3220 } + : { t: 'u' }; +}; +type EV_3220 = Val_3220; + +interface Registry_32_20 { + entities: Map; + validators: EV_3220; + paths: Set; + merged: DeepMerge_3220; +} + +type CK_3220 = `p32.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_20, Registry_32_20, CK_3220, EP_3220, EV_3220, DeepMerge_3220 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-21.ts new file mode 100644 index 00000000..7caba57b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-21.ts @@ -0,0 +1,50 @@ +// pkg-32/types-21 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3221 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3221 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_21 | null; children: Entity_32_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3221: number; y3221: string; z3221: boolean }; +} + +type Path_3221 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3221}` }[keyof T & string] : never; +type EP_3221 = Path_3221; + +type Val_3221 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3221 } + : T[K] extends object ? { t: 'o'; props: Val_3221 } + : { t: 'u' }; +}; +type EV_3221 = Val_3221; + +interface Registry_32_21 { + entities: Map; + validators: EV_3221; + paths: Set; + merged: DeepMerge_3221; +} + +type CK_3221 = `p32.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_21, Registry_32_21, CK_3221, EP_3221, EV_3221, DeepMerge_3221 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-22.ts new file mode 100644 index 00000000..c2f01089 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-22.ts @@ -0,0 +1,50 @@ +// pkg-32/types-22 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3222 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3222 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_22 | null; children: Entity_32_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3222: number; y3222: string; z3222: boolean }; +} + +type Path_3222 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3222}` }[keyof T & string] : never; +type EP_3222 = Path_3222; + +type Val_3222 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3222 } + : T[K] extends object ? { t: 'o'; props: Val_3222 } + : { t: 'u' }; +}; +type EV_3222 = Val_3222; + +interface Registry_32_22 { + entities: Map; + validators: EV_3222; + paths: Set; + merged: DeepMerge_3222; +} + +type CK_3222 = `p32.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_22, Registry_32_22, CK_3222, EP_3222, EV_3222, DeepMerge_3222 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-23.ts new file mode 100644 index 00000000..a0234542 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-23.ts @@ -0,0 +1,50 @@ +// pkg-32/types-23 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3223 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3223 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_23 | null; children: Entity_32_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3223: number; y3223: string; z3223: boolean }; +} + +type Path_3223 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3223}` }[keyof T & string] : never; +type EP_3223 = Path_3223; + +type Val_3223 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3223 } + : T[K] extends object ? { t: 'o'; props: Val_3223 } + : { t: 'u' }; +}; +type EV_3223 = Val_3223; + +interface Registry_32_23 { + entities: Map; + validators: EV_3223; + paths: Set; + merged: DeepMerge_3223; +} + +type CK_3223 = `p32.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_23, Registry_32_23, CK_3223, EP_3223, EV_3223, DeepMerge_3223 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-24.ts new file mode 100644 index 00000000..232ef003 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-24.ts @@ -0,0 +1,50 @@ +// pkg-32/types-24 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3224 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3224 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_24 | null; children: Entity_32_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3224: number; y3224: string; z3224: boolean }; +} + +type Path_3224 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3224}` }[keyof T & string] : never; +type EP_3224 = Path_3224; + +type Val_3224 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3224 } + : T[K] extends object ? { t: 'o'; props: Val_3224 } + : { t: 'u' }; +}; +type EV_3224 = Val_3224; + +interface Registry_32_24 { + entities: Map; + validators: EV_3224; + paths: Set; + merged: DeepMerge_3224; +} + +type CK_3224 = `p32.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_24, Registry_32_24, CK_3224, EP_3224, EV_3224, DeepMerge_3224 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-25.ts new file mode 100644 index 00000000..9812108d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-25.ts @@ -0,0 +1,50 @@ +// pkg-32/types-25 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3225 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3225 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_25 | null; children: Entity_32_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3225: number; y3225: string; z3225: boolean }; +} + +type Path_3225 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3225}` }[keyof T & string] : never; +type EP_3225 = Path_3225; + +type Val_3225 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3225 } + : T[K] extends object ? { t: 'o'; props: Val_3225 } + : { t: 'u' }; +}; +type EV_3225 = Val_3225; + +interface Registry_32_25 { + entities: Map; + validators: EV_3225; + paths: Set; + merged: DeepMerge_3225; +} + +type CK_3225 = `p32.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_25, Registry_32_25, CK_3225, EP_3225, EV_3225, DeepMerge_3225 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-26.ts new file mode 100644 index 00000000..10741590 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-26.ts @@ -0,0 +1,50 @@ +// pkg-32/types-26 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3226 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3226 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_26 | null; children: Entity_32_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3226: number; y3226: string; z3226: boolean }; +} + +type Path_3226 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3226}` }[keyof T & string] : never; +type EP_3226 = Path_3226; + +type Val_3226 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3226 } + : T[K] extends object ? { t: 'o'; props: Val_3226 } + : { t: 'u' }; +}; +type EV_3226 = Val_3226; + +interface Registry_32_26 { + entities: Map; + validators: EV_3226; + paths: Set; + merged: DeepMerge_3226; +} + +type CK_3226 = `p32.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_26, Registry_32_26, CK_3226, EP_3226, EV_3226, DeepMerge_3226 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-27.ts new file mode 100644 index 00000000..ea341b8a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-27.ts @@ -0,0 +1,50 @@ +// pkg-32/types-27 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3227 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3227 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_27 | null; children: Entity_32_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3227: number; y3227: string; z3227: boolean }; +} + +type Path_3227 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3227}` }[keyof T & string] : never; +type EP_3227 = Path_3227; + +type Val_3227 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3227 } + : T[K] extends object ? { t: 'o'; props: Val_3227 } + : { t: 'u' }; +}; +type EV_3227 = Val_3227; + +interface Registry_32_27 { + entities: Map; + validators: EV_3227; + paths: Set; + merged: DeepMerge_3227; +} + +type CK_3227 = `p32.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_27, Registry_32_27, CK_3227, EP_3227, EV_3227, DeepMerge_3227 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-28.ts new file mode 100644 index 00000000..544bdcc6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-28.ts @@ -0,0 +1,50 @@ +// pkg-32/types-28 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3228 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3228 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_28 | null; children: Entity_32_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3228: number; y3228: string; z3228: boolean }; +} + +type Path_3228 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3228}` }[keyof T & string] : never; +type EP_3228 = Path_3228; + +type Val_3228 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3228 } + : T[K] extends object ? { t: 'o'; props: Val_3228 } + : { t: 'u' }; +}; +type EV_3228 = Val_3228; + +interface Registry_32_28 { + entities: Map; + validators: EV_3228; + paths: Set; + merged: DeepMerge_3228; +} + +type CK_3228 = `p32.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_28, Registry_32_28, CK_3228, EP_3228, EV_3228, DeepMerge_3228 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-29.ts new file mode 100644 index 00000000..f9e09e0d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-29.ts @@ -0,0 +1,50 @@ +// pkg-32/types-29 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3229 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3229 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_29 | null; children: Entity_32_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3229: number; y3229: string; z3229: boolean }; +} + +type Path_3229 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3229}` }[keyof T & string] : never; +type EP_3229 = Path_3229; + +type Val_3229 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3229 } + : T[K] extends object ? { t: 'o'; props: Val_3229 } + : { t: 'u' }; +}; +type EV_3229 = Val_3229; + +interface Registry_32_29 { + entities: Map; + validators: EV_3229; + paths: Set; + merged: DeepMerge_3229; +} + +type CK_3229 = `p32.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_29, Registry_32_29, CK_3229, EP_3229, EV_3229, DeepMerge_3229 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-30.ts new file mode 100644 index 00000000..74b55c5e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-30.ts @@ -0,0 +1,50 @@ +// pkg-32/types-30 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3230 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3230 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_30 | null; children: Entity_32_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3230: number; y3230: string; z3230: boolean }; +} + +type Path_3230 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3230}` }[keyof T & string] : never; +type EP_3230 = Path_3230; + +type Val_3230 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3230 } + : T[K] extends object ? { t: 'o'; props: Val_3230 } + : { t: 'u' }; +}; +type EV_3230 = Val_3230; + +interface Registry_32_30 { + entities: Map; + validators: EV_3230; + paths: Set; + merged: DeepMerge_3230; +} + +type CK_3230 = `p32.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_30, Registry_32_30, CK_3230, EP_3230, EV_3230, DeepMerge_3230 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-31.ts new file mode 100644 index 00000000..b2a47a17 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-31.ts @@ -0,0 +1,50 @@ +// pkg-32/types-31 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3231 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3231 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_31 | null; children: Entity_32_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3231: number; y3231: string; z3231: boolean }; +} + +type Path_3231 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3231}` }[keyof T & string] : never; +type EP_3231 = Path_3231; + +type Val_3231 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3231 } + : T[K] extends object ? { t: 'o'; props: Val_3231 } + : { t: 'u' }; +}; +type EV_3231 = Val_3231; + +interface Registry_32_31 { + entities: Map; + validators: EV_3231; + paths: Set; + merged: DeepMerge_3231; +} + +type CK_3231 = `p32.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_31, Registry_32_31, CK_3231, EP_3231, EV_3231, DeepMerge_3231 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-32.ts new file mode 100644 index 00000000..1f6d6924 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-32.ts @@ -0,0 +1,50 @@ +// pkg-32/types-32 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3232 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3232 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_32 | null; children: Entity_32_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3232: number; y3232: string; z3232: boolean }; +} + +type Path_3232 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3232}` }[keyof T & string] : never; +type EP_3232 = Path_3232; + +type Val_3232 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3232 } + : T[K] extends object ? { t: 'o'; props: Val_3232 } + : { t: 'u' }; +}; +type EV_3232 = Val_3232; + +interface Registry_32_32 { + entities: Map; + validators: EV_3232; + paths: Set; + merged: DeepMerge_3232; +} + +type CK_3232 = `p32.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_32, Registry_32_32, CK_3232, EP_3232, EV_3232, DeepMerge_3232 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-33.ts new file mode 100644 index 00000000..1a36032e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-33.ts @@ -0,0 +1,50 @@ +// pkg-32/types-33 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3233 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3233 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_33 | null; children: Entity_32_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3233: number; y3233: string; z3233: boolean }; +} + +type Path_3233 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3233}` }[keyof T & string] : never; +type EP_3233 = Path_3233; + +type Val_3233 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3233 } + : T[K] extends object ? { t: 'o'; props: Val_3233 } + : { t: 'u' }; +}; +type EV_3233 = Val_3233; + +interface Registry_32_33 { + entities: Map; + validators: EV_3233; + paths: Set; + merged: DeepMerge_3233; +} + +type CK_3233 = `p32.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_33, Registry_32_33, CK_3233, EP_3233, EV_3233, DeepMerge_3233 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-34.ts new file mode 100644 index 00000000..17ef4c52 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-34.ts @@ -0,0 +1,50 @@ +// pkg-32/types-34 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3234 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3234 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_34 | null; children: Entity_32_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3234: number; y3234: string; z3234: boolean }; +} + +type Path_3234 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3234}` }[keyof T & string] : never; +type EP_3234 = Path_3234; + +type Val_3234 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3234 } + : T[K] extends object ? { t: 'o'; props: Val_3234 } + : { t: 'u' }; +}; +type EV_3234 = Val_3234; + +interface Registry_32_34 { + entities: Map; + validators: EV_3234; + paths: Set; + merged: DeepMerge_3234; +} + +type CK_3234 = `p32.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_34, Registry_32_34, CK_3234, EP_3234, EV_3234, DeepMerge_3234 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-35.ts new file mode 100644 index 00000000..55f6b69f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-35.ts @@ -0,0 +1,50 @@ +// pkg-32/types-35 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3235 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3235 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_35 | null; children: Entity_32_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3235: number; y3235: string; z3235: boolean }; +} + +type Path_3235 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3235}` }[keyof T & string] : never; +type EP_3235 = Path_3235; + +type Val_3235 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3235 } + : T[K] extends object ? { t: 'o'; props: Val_3235 } + : { t: 'u' }; +}; +type EV_3235 = Val_3235; + +interface Registry_32_35 { + entities: Map; + validators: EV_3235; + paths: Set; + merged: DeepMerge_3235; +} + +type CK_3235 = `p32.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_35, Registry_32_35, CK_3235, EP_3235, EV_3235, DeepMerge_3235 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-36.ts new file mode 100644 index 00000000..b5cfbe76 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-36.ts @@ -0,0 +1,50 @@ +// pkg-32/types-36 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3236 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3236 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_36 | null; children: Entity_32_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3236: number; y3236: string; z3236: boolean }; +} + +type Path_3236 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3236}` }[keyof T & string] : never; +type EP_3236 = Path_3236; + +type Val_3236 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3236 } + : T[K] extends object ? { t: 'o'; props: Val_3236 } + : { t: 'u' }; +}; +type EV_3236 = Val_3236; + +interface Registry_32_36 { + entities: Map; + validators: EV_3236; + paths: Set; + merged: DeepMerge_3236; +} + +type CK_3236 = `p32.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_36, Registry_32_36, CK_3236, EP_3236, EV_3236, DeepMerge_3236 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-37.ts new file mode 100644 index 00000000..5cbe3c0a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-37.ts @@ -0,0 +1,50 @@ +// pkg-32/types-37 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3237 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3237 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_37 | null; children: Entity_32_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3237: number; y3237: string; z3237: boolean }; +} + +type Path_3237 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3237}` }[keyof T & string] : never; +type EP_3237 = Path_3237; + +type Val_3237 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3237 } + : T[K] extends object ? { t: 'o'; props: Val_3237 } + : { t: 'u' }; +}; +type EV_3237 = Val_3237; + +interface Registry_32_37 { + entities: Map; + validators: EV_3237; + paths: Set; + merged: DeepMerge_3237; +} + +type CK_3237 = `p32.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_37, Registry_32_37, CK_3237, EP_3237, EV_3237, DeepMerge_3237 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-38.ts new file mode 100644 index 00000000..5680e2dc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-38.ts @@ -0,0 +1,50 @@ +// pkg-32/types-38 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3238 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3238 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_38 | null; children: Entity_32_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3238: number; y3238: string; z3238: boolean }; +} + +type Path_3238 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3238}` }[keyof T & string] : never; +type EP_3238 = Path_3238; + +type Val_3238 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3238 } + : T[K] extends object ? { t: 'o'; props: Val_3238 } + : { t: 'u' }; +}; +type EV_3238 = Val_3238; + +interface Registry_32_38 { + entities: Map; + validators: EV_3238; + paths: Set; + merged: DeepMerge_3238; +} + +type CK_3238 = `p32.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_38, Registry_32_38, CK_3238, EP_3238, EV_3238, DeepMerge_3238 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-39.ts new file mode 100644 index 00000000..3d871734 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-39.ts @@ -0,0 +1,50 @@ +// pkg-32/types-39 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3239 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3239 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_39 | null; children: Entity_32_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3239: number; y3239: string; z3239: boolean }; +} + +type Path_3239 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3239}` }[keyof T & string] : never; +type EP_3239 = Path_3239; + +type Val_3239 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3239 } + : T[K] extends object ? { t: 'o'; props: Val_3239 } + : { t: 'u' }; +}; +type EV_3239 = Val_3239; + +interface Registry_32_39 { + entities: Map; + validators: EV_3239; + paths: Set; + merged: DeepMerge_3239; +} + +type CK_3239 = `p32.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_39, Registry_32_39, CK_3239, EP_3239, EV_3239, DeepMerge_3239 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-40.ts new file mode 100644 index 00000000..b9d186db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-40.ts @@ -0,0 +1,50 @@ +// pkg-32/types-40 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3240 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3240 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_40 | null; children: Entity_32_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3240: number; y3240: string; z3240: boolean }; +} + +type Path_3240 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3240}` }[keyof T & string] : never; +type EP_3240 = Path_3240; + +type Val_3240 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3240 } + : T[K] extends object ? { t: 'o'; props: Val_3240 } + : { t: 'u' }; +}; +type EV_3240 = Val_3240; + +interface Registry_32_40 { + entities: Map; + validators: EV_3240; + paths: Set; + merged: DeepMerge_3240; +} + +type CK_3240 = `p32.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_40, Registry_32_40, CK_3240, EP_3240, EV_3240, DeepMerge_3240 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-41.ts new file mode 100644 index 00000000..e3132fa9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-41.ts @@ -0,0 +1,50 @@ +// pkg-32/types-41 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3241 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3241 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_41 | null; children: Entity_32_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3241: number; y3241: string; z3241: boolean }; +} + +type Path_3241 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3241}` }[keyof T & string] : never; +type EP_3241 = Path_3241; + +type Val_3241 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3241 } + : T[K] extends object ? { t: 'o'; props: Val_3241 } + : { t: 'u' }; +}; +type EV_3241 = Val_3241; + +interface Registry_32_41 { + entities: Map; + validators: EV_3241; + paths: Set; + merged: DeepMerge_3241; +} + +type CK_3241 = `p32.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_41, Registry_32_41, CK_3241, EP_3241, EV_3241, DeepMerge_3241 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-42.ts new file mode 100644 index 00000000..ae419ebd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-42.ts @@ -0,0 +1,50 @@ +// pkg-32/types-42 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3242 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3242 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_42 | null; children: Entity_32_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3242: number; y3242: string; z3242: boolean }; +} + +type Path_3242 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3242}` }[keyof T & string] : never; +type EP_3242 = Path_3242; + +type Val_3242 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3242 } + : T[K] extends object ? { t: 'o'; props: Val_3242 } + : { t: 'u' }; +}; +type EV_3242 = Val_3242; + +interface Registry_32_42 { + entities: Map; + validators: EV_3242; + paths: Set; + merged: DeepMerge_3242; +} + +type CK_3242 = `p32.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_42, Registry_32_42, CK_3242, EP_3242, EV_3242, DeepMerge_3242 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-43.ts new file mode 100644 index 00000000..c9954648 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-43.ts @@ -0,0 +1,50 @@ +// pkg-32/types-43 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3243 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3243 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_43 | null; children: Entity_32_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3243: number; y3243: string; z3243: boolean }; +} + +type Path_3243 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3243}` }[keyof T & string] : never; +type EP_3243 = Path_3243; + +type Val_3243 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3243 } + : T[K] extends object ? { t: 'o'; props: Val_3243 } + : { t: 'u' }; +}; +type EV_3243 = Val_3243; + +interface Registry_32_43 { + entities: Map; + validators: EV_3243; + paths: Set; + merged: DeepMerge_3243; +} + +type CK_3243 = `p32.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_43, Registry_32_43, CK_3243, EP_3243, EV_3243, DeepMerge_3243 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-44.ts new file mode 100644 index 00000000..c692f900 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-44.ts @@ -0,0 +1,50 @@ +// pkg-32/types-44 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3244 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3244 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_44 | null; children: Entity_32_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3244: number; y3244: string; z3244: boolean }; +} + +type Path_3244 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3244}` }[keyof T & string] : never; +type EP_3244 = Path_3244; + +type Val_3244 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3244 } + : T[K] extends object ? { t: 'o'; props: Val_3244 } + : { t: 'u' }; +}; +type EV_3244 = Val_3244; + +interface Registry_32_44 { + entities: Map; + validators: EV_3244; + paths: Set; + merged: DeepMerge_3244; +} + +type CK_3244 = `p32.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_44, Registry_32_44, CK_3244, EP_3244, EV_3244, DeepMerge_3244 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-45.ts new file mode 100644 index 00000000..e9e1049e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-45.ts @@ -0,0 +1,50 @@ +// pkg-32/types-45 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3245 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3245 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_45 | null; children: Entity_32_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3245: number; y3245: string; z3245: boolean }; +} + +type Path_3245 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3245}` }[keyof T & string] : never; +type EP_3245 = Path_3245; + +type Val_3245 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3245 } + : T[K] extends object ? { t: 'o'; props: Val_3245 } + : { t: 'u' }; +}; +type EV_3245 = Val_3245; + +interface Registry_32_45 { + entities: Map; + validators: EV_3245; + paths: Set; + merged: DeepMerge_3245; +} + +type CK_3245 = `p32.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_45, Registry_32_45, CK_3245, EP_3245, EV_3245, DeepMerge_3245 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-46.ts new file mode 100644 index 00000000..5af63b70 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-46.ts @@ -0,0 +1,50 @@ +// pkg-32/types-46 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3246 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3246 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_46 | null; children: Entity_32_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3246: number; y3246: string; z3246: boolean }; +} + +type Path_3246 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3246}` }[keyof T & string] : never; +type EP_3246 = Path_3246; + +type Val_3246 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3246 } + : T[K] extends object ? { t: 'o'; props: Val_3246 } + : { t: 'u' }; +}; +type EV_3246 = Val_3246; + +interface Registry_32_46 { + entities: Map; + validators: EV_3246; + paths: Set; + merged: DeepMerge_3246; +} + +type CK_3246 = `p32.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_46, Registry_32_46, CK_3246, EP_3246, EV_3246, DeepMerge_3246 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-47.ts new file mode 100644 index 00000000..e03c005d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-47.ts @@ -0,0 +1,50 @@ +// pkg-32/types-47 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3247 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3247 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_47 | null; children: Entity_32_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3247: number; y3247: string; z3247: boolean }; +} + +type Path_3247 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3247}` }[keyof T & string] : never; +type EP_3247 = Path_3247; + +type Val_3247 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3247 } + : T[K] extends object ? { t: 'o'; props: Val_3247 } + : { t: 'u' }; +}; +type EV_3247 = Val_3247; + +interface Registry_32_47 { + entities: Map; + validators: EV_3247; + paths: Set; + merged: DeepMerge_3247; +} + +type CK_3247 = `p32.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_47, Registry_32_47, CK_3247, EP_3247, EV_3247, DeepMerge_3247 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-48.ts new file mode 100644 index 00000000..bb430b07 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-48.ts @@ -0,0 +1,50 @@ +// pkg-32/types-48 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3248 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3248 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_48 | null; children: Entity_32_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3248: number; y3248: string; z3248: boolean }; +} + +type Path_3248 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3248}` }[keyof T & string] : never; +type EP_3248 = Path_3248; + +type Val_3248 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3248 } + : T[K] extends object ? { t: 'o'; props: Val_3248 } + : { t: 'u' }; +}; +type EV_3248 = Val_3248; + +interface Registry_32_48 { + entities: Map; + validators: EV_3248; + paths: Set; + merged: DeepMerge_3248; +} + +type CK_3248 = `p32.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_48, Registry_32_48, CK_3248, EP_3248, EV_3248, DeepMerge_3248 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-49.ts new file mode 100644 index 00000000..ec9bd5cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-49.ts @@ -0,0 +1,50 @@ +// pkg-32/types-49 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3249 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3249 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_49 | null; children: Entity_32_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3249: number; y3249: string; z3249: boolean }; +} + +type Path_3249 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3249}` }[keyof T & string] : never; +type EP_3249 = Path_3249; + +type Val_3249 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3249 } + : T[K] extends object ? { t: 'o'; props: Val_3249 } + : { t: 'u' }; +}; +type EV_3249 = Val_3249; + +interface Registry_32_49 { + entities: Map; + validators: EV_3249; + paths: Set; + merged: DeepMerge_3249; +} + +type CK_3249 = `p32.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_49, Registry_32_49, CK_3249, EP_3249, EV_3249, DeepMerge_3249 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-32/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-32/types-50.ts new file mode 100644 index 00000000..431b71d4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-32/types-50.ts @@ -0,0 +1,50 @@ +// pkg-32/types-50 - heavy interconnected types + +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; +import type { Entity_29_01, Registry_29_01 } from '../pkg-29/types-01'; +import type { Entity_29_10, Registry_29_10 } from '../pkg-29/types-10'; +import type { Entity_29_20, Registry_29_20 } from '../pkg-29/types-20'; + +type DeepMerge_3250 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3250 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_32_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_32_50 | null; children: Entity_32_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3250: number; y3250: string; z3250: boolean }; +} + +type Path_3250 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3250}` }[keyof T & string] : never; +type EP_3250 = Path_3250; + +type Val_3250 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3250 } + : T[K] extends object ? { t: 'o'; props: Val_3250 } + : { t: 'u' }; +}; +type EV_3250 = Val_3250; + +interface Registry_32_50 { + entities: Map; + validators: EV_3250; + paths: Set; + merged: DeepMerge_3250; +} + +type CK_3250 = `p32.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_32_50, Registry_32_50, CK_3250, EP_3250, EV_3250, DeepMerge_3250 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-33/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-01.ts new file mode 100644 index 00000000..24263c54 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-01.ts @@ -0,0 +1,50 @@ +// pkg-33/types-01 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3301 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3301 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_01 | null; children: Entity_33_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3301: number; y3301: string; z3301: boolean }; +} + +type Path_3301 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3301}` }[keyof T & string] : never; +type EP_3301 = Path_3301; + +type Val_3301 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3301 } + : T[K] extends object ? { t: 'o'; props: Val_3301 } + : { t: 'u' }; +}; +type EV_3301 = Val_3301; + +interface Registry_33_01 { + entities: Map; + validators: EV_3301; + paths: Set; + merged: DeepMerge_3301; +} + +type CK_3301 = `p33.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_01, Registry_33_01, CK_3301, EP_3301, EV_3301, DeepMerge_3301 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-02.ts new file mode 100644 index 00000000..f79addef --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-02.ts @@ -0,0 +1,50 @@ +// pkg-33/types-02 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3302 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3302 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_02 | null; children: Entity_33_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3302: number; y3302: string; z3302: boolean }; +} + +type Path_3302 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3302}` }[keyof T & string] : never; +type EP_3302 = Path_3302; + +type Val_3302 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3302 } + : T[K] extends object ? { t: 'o'; props: Val_3302 } + : { t: 'u' }; +}; +type EV_3302 = Val_3302; + +interface Registry_33_02 { + entities: Map; + validators: EV_3302; + paths: Set; + merged: DeepMerge_3302; +} + +type CK_3302 = `p33.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_02, Registry_33_02, CK_3302, EP_3302, EV_3302, DeepMerge_3302 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-03.ts new file mode 100644 index 00000000..09ab0319 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-03.ts @@ -0,0 +1,50 @@ +// pkg-33/types-03 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3303 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3303 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_03 | null; children: Entity_33_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3303: number; y3303: string; z3303: boolean }; +} + +type Path_3303 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3303}` }[keyof T & string] : never; +type EP_3303 = Path_3303; + +type Val_3303 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3303 } + : T[K] extends object ? { t: 'o'; props: Val_3303 } + : { t: 'u' }; +}; +type EV_3303 = Val_3303; + +interface Registry_33_03 { + entities: Map; + validators: EV_3303; + paths: Set; + merged: DeepMerge_3303; +} + +type CK_3303 = `p33.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_03, Registry_33_03, CK_3303, EP_3303, EV_3303, DeepMerge_3303 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-04.ts new file mode 100644 index 00000000..645ef267 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-04.ts @@ -0,0 +1,50 @@ +// pkg-33/types-04 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3304 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3304 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_04 | null; children: Entity_33_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3304: number; y3304: string; z3304: boolean }; +} + +type Path_3304 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3304}` }[keyof T & string] : never; +type EP_3304 = Path_3304; + +type Val_3304 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3304 } + : T[K] extends object ? { t: 'o'; props: Val_3304 } + : { t: 'u' }; +}; +type EV_3304 = Val_3304; + +interface Registry_33_04 { + entities: Map; + validators: EV_3304; + paths: Set; + merged: DeepMerge_3304; +} + +type CK_3304 = `p33.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_04, Registry_33_04, CK_3304, EP_3304, EV_3304, DeepMerge_3304 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-05.ts new file mode 100644 index 00000000..a2d29ff1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-05.ts @@ -0,0 +1,50 @@ +// pkg-33/types-05 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3305 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3305 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_05 | null; children: Entity_33_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3305: number; y3305: string; z3305: boolean }; +} + +type Path_3305 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3305}` }[keyof T & string] : never; +type EP_3305 = Path_3305; + +type Val_3305 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3305 } + : T[K] extends object ? { t: 'o'; props: Val_3305 } + : { t: 'u' }; +}; +type EV_3305 = Val_3305; + +interface Registry_33_05 { + entities: Map; + validators: EV_3305; + paths: Set; + merged: DeepMerge_3305; +} + +type CK_3305 = `p33.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_05, Registry_33_05, CK_3305, EP_3305, EV_3305, DeepMerge_3305 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-06.ts new file mode 100644 index 00000000..716d7eee --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-06.ts @@ -0,0 +1,50 @@ +// pkg-33/types-06 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3306 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3306 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_06 | null; children: Entity_33_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3306: number; y3306: string; z3306: boolean }; +} + +type Path_3306 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3306}` }[keyof T & string] : never; +type EP_3306 = Path_3306; + +type Val_3306 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3306 } + : T[K] extends object ? { t: 'o'; props: Val_3306 } + : { t: 'u' }; +}; +type EV_3306 = Val_3306; + +interface Registry_33_06 { + entities: Map; + validators: EV_3306; + paths: Set; + merged: DeepMerge_3306; +} + +type CK_3306 = `p33.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_06, Registry_33_06, CK_3306, EP_3306, EV_3306, DeepMerge_3306 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-07.ts new file mode 100644 index 00000000..d451aa0e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-07.ts @@ -0,0 +1,50 @@ +// pkg-33/types-07 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3307 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3307 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_07 | null; children: Entity_33_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3307: number; y3307: string; z3307: boolean }; +} + +type Path_3307 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3307}` }[keyof T & string] : never; +type EP_3307 = Path_3307; + +type Val_3307 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3307 } + : T[K] extends object ? { t: 'o'; props: Val_3307 } + : { t: 'u' }; +}; +type EV_3307 = Val_3307; + +interface Registry_33_07 { + entities: Map; + validators: EV_3307; + paths: Set; + merged: DeepMerge_3307; +} + +type CK_3307 = `p33.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_07, Registry_33_07, CK_3307, EP_3307, EV_3307, DeepMerge_3307 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-08.ts new file mode 100644 index 00000000..66baacc4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-08.ts @@ -0,0 +1,50 @@ +// pkg-33/types-08 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3308 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3308 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_08 | null; children: Entity_33_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3308: number; y3308: string; z3308: boolean }; +} + +type Path_3308 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3308}` }[keyof T & string] : never; +type EP_3308 = Path_3308; + +type Val_3308 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3308 } + : T[K] extends object ? { t: 'o'; props: Val_3308 } + : { t: 'u' }; +}; +type EV_3308 = Val_3308; + +interface Registry_33_08 { + entities: Map; + validators: EV_3308; + paths: Set; + merged: DeepMerge_3308; +} + +type CK_3308 = `p33.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_08, Registry_33_08, CK_3308, EP_3308, EV_3308, DeepMerge_3308 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-09.ts new file mode 100644 index 00000000..30c34ff0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-09.ts @@ -0,0 +1,50 @@ +// pkg-33/types-09 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3309 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3309 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_09 | null; children: Entity_33_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3309: number; y3309: string; z3309: boolean }; +} + +type Path_3309 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3309}` }[keyof T & string] : never; +type EP_3309 = Path_3309; + +type Val_3309 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3309 } + : T[K] extends object ? { t: 'o'; props: Val_3309 } + : { t: 'u' }; +}; +type EV_3309 = Val_3309; + +interface Registry_33_09 { + entities: Map; + validators: EV_3309; + paths: Set; + merged: DeepMerge_3309; +} + +type CK_3309 = `p33.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_09, Registry_33_09, CK_3309, EP_3309, EV_3309, DeepMerge_3309 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-10.ts new file mode 100644 index 00000000..3774638a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-10.ts @@ -0,0 +1,50 @@ +// pkg-33/types-10 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3310 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3310 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_10 | null; children: Entity_33_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3310: number; y3310: string; z3310: boolean }; +} + +type Path_3310 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3310}` }[keyof T & string] : never; +type EP_3310 = Path_3310; + +type Val_3310 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3310 } + : T[K] extends object ? { t: 'o'; props: Val_3310 } + : { t: 'u' }; +}; +type EV_3310 = Val_3310; + +interface Registry_33_10 { + entities: Map; + validators: EV_3310; + paths: Set; + merged: DeepMerge_3310; +} + +type CK_3310 = `p33.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_10, Registry_33_10, CK_3310, EP_3310, EV_3310, DeepMerge_3310 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-11.ts new file mode 100644 index 00000000..6f9728b9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-11.ts @@ -0,0 +1,50 @@ +// pkg-33/types-11 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3311 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3311 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_11 | null; children: Entity_33_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3311: number; y3311: string; z3311: boolean }; +} + +type Path_3311 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3311}` }[keyof T & string] : never; +type EP_3311 = Path_3311; + +type Val_3311 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3311 } + : T[K] extends object ? { t: 'o'; props: Val_3311 } + : { t: 'u' }; +}; +type EV_3311 = Val_3311; + +interface Registry_33_11 { + entities: Map; + validators: EV_3311; + paths: Set; + merged: DeepMerge_3311; +} + +type CK_3311 = `p33.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_11, Registry_33_11, CK_3311, EP_3311, EV_3311, DeepMerge_3311 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-12.ts new file mode 100644 index 00000000..35c67f3a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-12.ts @@ -0,0 +1,50 @@ +// pkg-33/types-12 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3312 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3312 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_12 | null; children: Entity_33_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3312: number; y3312: string; z3312: boolean }; +} + +type Path_3312 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3312}` }[keyof T & string] : never; +type EP_3312 = Path_3312; + +type Val_3312 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3312 } + : T[K] extends object ? { t: 'o'; props: Val_3312 } + : { t: 'u' }; +}; +type EV_3312 = Val_3312; + +interface Registry_33_12 { + entities: Map; + validators: EV_3312; + paths: Set; + merged: DeepMerge_3312; +} + +type CK_3312 = `p33.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_12, Registry_33_12, CK_3312, EP_3312, EV_3312, DeepMerge_3312 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-13.ts new file mode 100644 index 00000000..8405504b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-13.ts @@ -0,0 +1,50 @@ +// pkg-33/types-13 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3313 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3313 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_13 | null; children: Entity_33_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3313: number; y3313: string; z3313: boolean }; +} + +type Path_3313 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3313}` }[keyof T & string] : never; +type EP_3313 = Path_3313; + +type Val_3313 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3313 } + : T[K] extends object ? { t: 'o'; props: Val_3313 } + : { t: 'u' }; +}; +type EV_3313 = Val_3313; + +interface Registry_33_13 { + entities: Map; + validators: EV_3313; + paths: Set; + merged: DeepMerge_3313; +} + +type CK_3313 = `p33.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_13, Registry_33_13, CK_3313, EP_3313, EV_3313, DeepMerge_3313 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-14.ts new file mode 100644 index 00000000..b521d273 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-14.ts @@ -0,0 +1,50 @@ +// pkg-33/types-14 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3314 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3314 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_14 | null; children: Entity_33_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3314: number; y3314: string; z3314: boolean }; +} + +type Path_3314 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3314}` }[keyof T & string] : never; +type EP_3314 = Path_3314; + +type Val_3314 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3314 } + : T[K] extends object ? { t: 'o'; props: Val_3314 } + : { t: 'u' }; +}; +type EV_3314 = Val_3314; + +interface Registry_33_14 { + entities: Map; + validators: EV_3314; + paths: Set; + merged: DeepMerge_3314; +} + +type CK_3314 = `p33.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_14, Registry_33_14, CK_3314, EP_3314, EV_3314, DeepMerge_3314 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-15.ts new file mode 100644 index 00000000..75eb0661 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-15.ts @@ -0,0 +1,50 @@ +// pkg-33/types-15 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3315 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3315 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_15 | null; children: Entity_33_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3315: number; y3315: string; z3315: boolean }; +} + +type Path_3315 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3315}` }[keyof T & string] : never; +type EP_3315 = Path_3315; + +type Val_3315 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3315 } + : T[K] extends object ? { t: 'o'; props: Val_3315 } + : { t: 'u' }; +}; +type EV_3315 = Val_3315; + +interface Registry_33_15 { + entities: Map; + validators: EV_3315; + paths: Set; + merged: DeepMerge_3315; +} + +type CK_3315 = `p33.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_15, Registry_33_15, CK_3315, EP_3315, EV_3315, DeepMerge_3315 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-16.ts new file mode 100644 index 00000000..4612f611 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-16.ts @@ -0,0 +1,50 @@ +// pkg-33/types-16 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3316 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3316 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_16 | null; children: Entity_33_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3316: number; y3316: string; z3316: boolean }; +} + +type Path_3316 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3316}` }[keyof T & string] : never; +type EP_3316 = Path_3316; + +type Val_3316 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3316 } + : T[K] extends object ? { t: 'o'; props: Val_3316 } + : { t: 'u' }; +}; +type EV_3316 = Val_3316; + +interface Registry_33_16 { + entities: Map; + validators: EV_3316; + paths: Set; + merged: DeepMerge_3316; +} + +type CK_3316 = `p33.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_16, Registry_33_16, CK_3316, EP_3316, EV_3316, DeepMerge_3316 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-17.ts new file mode 100644 index 00000000..f0f63a96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-17.ts @@ -0,0 +1,50 @@ +// pkg-33/types-17 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3317 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3317 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_17 | null; children: Entity_33_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3317: number; y3317: string; z3317: boolean }; +} + +type Path_3317 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3317}` }[keyof T & string] : never; +type EP_3317 = Path_3317; + +type Val_3317 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3317 } + : T[K] extends object ? { t: 'o'; props: Val_3317 } + : { t: 'u' }; +}; +type EV_3317 = Val_3317; + +interface Registry_33_17 { + entities: Map; + validators: EV_3317; + paths: Set; + merged: DeepMerge_3317; +} + +type CK_3317 = `p33.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_17, Registry_33_17, CK_3317, EP_3317, EV_3317, DeepMerge_3317 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-18.ts new file mode 100644 index 00000000..4bd160a3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-18.ts @@ -0,0 +1,50 @@ +// pkg-33/types-18 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3318 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3318 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_18 | null; children: Entity_33_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3318: number; y3318: string; z3318: boolean }; +} + +type Path_3318 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3318}` }[keyof T & string] : never; +type EP_3318 = Path_3318; + +type Val_3318 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3318 } + : T[K] extends object ? { t: 'o'; props: Val_3318 } + : { t: 'u' }; +}; +type EV_3318 = Val_3318; + +interface Registry_33_18 { + entities: Map; + validators: EV_3318; + paths: Set; + merged: DeepMerge_3318; +} + +type CK_3318 = `p33.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_18, Registry_33_18, CK_3318, EP_3318, EV_3318, DeepMerge_3318 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-19.ts new file mode 100644 index 00000000..7ca89eb2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-19.ts @@ -0,0 +1,50 @@ +// pkg-33/types-19 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3319 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3319 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_19 | null; children: Entity_33_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3319: number; y3319: string; z3319: boolean }; +} + +type Path_3319 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3319}` }[keyof T & string] : never; +type EP_3319 = Path_3319; + +type Val_3319 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3319 } + : T[K] extends object ? { t: 'o'; props: Val_3319 } + : { t: 'u' }; +}; +type EV_3319 = Val_3319; + +interface Registry_33_19 { + entities: Map; + validators: EV_3319; + paths: Set; + merged: DeepMerge_3319; +} + +type CK_3319 = `p33.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_19, Registry_33_19, CK_3319, EP_3319, EV_3319, DeepMerge_3319 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-20.ts new file mode 100644 index 00000000..e41646be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-20.ts @@ -0,0 +1,50 @@ +// pkg-33/types-20 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3320 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3320 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_20 | null; children: Entity_33_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3320: number; y3320: string; z3320: boolean }; +} + +type Path_3320 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3320}` }[keyof T & string] : never; +type EP_3320 = Path_3320; + +type Val_3320 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3320 } + : T[K] extends object ? { t: 'o'; props: Val_3320 } + : { t: 'u' }; +}; +type EV_3320 = Val_3320; + +interface Registry_33_20 { + entities: Map; + validators: EV_3320; + paths: Set; + merged: DeepMerge_3320; +} + +type CK_3320 = `p33.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_20, Registry_33_20, CK_3320, EP_3320, EV_3320, DeepMerge_3320 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-21.ts new file mode 100644 index 00000000..eb82c392 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-21.ts @@ -0,0 +1,50 @@ +// pkg-33/types-21 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3321 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3321 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_21 | null; children: Entity_33_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3321: number; y3321: string; z3321: boolean }; +} + +type Path_3321 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3321}` }[keyof T & string] : never; +type EP_3321 = Path_3321; + +type Val_3321 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3321 } + : T[K] extends object ? { t: 'o'; props: Val_3321 } + : { t: 'u' }; +}; +type EV_3321 = Val_3321; + +interface Registry_33_21 { + entities: Map; + validators: EV_3321; + paths: Set; + merged: DeepMerge_3321; +} + +type CK_3321 = `p33.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_21, Registry_33_21, CK_3321, EP_3321, EV_3321, DeepMerge_3321 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-22.ts new file mode 100644 index 00000000..879256e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-22.ts @@ -0,0 +1,50 @@ +// pkg-33/types-22 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3322 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3322 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_22 | null; children: Entity_33_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3322: number; y3322: string; z3322: boolean }; +} + +type Path_3322 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3322}` }[keyof T & string] : never; +type EP_3322 = Path_3322; + +type Val_3322 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3322 } + : T[K] extends object ? { t: 'o'; props: Val_3322 } + : { t: 'u' }; +}; +type EV_3322 = Val_3322; + +interface Registry_33_22 { + entities: Map; + validators: EV_3322; + paths: Set; + merged: DeepMerge_3322; +} + +type CK_3322 = `p33.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_22, Registry_33_22, CK_3322, EP_3322, EV_3322, DeepMerge_3322 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-23.ts new file mode 100644 index 00000000..f2d7643b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-23.ts @@ -0,0 +1,50 @@ +// pkg-33/types-23 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3323 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3323 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_23 | null; children: Entity_33_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3323: number; y3323: string; z3323: boolean }; +} + +type Path_3323 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3323}` }[keyof T & string] : never; +type EP_3323 = Path_3323; + +type Val_3323 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3323 } + : T[K] extends object ? { t: 'o'; props: Val_3323 } + : { t: 'u' }; +}; +type EV_3323 = Val_3323; + +interface Registry_33_23 { + entities: Map; + validators: EV_3323; + paths: Set; + merged: DeepMerge_3323; +} + +type CK_3323 = `p33.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_23, Registry_33_23, CK_3323, EP_3323, EV_3323, DeepMerge_3323 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-24.ts new file mode 100644 index 00000000..d85735f4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-24.ts @@ -0,0 +1,50 @@ +// pkg-33/types-24 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3324 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3324 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_24 | null; children: Entity_33_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3324: number; y3324: string; z3324: boolean }; +} + +type Path_3324 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3324}` }[keyof T & string] : never; +type EP_3324 = Path_3324; + +type Val_3324 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3324 } + : T[K] extends object ? { t: 'o'; props: Val_3324 } + : { t: 'u' }; +}; +type EV_3324 = Val_3324; + +interface Registry_33_24 { + entities: Map; + validators: EV_3324; + paths: Set; + merged: DeepMerge_3324; +} + +type CK_3324 = `p33.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_24, Registry_33_24, CK_3324, EP_3324, EV_3324, DeepMerge_3324 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-25.ts new file mode 100644 index 00000000..6aadafdc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-25.ts @@ -0,0 +1,50 @@ +// pkg-33/types-25 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3325 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3325 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_25 | null; children: Entity_33_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3325: number; y3325: string; z3325: boolean }; +} + +type Path_3325 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3325}` }[keyof T & string] : never; +type EP_3325 = Path_3325; + +type Val_3325 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3325 } + : T[K] extends object ? { t: 'o'; props: Val_3325 } + : { t: 'u' }; +}; +type EV_3325 = Val_3325; + +interface Registry_33_25 { + entities: Map; + validators: EV_3325; + paths: Set; + merged: DeepMerge_3325; +} + +type CK_3325 = `p33.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_25, Registry_33_25, CK_3325, EP_3325, EV_3325, DeepMerge_3325 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-26.ts new file mode 100644 index 00000000..70d744c8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-26.ts @@ -0,0 +1,50 @@ +// pkg-33/types-26 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3326 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3326 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_26 | null; children: Entity_33_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3326: number; y3326: string; z3326: boolean }; +} + +type Path_3326 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3326}` }[keyof T & string] : never; +type EP_3326 = Path_3326; + +type Val_3326 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3326 } + : T[K] extends object ? { t: 'o'; props: Val_3326 } + : { t: 'u' }; +}; +type EV_3326 = Val_3326; + +interface Registry_33_26 { + entities: Map; + validators: EV_3326; + paths: Set; + merged: DeepMerge_3326; +} + +type CK_3326 = `p33.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_26, Registry_33_26, CK_3326, EP_3326, EV_3326, DeepMerge_3326 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-27.ts new file mode 100644 index 00000000..09ac46c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-27.ts @@ -0,0 +1,50 @@ +// pkg-33/types-27 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3327 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3327 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_27 | null; children: Entity_33_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3327: number; y3327: string; z3327: boolean }; +} + +type Path_3327 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3327}` }[keyof T & string] : never; +type EP_3327 = Path_3327; + +type Val_3327 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3327 } + : T[K] extends object ? { t: 'o'; props: Val_3327 } + : { t: 'u' }; +}; +type EV_3327 = Val_3327; + +interface Registry_33_27 { + entities: Map; + validators: EV_3327; + paths: Set; + merged: DeepMerge_3327; +} + +type CK_3327 = `p33.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_27, Registry_33_27, CK_3327, EP_3327, EV_3327, DeepMerge_3327 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-28.ts new file mode 100644 index 00000000..cbfe9fb7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-28.ts @@ -0,0 +1,50 @@ +// pkg-33/types-28 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3328 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3328 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_28 | null; children: Entity_33_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3328: number; y3328: string; z3328: boolean }; +} + +type Path_3328 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3328}` }[keyof T & string] : never; +type EP_3328 = Path_3328; + +type Val_3328 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3328 } + : T[K] extends object ? { t: 'o'; props: Val_3328 } + : { t: 'u' }; +}; +type EV_3328 = Val_3328; + +interface Registry_33_28 { + entities: Map; + validators: EV_3328; + paths: Set; + merged: DeepMerge_3328; +} + +type CK_3328 = `p33.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_28, Registry_33_28, CK_3328, EP_3328, EV_3328, DeepMerge_3328 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-29.ts new file mode 100644 index 00000000..d2fadef0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-29.ts @@ -0,0 +1,50 @@ +// pkg-33/types-29 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3329 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3329 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_29 | null; children: Entity_33_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3329: number; y3329: string; z3329: boolean }; +} + +type Path_3329 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3329}` }[keyof T & string] : never; +type EP_3329 = Path_3329; + +type Val_3329 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3329 } + : T[K] extends object ? { t: 'o'; props: Val_3329 } + : { t: 'u' }; +}; +type EV_3329 = Val_3329; + +interface Registry_33_29 { + entities: Map; + validators: EV_3329; + paths: Set; + merged: DeepMerge_3329; +} + +type CK_3329 = `p33.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_29, Registry_33_29, CK_3329, EP_3329, EV_3329, DeepMerge_3329 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-30.ts new file mode 100644 index 00000000..d407dddc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-30.ts @@ -0,0 +1,50 @@ +// pkg-33/types-30 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3330 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3330 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_30 | null; children: Entity_33_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3330: number; y3330: string; z3330: boolean }; +} + +type Path_3330 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3330}` }[keyof T & string] : never; +type EP_3330 = Path_3330; + +type Val_3330 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3330 } + : T[K] extends object ? { t: 'o'; props: Val_3330 } + : { t: 'u' }; +}; +type EV_3330 = Val_3330; + +interface Registry_33_30 { + entities: Map; + validators: EV_3330; + paths: Set; + merged: DeepMerge_3330; +} + +type CK_3330 = `p33.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_30, Registry_33_30, CK_3330, EP_3330, EV_3330, DeepMerge_3330 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-31.ts new file mode 100644 index 00000000..b506cd88 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-31.ts @@ -0,0 +1,50 @@ +// pkg-33/types-31 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3331 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3331 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_31 | null; children: Entity_33_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3331: number; y3331: string; z3331: boolean }; +} + +type Path_3331 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3331}` }[keyof T & string] : never; +type EP_3331 = Path_3331; + +type Val_3331 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3331 } + : T[K] extends object ? { t: 'o'; props: Val_3331 } + : { t: 'u' }; +}; +type EV_3331 = Val_3331; + +interface Registry_33_31 { + entities: Map; + validators: EV_3331; + paths: Set; + merged: DeepMerge_3331; +} + +type CK_3331 = `p33.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_31, Registry_33_31, CK_3331, EP_3331, EV_3331, DeepMerge_3331 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-32.ts new file mode 100644 index 00000000..0846bea6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-32.ts @@ -0,0 +1,50 @@ +// pkg-33/types-32 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3332 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3332 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_32 | null; children: Entity_33_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3332: number; y3332: string; z3332: boolean }; +} + +type Path_3332 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3332}` }[keyof T & string] : never; +type EP_3332 = Path_3332; + +type Val_3332 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3332 } + : T[K] extends object ? { t: 'o'; props: Val_3332 } + : { t: 'u' }; +}; +type EV_3332 = Val_3332; + +interface Registry_33_32 { + entities: Map; + validators: EV_3332; + paths: Set; + merged: DeepMerge_3332; +} + +type CK_3332 = `p33.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_32, Registry_33_32, CK_3332, EP_3332, EV_3332, DeepMerge_3332 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-33.ts new file mode 100644 index 00000000..354f8630 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-33.ts @@ -0,0 +1,50 @@ +// pkg-33/types-33 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3333 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3333 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_33 | null; children: Entity_33_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3333: number; y3333: string; z3333: boolean }; +} + +type Path_3333 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3333}` }[keyof T & string] : never; +type EP_3333 = Path_3333; + +type Val_3333 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3333 } + : T[K] extends object ? { t: 'o'; props: Val_3333 } + : { t: 'u' }; +}; +type EV_3333 = Val_3333; + +interface Registry_33_33 { + entities: Map; + validators: EV_3333; + paths: Set; + merged: DeepMerge_3333; +} + +type CK_3333 = `p33.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_33, Registry_33_33, CK_3333, EP_3333, EV_3333, DeepMerge_3333 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-34.ts new file mode 100644 index 00000000..60ef003f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-34.ts @@ -0,0 +1,50 @@ +// pkg-33/types-34 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3334 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3334 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_34 | null; children: Entity_33_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3334: number; y3334: string; z3334: boolean }; +} + +type Path_3334 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3334}` }[keyof T & string] : never; +type EP_3334 = Path_3334; + +type Val_3334 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3334 } + : T[K] extends object ? { t: 'o'; props: Val_3334 } + : { t: 'u' }; +}; +type EV_3334 = Val_3334; + +interface Registry_33_34 { + entities: Map; + validators: EV_3334; + paths: Set; + merged: DeepMerge_3334; +} + +type CK_3334 = `p33.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_34, Registry_33_34, CK_3334, EP_3334, EV_3334, DeepMerge_3334 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-35.ts new file mode 100644 index 00000000..7e092650 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-35.ts @@ -0,0 +1,50 @@ +// pkg-33/types-35 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3335 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3335 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_35 | null; children: Entity_33_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3335: number; y3335: string; z3335: boolean }; +} + +type Path_3335 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3335}` }[keyof T & string] : never; +type EP_3335 = Path_3335; + +type Val_3335 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3335 } + : T[K] extends object ? { t: 'o'; props: Val_3335 } + : { t: 'u' }; +}; +type EV_3335 = Val_3335; + +interface Registry_33_35 { + entities: Map; + validators: EV_3335; + paths: Set; + merged: DeepMerge_3335; +} + +type CK_3335 = `p33.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_35, Registry_33_35, CK_3335, EP_3335, EV_3335, DeepMerge_3335 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-36.ts new file mode 100644 index 00000000..7e1aa7aa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-36.ts @@ -0,0 +1,50 @@ +// pkg-33/types-36 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3336 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3336 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_36 | null; children: Entity_33_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3336: number; y3336: string; z3336: boolean }; +} + +type Path_3336 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3336}` }[keyof T & string] : never; +type EP_3336 = Path_3336; + +type Val_3336 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3336 } + : T[K] extends object ? { t: 'o'; props: Val_3336 } + : { t: 'u' }; +}; +type EV_3336 = Val_3336; + +interface Registry_33_36 { + entities: Map; + validators: EV_3336; + paths: Set; + merged: DeepMerge_3336; +} + +type CK_3336 = `p33.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_36, Registry_33_36, CK_3336, EP_3336, EV_3336, DeepMerge_3336 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-37.ts new file mode 100644 index 00000000..25edc8fe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-37.ts @@ -0,0 +1,50 @@ +// pkg-33/types-37 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3337 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3337 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_37 | null; children: Entity_33_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3337: number; y3337: string; z3337: boolean }; +} + +type Path_3337 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3337}` }[keyof T & string] : never; +type EP_3337 = Path_3337; + +type Val_3337 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3337 } + : T[K] extends object ? { t: 'o'; props: Val_3337 } + : { t: 'u' }; +}; +type EV_3337 = Val_3337; + +interface Registry_33_37 { + entities: Map; + validators: EV_3337; + paths: Set; + merged: DeepMerge_3337; +} + +type CK_3337 = `p33.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_37, Registry_33_37, CK_3337, EP_3337, EV_3337, DeepMerge_3337 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-38.ts new file mode 100644 index 00000000..6a03a3c5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-38.ts @@ -0,0 +1,50 @@ +// pkg-33/types-38 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3338 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3338 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_38 | null; children: Entity_33_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3338: number; y3338: string; z3338: boolean }; +} + +type Path_3338 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3338}` }[keyof T & string] : never; +type EP_3338 = Path_3338; + +type Val_3338 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3338 } + : T[K] extends object ? { t: 'o'; props: Val_3338 } + : { t: 'u' }; +}; +type EV_3338 = Val_3338; + +interface Registry_33_38 { + entities: Map; + validators: EV_3338; + paths: Set; + merged: DeepMerge_3338; +} + +type CK_3338 = `p33.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_38, Registry_33_38, CK_3338, EP_3338, EV_3338, DeepMerge_3338 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-39.ts new file mode 100644 index 00000000..2c900ab4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-39.ts @@ -0,0 +1,50 @@ +// pkg-33/types-39 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3339 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3339 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_39 | null; children: Entity_33_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3339: number; y3339: string; z3339: boolean }; +} + +type Path_3339 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3339}` }[keyof T & string] : never; +type EP_3339 = Path_3339; + +type Val_3339 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3339 } + : T[K] extends object ? { t: 'o'; props: Val_3339 } + : { t: 'u' }; +}; +type EV_3339 = Val_3339; + +interface Registry_33_39 { + entities: Map; + validators: EV_3339; + paths: Set; + merged: DeepMerge_3339; +} + +type CK_3339 = `p33.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_39, Registry_33_39, CK_3339, EP_3339, EV_3339, DeepMerge_3339 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-40.ts new file mode 100644 index 00000000..d8ed4191 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-40.ts @@ -0,0 +1,50 @@ +// pkg-33/types-40 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3340 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3340 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_40 | null; children: Entity_33_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3340: number; y3340: string; z3340: boolean }; +} + +type Path_3340 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3340}` }[keyof T & string] : never; +type EP_3340 = Path_3340; + +type Val_3340 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3340 } + : T[K] extends object ? { t: 'o'; props: Val_3340 } + : { t: 'u' }; +}; +type EV_3340 = Val_3340; + +interface Registry_33_40 { + entities: Map; + validators: EV_3340; + paths: Set; + merged: DeepMerge_3340; +} + +type CK_3340 = `p33.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_40, Registry_33_40, CK_3340, EP_3340, EV_3340, DeepMerge_3340 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-41.ts new file mode 100644 index 00000000..db4cdafd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-41.ts @@ -0,0 +1,50 @@ +// pkg-33/types-41 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3341 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3341 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_41 | null; children: Entity_33_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3341: number; y3341: string; z3341: boolean }; +} + +type Path_3341 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3341}` }[keyof T & string] : never; +type EP_3341 = Path_3341; + +type Val_3341 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3341 } + : T[K] extends object ? { t: 'o'; props: Val_3341 } + : { t: 'u' }; +}; +type EV_3341 = Val_3341; + +interface Registry_33_41 { + entities: Map; + validators: EV_3341; + paths: Set; + merged: DeepMerge_3341; +} + +type CK_3341 = `p33.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_41, Registry_33_41, CK_3341, EP_3341, EV_3341, DeepMerge_3341 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-42.ts new file mode 100644 index 00000000..fbee365a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-42.ts @@ -0,0 +1,50 @@ +// pkg-33/types-42 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3342 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3342 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_42 | null; children: Entity_33_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3342: number; y3342: string; z3342: boolean }; +} + +type Path_3342 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3342}` }[keyof T & string] : never; +type EP_3342 = Path_3342; + +type Val_3342 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3342 } + : T[K] extends object ? { t: 'o'; props: Val_3342 } + : { t: 'u' }; +}; +type EV_3342 = Val_3342; + +interface Registry_33_42 { + entities: Map; + validators: EV_3342; + paths: Set; + merged: DeepMerge_3342; +} + +type CK_3342 = `p33.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_42, Registry_33_42, CK_3342, EP_3342, EV_3342, DeepMerge_3342 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-43.ts new file mode 100644 index 00000000..8cebb389 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-43.ts @@ -0,0 +1,50 @@ +// pkg-33/types-43 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3343 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3343 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_43 | null; children: Entity_33_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3343: number; y3343: string; z3343: boolean }; +} + +type Path_3343 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3343}` }[keyof T & string] : never; +type EP_3343 = Path_3343; + +type Val_3343 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3343 } + : T[K] extends object ? { t: 'o'; props: Val_3343 } + : { t: 'u' }; +}; +type EV_3343 = Val_3343; + +interface Registry_33_43 { + entities: Map; + validators: EV_3343; + paths: Set; + merged: DeepMerge_3343; +} + +type CK_3343 = `p33.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_43, Registry_33_43, CK_3343, EP_3343, EV_3343, DeepMerge_3343 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-44.ts new file mode 100644 index 00000000..196fefb5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-44.ts @@ -0,0 +1,50 @@ +// pkg-33/types-44 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3344 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3344 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_44 | null; children: Entity_33_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3344: number; y3344: string; z3344: boolean }; +} + +type Path_3344 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3344}` }[keyof T & string] : never; +type EP_3344 = Path_3344; + +type Val_3344 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3344 } + : T[K] extends object ? { t: 'o'; props: Val_3344 } + : { t: 'u' }; +}; +type EV_3344 = Val_3344; + +interface Registry_33_44 { + entities: Map; + validators: EV_3344; + paths: Set; + merged: DeepMerge_3344; +} + +type CK_3344 = `p33.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_44, Registry_33_44, CK_3344, EP_3344, EV_3344, DeepMerge_3344 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-45.ts new file mode 100644 index 00000000..504471af --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-45.ts @@ -0,0 +1,50 @@ +// pkg-33/types-45 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3345 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3345 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_45 | null; children: Entity_33_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3345: number; y3345: string; z3345: boolean }; +} + +type Path_3345 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3345}` }[keyof T & string] : never; +type EP_3345 = Path_3345; + +type Val_3345 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3345 } + : T[K] extends object ? { t: 'o'; props: Val_3345 } + : { t: 'u' }; +}; +type EV_3345 = Val_3345; + +interface Registry_33_45 { + entities: Map; + validators: EV_3345; + paths: Set; + merged: DeepMerge_3345; +} + +type CK_3345 = `p33.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_45, Registry_33_45, CK_3345, EP_3345, EV_3345, DeepMerge_3345 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-46.ts new file mode 100644 index 00000000..0d910ba1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-46.ts @@ -0,0 +1,50 @@ +// pkg-33/types-46 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3346 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3346 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_46 | null; children: Entity_33_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3346: number; y3346: string; z3346: boolean }; +} + +type Path_3346 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3346}` }[keyof T & string] : never; +type EP_3346 = Path_3346; + +type Val_3346 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3346 } + : T[K] extends object ? { t: 'o'; props: Val_3346 } + : { t: 'u' }; +}; +type EV_3346 = Val_3346; + +interface Registry_33_46 { + entities: Map; + validators: EV_3346; + paths: Set; + merged: DeepMerge_3346; +} + +type CK_3346 = `p33.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_46, Registry_33_46, CK_3346, EP_3346, EV_3346, DeepMerge_3346 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-47.ts new file mode 100644 index 00000000..33867d3b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-47.ts @@ -0,0 +1,50 @@ +// pkg-33/types-47 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3347 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3347 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_47 | null; children: Entity_33_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3347: number; y3347: string; z3347: boolean }; +} + +type Path_3347 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3347}` }[keyof T & string] : never; +type EP_3347 = Path_3347; + +type Val_3347 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3347 } + : T[K] extends object ? { t: 'o'; props: Val_3347 } + : { t: 'u' }; +}; +type EV_3347 = Val_3347; + +interface Registry_33_47 { + entities: Map; + validators: EV_3347; + paths: Set; + merged: DeepMerge_3347; +} + +type CK_3347 = `p33.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_47, Registry_33_47, CK_3347, EP_3347, EV_3347, DeepMerge_3347 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-48.ts new file mode 100644 index 00000000..c455071f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-48.ts @@ -0,0 +1,50 @@ +// pkg-33/types-48 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3348 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3348 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_48 | null; children: Entity_33_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3348: number; y3348: string; z3348: boolean }; +} + +type Path_3348 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3348}` }[keyof T & string] : never; +type EP_3348 = Path_3348; + +type Val_3348 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3348 } + : T[K] extends object ? { t: 'o'; props: Val_3348 } + : { t: 'u' }; +}; +type EV_3348 = Val_3348; + +interface Registry_33_48 { + entities: Map; + validators: EV_3348; + paths: Set; + merged: DeepMerge_3348; +} + +type CK_3348 = `p33.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_48, Registry_33_48, CK_3348, EP_3348, EV_3348, DeepMerge_3348 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-49.ts new file mode 100644 index 00000000..dae35440 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-49.ts @@ -0,0 +1,50 @@ +// pkg-33/types-49 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3349 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3349 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_49 | null; children: Entity_33_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3349: number; y3349: string; z3349: boolean }; +} + +type Path_3349 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3349}` }[keyof T & string] : never; +type EP_3349 = Path_3349; + +type Val_3349 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3349 } + : T[K] extends object ? { t: 'o'; props: Val_3349 } + : { t: 'u' }; +}; +type EV_3349 = Val_3349; + +interface Registry_33_49 { + entities: Map; + validators: EV_3349; + paths: Set; + merged: DeepMerge_3349; +} + +type CK_3349 = `p33.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_49, Registry_33_49, CK_3349, EP_3349, EV_3349, DeepMerge_3349 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-33/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-33/types-50.ts new file mode 100644 index 00000000..ce1ba133 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-33/types-50.ts @@ -0,0 +1,50 @@ +// pkg-33/types-50 - heavy interconnected types + +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; +import type { Entity_30_01, Registry_30_01 } from '../pkg-30/types-01'; +import type { Entity_30_10, Registry_30_10 } from '../pkg-30/types-10'; +import type { Entity_30_20, Registry_30_20 } from '../pkg-30/types-20'; + +type DeepMerge_3350 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3350 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_33_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_33_50 | null; children: Entity_33_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3350: number; y3350: string; z3350: boolean }; +} + +type Path_3350 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3350}` }[keyof T & string] : never; +type EP_3350 = Path_3350; + +type Val_3350 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3350 } + : T[K] extends object ? { t: 'o'; props: Val_3350 } + : { t: 'u' }; +}; +type EV_3350 = Val_3350; + +interface Registry_33_50 { + entities: Map; + validators: EV_3350; + paths: Set; + merged: DeepMerge_3350; +} + +type CK_3350 = `p33.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_33_50, Registry_33_50, CK_3350, EP_3350, EV_3350, DeepMerge_3350 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-34/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-01.ts new file mode 100644 index 00000000..f854602d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-01.ts @@ -0,0 +1,50 @@ +// pkg-34/types-01 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3401 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3401 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_01 | null; children: Entity_34_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3401: number; y3401: string; z3401: boolean }; +} + +type Path_3401 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3401}` }[keyof T & string] : never; +type EP_3401 = Path_3401; + +type Val_3401 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3401 } + : T[K] extends object ? { t: 'o'; props: Val_3401 } + : { t: 'u' }; +}; +type EV_3401 = Val_3401; + +interface Registry_34_01 { + entities: Map; + validators: EV_3401; + paths: Set; + merged: DeepMerge_3401; +} + +type CK_3401 = `p34.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_01, Registry_34_01, CK_3401, EP_3401, EV_3401, DeepMerge_3401 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-02.ts new file mode 100644 index 00000000..2fe8a087 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-02.ts @@ -0,0 +1,50 @@ +// pkg-34/types-02 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3402 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3402 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_02 | null; children: Entity_34_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3402: number; y3402: string; z3402: boolean }; +} + +type Path_3402 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3402}` }[keyof T & string] : never; +type EP_3402 = Path_3402; + +type Val_3402 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3402 } + : T[K] extends object ? { t: 'o'; props: Val_3402 } + : { t: 'u' }; +}; +type EV_3402 = Val_3402; + +interface Registry_34_02 { + entities: Map; + validators: EV_3402; + paths: Set; + merged: DeepMerge_3402; +} + +type CK_3402 = `p34.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_02, Registry_34_02, CK_3402, EP_3402, EV_3402, DeepMerge_3402 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-03.ts new file mode 100644 index 00000000..a6129b25 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-03.ts @@ -0,0 +1,50 @@ +// pkg-34/types-03 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3403 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3403 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_03 | null; children: Entity_34_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3403: number; y3403: string; z3403: boolean }; +} + +type Path_3403 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3403}` }[keyof T & string] : never; +type EP_3403 = Path_3403; + +type Val_3403 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3403 } + : T[K] extends object ? { t: 'o'; props: Val_3403 } + : { t: 'u' }; +}; +type EV_3403 = Val_3403; + +interface Registry_34_03 { + entities: Map; + validators: EV_3403; + paths: Set; + merged: DeepMerge_3403; +} + +type CK_3403 = `p34.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_03, Registry_34_03, CK_3403, EP_3403, EV_3403, DeepMerge_3403 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-04.ts new file mode 100644 index 00000000..59269d78 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-04.ts @@ -0,0 +1,50 @@ +// pkg-34/types-04 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3404 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3404 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_04 | null; children: Entity_34_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3404: number; y3404: string; z3404: boolean }; +} + +type Path_3404 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3404}` }[keyof T & string] : never; +type EP_3404 = Path_3404; + +type Val_3404 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3404 } + : T[K] extends object ? { t: 'o'; props: Val_3404 } + : { t: 'u' }; +}; +type EV_3404 = Val_3404; + +interface Registry_34_04 { + entities: Map; + validators: EV_3404; + paths: Set; + merged: DeepMerge_3404; +} + +type CK_3404 = `p34.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_04, Registry_34_04, CK_3404, EP_3404, EV_3404, DeepMerge_3404 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-05.ts new file mode 100644 index 00000000..e7a2c87e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-05.ts @@ -0,0 +1,50 @@ +// pkg-34/types-05 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3405 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3405 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_05 | null; children: Entity_34_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3405: number; y3405: string; z3405: boolean }; +} + +type Path_3405 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3405}` }[keyof T & string] : never; +type EP_3405 = Path_3405; + +type Val_3405 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3405 } + : T[K] extends object ? { t: 'o'; props: Val_3405 } + : { t: 'u' }; +}; +type EV_3405 = Val_3405; + +interface Registry_34_05 { + entities: Map; + validators: EV_3405; + paths: Set; + merged: DeepMerge_3405; +} + +type CK_3405 = `p34.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_05, Registry_34_05, CK_3405, EP_3405, EV_3405, DeepMerge_3405 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-06.ts new file mode 100644 index 00000000..7332d26a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-06.ts @@ -0,0 +1,50 @@ +// pkg-34/types-06 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3406 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3406 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_06 | null; children: Entity_34_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3406: number; y3406: string; z3406: boolean }; +} + +type Path_3406 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3406}` }[keyof T & string] : never; +type EP_3406 = Path_3406; + +type Val_3406 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3406 } + : T[K] extends object ? { t: 'o'; props: Val_3406 } + : { t: 'u' }; +}; +type EV_3406 = Val_3406; + +interface Registry_34_06 { + entities: Map; + validators: EV_3406; + paths: Set; + merged: DeepMerge_3406; +} + +type CK_3406 = `p34.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_06, Registry_34_06, CK_3406, EP_3406, EV_3406, DeepMerge_3406 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-07.ts new file mode 100644 index 00000000..4bc14416 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-07.ts @@ -0,0 +1,50 @@ +// pkg-34/types-07 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3407 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3407 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_07 | null; children: Entity_34_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3407: number; y3407: string; z3407: boolean }; +} + +type Path_3407 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3407}` }[keyof T & string] : never; +type EP_3407 = Path_3407; + +type Val_3407 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3407 } + : T[K] extends object ? { t: 'o'; props: Val_3407 } + : { t: 'u' }; +}; +type EV_3407 = Val_3407; + +interface Registry_34_07 { + entities: Map; + validators: EV_3407; + paths: Set; + merged: DeepMerge_3407; +} + +type CK_3407 = `p34.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_07, Registry_34_07, CK_3407, EP_3407, EV_3407, DeepMerge_3407 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-08.ts new file mode 100644 index 00000000..88a8cca2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-08.ts @@ -0,0 +1,50 @@ +// pkg-34/types-08 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3408 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3408 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_08 | null; children: Entity_34_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3408: number; y3408: string; z3408: boolean }; +} + +type Path_3408 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3408}` }[keyof T & string] : never; +type EP_3408 = Path_3408; + +type Val_3408 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3408 } + : T[K] extends object ? { t: 'o'; props: Val_3408 } + : { t: 'u' }; +}; +type EV_3408 = Val_3408; + +interface Registry_34_08 { + entities: Map; + validators: EV_3408; + paths: Set; + merged: DeepMerge_3408; +} + +type CK_3408 = `p34.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_08, Registry_34_08, CK_3408, EP_3408, EV_3408, DeepMerge_3408 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-09.ts new file mode 100644 index 00000000..27a8341c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-09.ts @@ -0,0 +1,50 @@ +// pkg-34/types-09 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3409 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3409 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_09 | null; children: Entity_34_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3409: number; y3409: string; z3409: boolean }; +} + +type Path_3409 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3409}` }[keyof T & string] : never; +type EP_3409 = Path_3409; + +type Val_3409 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3409 } + : T[K] extends object ? { t: 'o'; props: Val_3409 } + : { t: 'u' }; +}; +type EV_3409 = Val_3409; + +interface Registry_34_09 { + entities: Map; + validators: EV_3409; + paths: Set; + merged: DeepMerge_3409; +} + +type CK_3409 = `p34.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_09, Registry_34_09, CK_3409, EP_3409, EV_3409, DeepMerge_3409 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-10.ts new file mode 100644 index 00000000..6be6ae91 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-10.ts @@ -0,0 +1,50 @@ +// pkg-34/types-10 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3410 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3410 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_10 | null; children: Entity_34_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3410: number; y3410: string; z3410: boolean }; +} + +type Path_3410 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3410}` }[keyof T & string] : never; +type EP_3410 = Path_3410; + +type Val_3410 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3410 } + : T[K] extends object ? { t: 'o'; props: Val_3410 } + : { t: 'u' }; +}; +type EV_3410 = Val_3410; + +interface Registry_34_10 { + entities: Map; + validators: EV_3410; + paths: Set; + merged: DeepMerge_3410; +} + +type CK_3410 = `p34.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_10, Registry_34_10, CK_3410, EP_3410, EV_3410, DeepMerge_3410 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-11.ts new file mode 100644 index 00000000..505cb52e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-11.ts @@ -0,0 +1,50 @@ +// pkg-34/types-11 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3411 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3411 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_11 | null; children: Entity_34_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3411: number; y3411: string; z3411: boolean }; +} + +type Path_3411 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3411}` }[keyof T & string] : never; +type EP_3411 = Path_3411; + +type Val_3411 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3411 } + : T[K] extends object ? { t: 'o'; props: Val_3411 } + : { t: 'u' }; +}; +type EV_3411 = Val_3411; + +interface Registry_34_11 { + entities: Map; + validators: EV_3411; + paths: Set; + merged: DeepMerge_3411; +} + +type CK_3411 = `p34.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_11, Registry_34_11, CK_3411, EP_3411, EV_3411, DeepMerge_3411 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-12.ts new file mode 100644 index 00000000..3eafbfca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-12.ts @@ -0,0 +1,50 @@ +// pkg-34/types-12 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3412 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3412 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_12 | null; children: Entity_34_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3412: number; y3412: string; z3412: boolean }; +} + +type Path_3412 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3412}` }[keyof T & string] : never; +type EP_3412 = Path_3412; + +type Val_3412 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3412 } + : T[K] extends object ? { t: 'o'; props: Val_3412 } + : { t: 'u' }; +}; +type EV_3412 = Val_3412; + +interface Registry_34_12 { + entities: Map; + validators: EV_3412; + paths: Set; + merged: DeepMerge_3412; +} + +type CK_3412 = `p34.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_12, Registry_34_12, CK_3412, EP_3412, EV_3412, DeepMerge_3412 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-13.ts new file mode 100644 index 00000000..7d663510 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-13.ts @@ -0,0 +1,50 @@ +// pkg-34/types-13 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3413 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3413 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_13 | null; children: Entity_34_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3413: number; y3413: string; z3413: boolean }; +} + +type Path_3413 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3413}` }[keyof T & string] : never; +type EP_3413 = Path_3413; + +type Val_3413 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3413 } + : T[K] extends object ? { t: 'o'; props: Val_3413 } + : { t: 'u' }; +}; +type EV_3413 = Val_3413; + +interface Registry_34_13 { + entities: Map; + validators: EV_3413; + paths: Set; + merged: DeepMerge_3413; +} + +type CK_3413 = `p34.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_13, Registry_34_13, CK_3413, EP_3413, EV_3413, DeepMerge_3413 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-14.ts new file mode 100644 index 00000000..c4912192 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-14.ts @@ -0,0 +1,50 @@ +// pkg-34/types-14 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3414 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3414 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_14 | null; children: Entity_34_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3414: number; y3414: string; z3414: boolean }; +} + +type Path_3414 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3414}` }[keyof T & string] : never; +type EP_3414 = Path_3414; + +type Val_3414 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3414 } + : T[K] extends object ? { t: 'o'; props: Val_3414 } + : { t: 'u' }; +}; +type EV_3414 = Val_3414; + +interface Registry_34_14 { + entities: Map; + validators: EV_3414; + paths: Set; + merged: DeepMerge_3414; +} + +type CK_3414 = `p34.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_14, Registry_34_14, CK_3414, EP_3414, EV_3414, DeepMerge_3414 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-15.ts new file mode 100644 index 00000000..78e27dd7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-15.ts @@ -0,0 +1,50 @@ +// pkg-34/types-15 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3415 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3415 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_15 | null; children: Entity_34_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3415: number; y3415: string; z3415: boolean }; +} + +type Path_3415 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3415}` }[keyof T & string] : never; +type EP_3415 = Path_3415; + +type Val_3415 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3415 } + : T[K] extends object ? { t: 'o'; props: Val_3415 } + : { t: 'u' }; +}; +type EV_3415 = Val_3415; + +interface Registry_34_15 { + entities: Map; + validators: EV_3415; + paths: Set; + merged: DeepMerge_3415; +} + +type CK_3415 = `p34.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_15, Registry_34_15, CK_3415, EP_3415, EV_3415, DeepMerge_3415 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-16.ts new file mode 100644 index 00000000..588f8665 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-16.ts @@ -0,0 +1,50 @@ +// pkg-34/types-16 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3416 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3416 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_16 | null; children: Entity_34_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3416: number; y3416: string; z3416: boolean }; +} + +type Path_3416 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3416}` }[keyof T & string] : never; +type EP_3416 = Path_3416; + +type Val_3416 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3416 } + : T[K] extends object ? { t: 'o'; props: Val_3416 } + : { t: 'u' }; +}; +type EV_3416 = Val_3416; + +interface Registry_34_16 { + entities: Map; + validators: EV_3416; + paths: Set; + merged: DeepMerge_3416; +} + +type CK_3416 = `p34.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_16, Registry_34_16, CK_3416, EP_3416, EV_3416, DeepMerge_3416 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-17.ts new file mode 100644 index 00000000..fc57a090 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-17.ts @@ -0,0 +1,50 @@ +// pkg-34/types-17 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3417 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3417 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_17 | null; children: Entity_34_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3417: number; y3417: string; z3417: boolean }; +} + +type Path_3417 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3417}` }[keyof T & string] : never; +type EP_3417 = Path_3417; + +type Val_3417 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3417 } + : T[K] extends object ? { t: 'o'; props: Val_3417 } + : { t: 'u' }; +}; +type EV_3417 = Val_3417; + +interface Registry_34_17 { + entities: Map; + validators: EV_3417; + paths: Set; + merged: DeepMerge_3417; +} + +type CK_3417 = `p34.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_17, Registry_34_17, CK_3417, EP_3417, EV_3417, DeepMerge_3417 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-18.ts new file mode 100644 index 00000000..09b75200 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-18.ts @@ -0,0 +1,50 @@ +// pkg-34/types-18 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3418 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3418 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_18 | null; children: Entity_34_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3418: number; y3418: string; z3418: boolean }; +} + +type Path_3418 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3418}` }[keyof T & string] : never; +type EP_3418 = Path_3418; + +type Val_3418 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3418 } + : T[K] extends object ? { t: 'o'; props: Val_3418 } + : { t: 'u' }; +}; +type EV_3418 = Val_3418; + +interface Registry_34_18 { + entities: Map; + validators: EV_3418; + paths: Set; + merged: DeepMerge_3418; +} + +type CK_3418 = `p34.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_18, Registry_34_18, CK_3418, EP_3418, EV_3418, DeepMerge_3418 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-19.ts new file mode 100644 index 00000000..bf478206 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-19.ts @@ -0,0 +1,50 @@ +// pkg-34/types-19 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3419 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3419 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_19 | null; children: Entity_34_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3419: number; y3419: string; z3419: boolean }; +} + +type Path_3419 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3419}` }[keyof T & string] : never; +type EP_3419 = Path_3419; + +type Val_3419 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3419 } + : T[K] extends object ? { t: 'o'; props: Val_3419 } + : { t: 'u' }; +}; +type EV_3419 = Val_3419; + +interface Registry_34_19 { + entities: Map; + validators: EV_3419; + paths: Set; + merged: DeepMerge_3419; +} + +type CK_3419 = `p34.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_19, Registry_34_19, CK_3419, EP_3419, EV_3419, DeepMerge_3419 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-20.ts new file mode 100644 index 00000000..41127e22 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-20.ts @@ -0,0 +1,50 @@ +// pkg-34/types-20 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3420 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3420 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_20 | null; children: Entity_34_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3420: number; y3420: string; z3420: boolean }; +} + +type Path_3420 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3420}` }[keyof T & string] : never; +type EP_3420 = Path_3420; + +type Val_3420 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3420 } + : T[K] extends object ? { t: 'o'; props: Val_3420 } + : { t: 'u' }; +}; +type EV_3420 = Val_3420; + +interface Registry_34_20 { + entities: Map; + validators: EV_3420; + paths: Set; + merged: DeepMerge_3420; +} + +type CK_3420 = `p34.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_20, Registry_34_20, CK_3420, EP_3420, EV_3420, DeepMerge_3420 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-21.ts new file mode 100644 index 00000000..3c57c9f8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-21.ts @@ -0,0 +1,50 @@ +// pkg-34/types-21 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3421 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3421 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_21 | null; children: Entity_34_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3421: number; y3421: string; z3421: boolean }; +} + +type Path_3421 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3421}` }[keyof T & string] : never; +type EP_3421 = Path_3421; + +type Val_3421 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3421 } + : T[K] extends object ? { t: 'o'; props: Val_3421 } + : { t: 'u' }; +}; +type EV_3421 = Val_3421; + +interface Registry_34_21 { + entities: Map; + validators: EV_3421; + paths: Set; + merged: DeepMerge_3421; +} + +type CK_3421 = `p34.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_21, Registry_34_21, CK_3421, EP_3421, EV_3421, DeepMerge_3421 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-22.ts new file mode 100644 index 00000000..f4b9ae47 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-22.ts @@ -0,0 +1,50 @@ +// pkg-34/types-22 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3422 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3422 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_22 | null; children: Entity_34_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3422: number; y3422: string; z3422: boolean }; +} + +type Path_3422 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3422}` }[keyof T & string] : never; +type EP_3422 = Path_3422; + +type Val_3422 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3422 } + : T[K] extends object ? { t: 'o'; props: Val_3422 } + : { t: 'u' }; +}; +type EV_3422 = Val_3422; + +interface Registry_34_22 { + entities: Map; + validators: EV_3422; + paths: Set; + merged: DeepMerge_3422; +} + +type CK_3422 = `p34.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_22, Registry_34_22, CK_3422, EP_3422, EV_3422, DeepMerge_3422 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-23.ts new file mode 100644 index 00000000..08fee4b3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-23.ts @@ -0,0 +1,50 @@ +// pkg-34/types-23 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3423 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3423 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_23 | null; children: Entity_34_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3423: number; y3423: string; z3423: boolean }; +} + +type Path_3423 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3423}` }[keyof T & string] : never; +type EP_3423 = Path_3423; + +type Val_3423 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3423 } + : T[K] extends object ? { t: 'o'; props: Val_3423 } + : { t: 'u' }; +}; +type EV_3423 = Val_3423; + +interface Registry_34_23 { + entities: Map; + validators: EV_3423; + paths: Set; + merged: DeepMerge_3423; +} + +type CK_3423 = `p34.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_23, Registry_34_23, CK_3423, EP_3423, EV_3423, DeepMerge_3423 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-24.ts new file mode 100644 index 00000000..91454ea0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-24.ts @@ -0,0 +1,50 @@ +// pkg-34/types-24 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3424 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3424 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_24 | null; children: Entity_34_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3424: number; y3424: string; z3424: boolean }; +} + +type Path_3424 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3424}` }[keyof T & string] : never; +type EP_3424 = Path_3424; + +type Val_3424 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3424 } + : T[K] extends object ? { t: 'o'; props: Val_3424 } + : { t: 'u' }; +}; +type EV_3424 = Val_3424; + +interface Registry_34_24 { + entities: Map; + validators: EV_3424; + paths: Set; + merged: DeepMerge_3424; +} + +type CK_3424 = `p34.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_24, Registry_34_24, CK_3424, EP_3424, EV_3424, DeepMerge_3424 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-25.ts new file mode 100644 index 00000000..279c2997 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-25.ts @@ -0,0 +1,50 @@ +// pkg-34/types-25 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3425 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3425 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_25 | null; children: Entity_34_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3425: number; y3425: string; z3425: boolean }; +} + +type Path_3425 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3425}` }[keyof T & string] : never; +type EP_3425 = Path_3425; + +type Val_3425 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3425 } + : T[K] extends object ? { t: 'o'; props: Val_3425 } + : { t: 'u' }; +}; +type EV_3425 = Val_3425; + +interface Registry_34_25 { + entities: Map; + validators: EV_3425; + paths: Set; + merged: DeepMerge_3425; +} + +type CK_3425 = `p34.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_25, Registry_34_25, CK_3425, EP_3425, EV_3425, DeepMerge_3425 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-26.ts new file mode 100644 index 00000000..4378be4d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-26.ts @@ -0,0 +1,50 @@ +// pkg-34/types-26 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3426 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3426 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_26 | null; children: Entity_34_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3426: number; y3426: string; z3426: boolean }; +} + +type Path_3426 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3426}` }[keyof T & string] : never; +type EP_3426 = Path_3426; + +type Val_3426 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3426 } + : T[K] extends object ? { t: 'o'; props: Val_3426 } + : { t: 'u' }; +}; +type EV_3426 = Val_3426; + +interface Registry_34_26 { + entities: Map; + validators: EV_3426; + paths: Set; + merged: DeepMerge_3426; +} + +type CK_3426 = `p34.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_26, Registry_34_26, CK_3426, EP_3426, EV_3426, DeepMerge_3426 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-27.ts new file mode 100644 index 00000000..327b01af --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-27.ts @@ -0,0 +1,50 @@ +// pkg-34/types-27 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3427 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3427 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_27 | null; children: Entity_34_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3427: number; y3427: string; z3427: boolean }; +} + +type Path_3427 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3427}` }[keyof T & string] : never; +type EP_3427 = Path_3427; + +type Val_3427 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3427 } + : T[K] extends object ? { t: 'o'; props: Val_3427 } + : { t: 'u' }; +}; +type EV_3427 = Val_3427; + +interface Registry_34_27 { + entities: Map; + validators: EV_3427; + paths: Set; + merged: DeepMerge_3427; +} + +type CK_3427 = `p34.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_27, Registry_34_27, CK_3427, EP_3427, EV_3427, DeepMerge_3427 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-28.ts new file mode 100644 index 00000000..d47d0287 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-28.ts @@ -0,0 +1,50 @@ +// pkg-34/types-28 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3428 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3428 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_28 | null; children: Entity_34_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3428: number; y3428: string; z3428: boolean }; +} + +type Path_3428 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3428}` }[keyof T & string] : never; +type EP_3428 = Path_3428; + +type Val_3428 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3428 } + : T[K] extends object ? { t: 'o'; props: Val_3428 } + : { t: 'u' }; +}; +type EV_3428 = Val_3428; + +interface Registry_34_28 { + entities: Map; + validators: EV_3428; + paths: Set; + merged: DeepMerge_3428; +} + +type CK_3428 = `p34.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_28, Registry_34_28, CK_3428, EP_3428, EV_3428, DeepMerge_3428 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-29.ts new file mode 100644 index 00000000..a514a211 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-29.ts @@ -0,0 +1,50 @@ +// pkg-34/types-29 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3429 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3429 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_29 | null; children: Entity_34_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3429: number; y3429: string; z3429: boolean }; +} + +type Path_3429 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3429}` }[keyof T & string] : never; +type EP_3429 = Path_3429; + +type Val_3429 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3429 } + : T[K] extends object ? { t: 'o'; props: Val_3429 } + : { t: 'u' }; +}; +type EV_3429 = Val_3429; + +interface Registry_34_29 { + entities: Map; + validators: EV_3429; + paths: Set; + merged: DeepMerge_3429; +} + +type CK_3429 = `p34.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_29, Registry_34_29, CK_3429, EP_3429, EV_3429, DeepMerge_3429 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-30.ts new file mode 100644 index 00000000..4c06eb51 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-30.ts @@ -0,0 +1,50 @@ +// pkg-34/types-30 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3430 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3430 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_30 | null; children: Entity_34_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3430: number; y3430: string; z3430: boolean }; +} + +type Path_3430 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3430}` }[keyof T & string] : never; +type EP_3430 = Path_3430; + +type Val_3430 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3430 } + : T[K] extends object ? { t: 'o'; props: Val_3430 } + : { t: 'u' }; +}; +type EV_3430 = Val_3430; + +interface Registry_34_30 { + entities: Map; + validators: EV_3430; + paths: Set; + merged: DeepMerge_3430; +} + +type CK_3430 = `p34.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_30, Registry_34_30, CK_3430, EP_3430, EV_3430, DeepMerge_3430 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-31.ts new file mode 100644 index 00000000..75dc5c29 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-31.ts @@ -0,0 +1,50 @@ +// pkg-34/types-31 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3431 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3431 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_31 | null; children: Entity_34_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3431: number; y3431: string; z3431: boolean }; +} + +type Path_3431 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3431}` }[keyof T & string] : never; +type EP_3431 = Path_3431; + +type Val_3431 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3431 } + : T[K] extends object ? { t: 'o'; props: Val_3431 } + : { t: 'u' }; +}; +type EV_3431 = Val_3431; + +interface Registry_34_31 { + entities: Map; + validators: EV_3431; + paths: Set; + merged: DeepMerge_3431; +} + +type CK_3431 = `p34.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_31, Registry_34_31, CK_3431, EP_3431, EV_3431, DeepMerge_3431 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-32.ts new file mode 100644 index 00000000..d5b8c1fb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-32.ts @@ -0,0 +1,50 @@ +// pkg-34/types-32 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3432 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3432 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_32 | null; children: Entity_34_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3432: number; y3432: string; z3432: boolean }; +} + +type Path_3432 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3432}` }[keyof T & string] : never; +type EP_3432 = Path_3432; + +type Val_3432 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3432 } + : T[K] extends object ? { t: 'o'; props: Val_3432 } + : { t: 'u' }; +}; +type EV_3432 = Val_3432; + +interface Registry_34_32 { + entities: Map; + validators: EV_3432; + paths: Set; + merged: DeepMerge_3432; +} + +type CK_3432 = `p34.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_32, Registry_34_32, CK_3432, EP_3432, EV_3432, DeepMerge_3432 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-33.ts new file mode 100644 index 00000000..c5125ade --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-33.ts @@ -0,0 +1,50 @@ +// pkg-34/types-33 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3433 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3433 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_33 | null; children: Entity_34_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3433: number; y3433: string; z3433: boolean }; +} + +type Path_3433 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3433}` }[keyof T & string] : never; +type EP_3433 = Path_3433; + +type Val_3433 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3433 } + : T[K] extends object ? { t: 'o'; props: Val_3433 } + : { t: 'u' }; +}; +type EV_3433 = Val_3433; + +interface Registry_34_33 { + entities: Map; + validators: EV_3433; + paths: Set; + merged: DeepMerge_3433; +} + +type CK_3433 = `p34.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_33, Registry_34_33, CK_3433, EP_3433, EV_3433, DeepMerge_3433 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-34.ts new file mode 100644 index 00000000..cd32cf10 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-34.ts @@ -0,0 +1,50 @@ +// pkg-34/types-34 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3434 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3434 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_34 | null; children: Entity_34_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3434: number; y3434: string; z3434: boolean }; +} + +type Path_3434 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3434}` }[keyof T & string] : never; +type EP_3434 = Path_3434; + +type Val_3434 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3434 } + : T[K] extends object ? { t: 'o'; props: Val_3434 } + : { t: 'u' }; +}; +type EV_3434 = Val_3434; + +interface Registry_34_34 { + entities: Map; + validators: EV_3434; + paths: Set; + merged: DeepMerge_3434; +} + +type CK_3434 = `p34.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_34, Registry_34_34, CK_3434, EP_3434, EV_3434, DeepMerge_3434 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-35.ts new file mode 100644 index 00000000..6ff04953 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-35.ts @@ -0,0 +1,50 @@ +// pkg-34/types-35 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3435 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3435 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_35 | null; children: Entity_34_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3435: number; y3435: string; z3435: boolean }; +} + +type Path_3435 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3435}` }[keyof T & string] : never; +type EP_3435 = Path_3435; + +type Val_3435 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3435 } + : T[K] extends object ? { t: 'o'; props: Val_3435 } + : { t: 'u' }; +}; +type EV_3435 = Val_3435; + +interface Registry_34_35 { + entities: Map; + validators: EV_3435; + paths: Set; + merged: DeepMerge_3435; +} + +type CK_3435 = `p34.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_35, Registry_34_35, CK_3435, EP_3435, EV_3435, DeepMerge_3435 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-36.ts new file mode 100644 index 00000000..cb411cef --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-36.ts @@ -0,0 +1,50 @@ +// pkg-34/types-36 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3436 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3436 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_36 | null; children: Entity_34_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3436: number; y3436: string; z3436: boolean }; +} + +type Path_3436 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3436}` }[keyof T & string] : never; +type EP_3436 = Path_3436; + +type Val_3436 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3436 } + : T[K] extends object ? { t: 'o'; props: Val_3436 } + : { t: 'u' }; +}; +type EV_3436 = Val_3436; + +interface Registry_34_36 { + entities: Map; + validators: EV_3436; + paths: Set; + merged: DeepMerge_3436; +} + +type CK_3436 = `p34.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_36, Registry_34_36, CK_3436, EP_3436, EV_3436, DeepMerge_3436 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-37.ts new file mode 100644 index 00000000..fe236d7b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-37.ts @@ -0,0 +1,50 @@ +// pkg-34/types-37 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3437 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3437 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_37 | null; children: Entity_34_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3437: number; y3437: string; z3437: boolean }; +} + +type Path_3437 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3437}` }[keyof T & string] : never; +type EP_3437 = Path_3437; + +type Val_3437 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3437 } + : T[K] extends object ? { t: 'o'; props: Val_3437 } + : { t: 'u' }; +}; +type EV_3437 = Val_3437; + +interface Registry_34_37 { + entities: Map; + validators: EV_3437; + paths: Set; + merged: DeepMerge_3437; +} + +type CK_3437 = `p34.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_37, Registry_34_37, CK_3437, EP_3437, EV_3437, DeepMerge_3437 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-38.ts new file mode 100644 index 00000000..f5b14e72 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-38.ts @@ -0,0 +1,50 @@ +// pkg-34/types-38 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3438 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3438 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_38 | null; children: Entity_34_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3438: number; y3438: string; z3438: boolean }; +} + +type Path_3438 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3438}` }[keyof T & string] : never; +type EP_3438 = Path_3438; + +type Val_3438 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3438 } + : T[K] extends object ? { t: 'o'; props: Val_3438 } + : { t: 'u' }; +}; +type EV_3438 = Val_3438; + +interface Registry_34_38 { + entities: Map; + validators: EV_3438; + paths: Set; + merged: DeepMerge_3438; +} + +type CK_3438 = `p34.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_38, Registry_34_38, CK_3438, EP_3438, EV_3438, DeepMerge_3438 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-39.ts new file mode 100644 index 00000000..731db0dc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-39.ts @@ -0,0 +1,50 @@ +// pkg-34/types-39 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3439 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3439 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_39 | null; children: Entity_34_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3439: number; y3439: string; z3439: boolean }; +} + +type Path_3439 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3439}` }[keyof T & string] : never; +type EP_3439 = Path_3439; + +type Val_3439 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3439 } + : T[K] extends object ? { t: 'o'; props: Val_3439 } + : { t: 'u' }; +}; +type EV_3439 = Val_3439; + +interface Registry_34_39 { + entities: Map; + validators: EV_3439; + paths: Set; + merged: DeepMerge_3439; +} + +type CK_3439 = `p34.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_39, Registry_34_39, CK_3439, EP_3439, EV_3439, DeepMerge_3439 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-40.ts new file mode 100644 index 00000000..477c6931 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-40.ts @@ -0,0 +1,50 @@ +// pkg-34/types-40 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3440 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3440 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_40 | null; children: Entity_34_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3440: number; y3440: string; z3440: boolean }; +} + +type Path_3440 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3440}` }[keyof T & string] : never; +type EP_3440 = Path_3440; + +type Val_3440 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3440 } + : T[K] extends object ? { t: 'o'; props: Val_3440 } + : { t: 'u' }; +}; +type EV_3440 = Val_3440; + +interface Registry_34_40 { + entities: Map; + validators: EV_3440; + paths: Set; + merged: DeepMerge_3440; +} + +type CK_3440 = `p34.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_40, Registry_34_40, CK_3440, EP_3440, EV_3440, DeepMerge_3440 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-41.ts new file mode 100644 index 00000000..251d2938 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-41.ts @@ -0,0 +1,50 @@ +// pkg-34/types-41 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3441 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3441 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_41 | null; children: Entity_34_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3441: number; y3441: string; z3441: boolean }; +} + +type Path_3441 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3441}` }[keyof T & string] : never; +type EP_3441 = Path_3441; + +type Val_3441 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3441 } + : T[K] extends object ? { t: 'o'; props: Val_3441 } + : { t: 'u' }; +}; +type EV_3441 = Val_3441; + +interface Registry_34_41 { + entities: Map; + validators: EV_3441; + paths: Set; + merged: DeepMerge_3441; +} + +type CK_3441 = `p34.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_41, Registry_34_41, CK_3441, EP_3441, EV_3441, DeepMerge_3441 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-42.ts new file mode 100644 index 00000000..ebed4c8d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-42.ts @@ -0,0 +1,50 @@ +// pkg-34/types-42 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3442 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3442 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_42 | null; children: Entity_34_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3442: number; y3442: string; z3442: boolean }; +} + +type Path_3442 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3442}` }[keyof T & string] : never; +type EP_3442 = Path_3442; + +type Val_3442 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3442 } + : T[K] extends object ? { t: 'o'; props: Val_3442 } + : { t: 'u' }; +}; +type EV_3442 = Val_3442; + +interface Registry_34_42 { + entities: Map; + validators: EV_3442; + paths: Set; + merged: DeepMerge_3442; +} + +type CK_3442 = `p34.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_42, Registry_34_42, CK_3442, EP_3442, EV_3442, DeepMerge_3442 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-43.ts new file mode 100644 index 00000000..f4bae699 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-43.ts @@ -0,0 +1,50 @@ +// pkg-34/types-43 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3443 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3443 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_43 | null; children: Entity_34_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3443: number; y3443: string; z3443: boolean }; +} + +type Path_3443 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3443}` }[keyof T & string] : never; +type EP_3443 = Path_3443; + +type Val_3443 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3443 } + : T[K] extends object ? { t: 'o'; props: Val_3443 } + : { t: 'u' }; +}; +type EV_3443 = Val_3443; + +interface Registry_34_43 { + entities: Map; + validators: EV_3443; + paths: Set; + merged: DeepMerge_3443; +} + +type CK_3443 = `p34.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_43, Registry_34_43, CK_3443, EP_3443, EV_3443, DeepMerge_3443 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-44.ts new file mode 100644 index 00000000..7e367a33 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-44.ts @@ -0,0 +1,50 @@ +// pkg-34/types-44 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3444 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3444 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_44 | null; children: Entity_34_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3444: number; y3444: string; z3444: boolean }; +} + +type Path_3444 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3444}` }[keyof T & string] : never; +type EP_3444 = Path_3444; + +type Val_3444 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3444 } + : T[K] extends object ? { t: 'o'; props: Val_3444 } + : { t: 'u' }; +}; +type EV_3444 = Val_3444; + +interface Registry_34_44 { + entities: Map; + validators: EV_3444; + paths: Set; + merged: DeepMerge_3444; +} + +type CK_3444 = `p34.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_44, Registry_34_44, CK_3444, EP_3444, EV_3444, DeepMerge_3444 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-45.ts new file mode 100644 index 00000000..c8b56342 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-45.ts @@ -0,0 +1,50 @@ +// pkg-34/types-45 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3445 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3445 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_45 | null; children: Entity_34_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3445: number; y3445: string; z3445: boolean }; +} + +type Path_3445 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3445}` }[keyof T & string] : never; +type EP_3445 = Path_3445; + +type Val_3445 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3445 } + : T[K] extends object ? { t: 'o'; props: Val_3445 } + : { t: 'u' }; +}; +type EV_3445 = Val_3445; + +interface Registry_34_45 { + entities: Map; + validators: EV_3445; + paths: Set; + merged: DeepMerge_3445; +} + +type CK_3445 = `p34.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_45, Registry_34_45, CK_3445, EP_3445, EV_3445, DeepMerge_3445 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-46.ts new file mode 100644 index 00000000..15482272 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-46.ts @@ -0,0 +1,50 @@ +// pkg-34/types-46 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3446 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3446 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_46 | null; children: Entity_34_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3446: number; y3446: string; z3446: boolean }; +} + +type Path_3446 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3446}` }[keyof T & string] : never; +type EP_3446 = Path_3446; + +type Val_3446 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3446 } + : T[K] extends object ? { t: 'o'; props: Val_3446 } + : { t: 'u' }; +}; +type EV_3446 = Val_3446; + +interface Registry_34_46 { + entities: Map; + validators: EV_3446; + paths: Set; + merged: DeepMerge_3446; +} + +type CK_3446 = `p34.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_46, Registry_34_46, CK_3446, EP_3446, EV_3446, DeepMerge_3446 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-47.ts new file mode 100644 index 00000000..22afd3f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-47.ts @@ -0,0 +1,50 @@ +// pkg-34/types-47 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3447 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3447 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_47 | null; children: Entity_34_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3447: number; y3447: string; z3447: boolean }; +} + +type Path_3447 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3447}` }[keyof T & string] : never; +type EP_3447 = Path_3447; + +type Val_3447 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3447 } + : T[K] extends object ? { t: 'o'; props: Val_3447 } + : { t: 'u' }; +}; +type EV_3447 = Val_3447; + +interface Registry_34_47 { + entities: Map; + validators: EV_3447; + paths: Set; + merged: DeepMerge_3447; +} + +type CK_3447 = `p34.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_47, Registry_34_47, CK_3447, EP_3447, EV_3447, DeepMerge_3447 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-48.ts new file mode 100644 index 00000000..306f7950 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-48.ts @@ -0,0 +1,50 @@ +// pkg-34/types-48 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3448 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3448 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_48 | null; children: Entity_34_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3448: number; y3448: string; z3448: boolean }; +} + +type Path_3448 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3448}` }[keyof T & string] : never; +type EP_3448 = Path_3448; + +type Val_3448 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3448 } + : T[K] extends object ? { t: 'o'; props: Val_3448 } + : { t: 'u' }; +}; +type EV_3448 = Val_3448; + +interface Registry_34_48 { + entities: Map; + validators: EV_3448; + paths: Set; + merged: DeepMerge_3448; +} + +type CK_3448 = `p34.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_48, Registry_34_48, CK_3448, EP_3448, EV_3448, DeepMerge_3448 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-49.ts new file mode 100644 index 00000000..b17a133e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-49.ts @@ -0,0 +1,50 @@ +// pkg-34/types-49 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3449 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3449 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_49 | null; children: Entity_34_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3449: number; y3449: string; z3449: boolean }; +} + +type Path_3449 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3449}` }[keyof T & string] : never; +type EP_3449 = Path_3449; + +type Val_3449 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3449 } + : T[K] extends object ? { t: 'o'; props: Val_3449 } + : { t: 'u' }; +}; +type EV_3449 = Val_3449; + +interface Registry_34_49 { + entities: Map; + validators: EV_3449; + paths: Set; + merged: DeepMerge_3449; +} + +type CK_3449 = `p34.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_49, Registry_34_49, CK_3449, EP_3449, EV_3449, DeepMerge_3449 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-34/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-34/types-50.ts new file mode 100644 index 00000000..2ed20ae7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-34/types-50.ts @@ -0,0 +1,50 @@ +// pkg-34/types-50 - heavy interconnected types + +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; +import type { Entity_31_01, Registry_31_01 } from '../pkg-31/types-01'; +import type { Entity_31_10, Registry_31_10 } from '../pkg-31/types-10'; +import type { Entity_31_20, Registry_31_20 } from '../pkg-31/types-20'; + +type DeepMerge_3450 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3450 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_34_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_34_50 | null; children: Entity_34_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3450: number; y3450: string; z3450: boolean }; +} + +type Path_3450 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3450}` }[keyof T & string] : never; +type EP_3450 = Path_3450; + +type Val_3450 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3450 } + : T[K] extends object ? { t: 'o'; props: Val_3450 } + : { t: 'u' }; +}; +type EV_3450 = Val_3450; + +interface Registry_34_50 { + entities: Map; + validators: EV_3450; + paths: Set; + merged: DeepMerge_3450; +} + +type CK_3450 = `p34.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_34_50, Registry_34_50, CK_3450, EP_3450, EV_3450, DeepMerge_3450 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-35/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-01.ts new file mode 100644 index 00000000..1bc3a9d1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-01.ts @@ -0,0 +1,50 @@ +// pkg-35/types-01 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3501 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3501 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_01 | null; children: Entity_35_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3501: number; y3501: string; z3501: boolean }; +} + +type Path_3501 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3501}` }[keyof T & string] : never; +type EP_3501 = Path_3501; + +type Val_3501 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3501 } + : T[K] extends object ? { t: 'o'; props: Val_3501 } + : { t: 'u' }; +}; +type EV_3501 = Val_3501; + +interface Registry_35_01 { + entities: Map; + validators: EV_3501; + paths: Set; + merged: DeepMerge_3501; +} + +type CK_3501 = `p35.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_01, Registry_35_01, CK_3501, EP_3501, EV_3501, DeepMerge_3501 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-02.ts new file mode 100644 index 00000000..126c9992 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-02.ts @@ -0,0 +1,50 @@ +// pkg-35/types-02 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3502 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3502 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_02 | null; children: Entity_35_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3502: number; y3502: string; z3502: boolean }; +} + +type Path_3502 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3502}` }[keyof T & string] : never; +type EP_3502 = Path_3502; + +type Val_3502 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3502 } + : T[K] extends object ? { t: 'o'; props: Val_3502 } + : { t: 'u' }; +}; +type EV_3502 = Val_3502; + +interface Registry_35_02 { + entities: Map; + validators: EV_3502; + paths: Set; + merged: DeepMerge_3502; +} + +type CK_3502 = `p35.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_02, Registry_35_02, CK_3502, EP_3502, EV_3502, DeepMerge_3502 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-03.ts new file mode 100644 index 00000000..c2be3ee9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-03.ts @@ -0,0 +1,50 @@ +// pkg-35/types-03 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3503 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3503 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_03 | null; children: Entity_35_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3503: number; y3503: string; z3503: boolean }; +} + +type Path_3503 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3503}` }[keyof T & string] : never; +type EP_3503 = Path_3503; + +type Val_3503 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3503 } + : T[K] extends object ? { t: 'o'; props: Val_3503 } + : { t: 'u' }; +}; +type EV_3503 = Val_3503; + +interface Registry_35_03 { + entities: Map; + validators: EV_3503; + paths: Set; + merged: DeepMerge_3503; +} + +type CK_3503 = `p35.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_03, Registry_35_03, CK_3503, EP_3503, EV_3503, DeepMerge_3503 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-04.ts new file mode 100644 index 00000000..649c8db0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-04.ts @@ -0,0 +1,50 @@ +// pkg-35/types-04 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3504 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3504 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_04 | null; children: Entity_35_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3504: number; y3504: string; z3504: boolean }; +} + +type Path_3504 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3504}` }[keyof T & string] : never; +type EP_3504 = Path_3504; + +type Val_3504 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3504 } + : T[K] extends object ? { t: 'o'; props: Val_3504 } + : { t: 'u' }; +}; +type EV_3504 = Val_3504; + +interface Registry_35_04 { + entities: Map; + validators: EV_3504; + paths: Set; + merged: DeepMerge_3504; +} + +type CK_3504 = `p35.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_04, Registry_35_04, CK_3504, EP_3504, EV_3504, DeepMerge_3504 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-05.ts new file mode 100644 index 00000000..34c1ad38 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-05.ts @@ -0,0 +1,50 @@ +// pkg-35/types-05 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3505 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3505 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_05 | null; children: Entity_35_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3505: number; y3505: string; z3505: boolean }; +} + +type Path_3505 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3505}` }[keyof T & string] : never; +type EP_3505 = Path_3505; + +type Val_3505 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3505 } + : T[K] extends object ? { t: 'o'; props: Val_3505 } + : { t: 'u' }; +}; +type EV_3505 = Val_3505; + +interface Registry_35_05 { + entities: Map; + validators: EV_3505; + paths: Set; + merged: DeepMerge_3505; +} + +type CK_3505 = `p35.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_05, Registry_35_05, CK_3505, EP_3505, EV_3505, DeepMerge_3505 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-06.ts new file mode 100644 index 00000000..58336afe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-06.ts @@ -0,0 +1,50 @@ +// pkg-35/types-06 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3506 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3506 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_06 | null; children: Entity_35_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3506: number; y3506: string; z3506: boolean }; +} + +type Path_3506 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3506}` }[keyof T & string] : never; +type EP_3506 = Path_3506; + +type Val_3506 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3506 } + : T[K] extends object ? { t: 'o'; props: Val_3506 } + : { t: 'u' }; +}; +type EV_3506 = Val_3506; + +interface Registry_35_06 { + entities: Map; + validators: EV_3506; + paths: Set; + merged: DeepMerge_3506; +} + +type CK_3506 = `p35.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_06, Registry_35_06, CK_3506, EP_3506, EV_3506, DeepMerge_3506 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-07.ts new file mode 100644 index 00000000..2ee3c3e1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-07.ts @@ -0,0 +1,50 @@ +// pkg-35/types-07 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3507 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3507 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_07 | null; children: Entity_35_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3507: number; y3507: string; z3507: boolean }; +} + +type Path_3507 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3507}` }[keyof T & string] : never; +type EP_3507 = Path_3507; + +type Val_3507 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3507 } + : T[K] extends object ? { t: 'o'; props: Val_3507 } + : { t: 'u' }; +}; +type EV_3507 = Val_3507; + +interface Registry_35_07 { + entities: Map; + validators: EV_3507; + paths: Set; + merged: DeepMerge_3507; +} + +type CK_3507 = `p35.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_07, Registry_35_07, CK_3507, EP_3507, EV_3507, DeepMerge_3507 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-08.ts new file mode 100644 index 00000000..795577ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-08.ts @@ -0,0 +1,50 @@ +// pkg-35/types-08 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3508 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3508 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_08 | null; children: Entity_35_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3508: number; y3508: string; z3508: boolean }; +} + +type Path_3508 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3508}` }[keyof T & string] : never; +type EP_3508 = Path_3508; + +type Val_3508 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3508 } + : T[K] extends object ? { t: 'o'; props: Val_3508 } + : { t: 'u' }; +}; +type EV_3508 = Val_3508; + +interface Registry_35_08 { + entities: Map; + validators: EV_3508; + paths: Set; + merged: DeepMerge_3508; +} + +type CK_3508 = `p35.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_08, Registry_35_08, CK_3508, EP_3508, EV_3508, DeepMerge_3508 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-09.ts new file mode 100644 index 00000000..e3363850 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-09.ts @@ -0,0 +1,50 @@ +// pkg-35/types-09 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3509 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3509 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_09 | null; children: Entity_35_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3509: number; y3509: string; z3509: boolean }; +} + +type Path_3509 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3509}` }[keyof T & string] : never; +type EP_3509 = Path_3509; + +type Val_3509 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3509 } + : T[K] extends object ? { t: 'o'; props: Val_3509 } + : { t: 'u' }; +}; +type EV_3509 = Val_3509; + +interface Registry_35_09 { + entities: Map; + validators: EV_3509; + paths: Set; + merged: DeepMerge_3509; +} + +type CK_3509 = `p35.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_09, Registry_35_09, CK_3509, EP_3509, EV_3509, DeepMerge_3509 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-10.ts new file mode 100644 index 00000000..f60aa1ef --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-10.ts @@ -0,0 +1,50 @@ +// pkg-35/types-10 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3510 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3510 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_10 | null; children: Entity_35_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3510: number; y3510: string; z3510: boolean }; +} + +type Path_3510 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3510}` }[keyof T & string] : never; +type EP_3510 = Path_3510; + +type Val_3510 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3510 } + : T[K] extends object ? { t: 'o'; props: Val_3510 } + : { t: 'u' }; +}; +type EV_3510 = Val_3510; + +interface Registry_35_10 { + entities: Map; + validators: EV_3510; + paths: Set; + merged: DeepMerge_3510; +} + +type CK_3510 = `p35.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_10, Registry_35_10, CK_3510, EP_3510, EV_3510, DeepMerge_3510 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-11.ts new file mode 100644 index 00000000..a5717425 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-11.ts @@ -0,0 +1,50 @@ +// pkg-35/types-11 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3511 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3511 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_11 | null; children: Entity_35_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3511: number; y3511: string; z3511: boolean }; +} + +type Path_3511 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3511}` }[keyof T & string] : never; +type EP_3511 = Path_3511; + +type Val_3511 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3511 } + : T[K] extends object ? { t: 'o'; props: Val_3511 } + : { t: 'u' }; +}; +type EV_3511 = Val_3511; + +interface Registry_35_11 { + entities: Map; + validators: EV_3511; + paths: Set; + merged: DeepMerge_3511; +} + +type CK_3511 = `p35.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_11, Registry_35_11, CK_3511, EP_3511, EV_3511, DeepMerge_3511 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-12.ts new file mode 100644 index 00000000..4258ae3a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-12.ts @@ -0,0 +1,50 @@ +// pkg-35/types-12 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3512 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3512 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_12 | null; children: Entity_35_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3512: number; y3512: string; z3512: boolean }; +} + +type Path_3512 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3512}` }[keyof T & string] : never; +type EP_3512 = Path_3512; + +type Val_3512 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3512 } + : T[K] extends object ? { t: 'o'; props: Val_3512 } + : { t: 'u' }; +}; +type EV_3512 = Val_3512; + +interface Registry_35_12 { + entities: Map; + validators: EV_3512; + paths: Set; + merged: DeepMerge_3512; +} + +type CK_3512 = `p35.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_12, Registry_35_12, CK_3512, EP_3512, EV_3512, DeepMerge_3512 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-13.ts new file mode 100644 index 00000000..7bfa9350 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-13.ts @@ -0,0 +1,50 @@ +// pkg-35/types-13 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3513 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3513 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_13 | null; children: Entity_35_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3513: number; y3513: string; z3513: boolean }; +} + +type Path_3513 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3513}` }[keyof T & string] : never; +type EP_3513 = Path_3513; + +type Val_3513 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3513 } + : T[K] extends object ? { t: 'o'; props: Val_3513 } + : { t: 'u' }; +}; +type EV_3513 = Val_3513; + +interface Registry_35_13 { + entities: Map; + validators: EV_3513; + paths: Set; + merged: DeepMerge_3513; +} + +type CK_3513 = `p35.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_13, Registry_35_13, CK_3513, EP_3513, EV_3513, DeepMerge_3513 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-14.ts new file mode 100644 index 00000000..8deaefd1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-14.ts @@ -0,0 +1,50 @@ +// pkg-35/types-14 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3514 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3514 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_14 | null; children: Entity_35_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3514: number; y3514: string; z3514: boolean }; +} + +type Path_3514 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3514}` }[keyof T & string] : never; +type EP_3514 = Path_3514; + +type Val_3514 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3514 } + : T[K] extends object ? { t: 'o'; props: Val_3514 } + : { t: 'u' }; +}; +type EV_3514 = Val_3514; + +interface Registry_35_14 { + entities: Map; + validators: EV_3514; + paths: Set; + merged: DeepMerge_3514; +} + +type CK_3514 = `p35.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_14, Registry_35_14, CK_3514, EP_3514, EV_3514, DeepMerge_3514 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-15.ts new file mode 100644 index 00000000..04e6a1e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-15.ts @@ -0,0 +1,50 @@ +// pkg-35/types-15 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3515 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3515 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_15 | null; children: Entity_35_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3515: number; y3515: string; z3515: boolean }; +} + +type Path_3515 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3515}` }[keyof T & string] : never; +type EP_3515 = Path_3515; + +type Val_3515 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3515 } + : T[K] extends object ? { t: 'o'; props: Val_3515 } + : { t: 'u' }; +}; +type EV_3515 = Val_3515; + +interface Registry_35_15 { + entities: Map; + validators: EV_3515; + paths: Set; + merged: DeepMerge_3515; +} + +type CK_3515 = `p35.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_15, Registry_35_15, CK_3515, EP_3515, EV_3515, DeepMerge_3515 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-16.ts new file mode 100644 index 00000000..dd5bf874 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-16.ts @@ -0,0 +1,50 @@ +// pkg-35/types-16 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3516 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3516 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_16 | null; children: Entity_35_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3516: number; y3516: string; z3516: boolean }; +} + +type Path_3516 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3516}` }[keyof T & string] : never; +type EP_3516 = Path_3516; + +type Val_3516 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3516 } + : T[K] extends object ? { t: 'o'; props: Val_3516 } + : { t: 'u' }; +}; +type EV_3516 = Val_3516; + +interface Registry_35_16 { + entities: Map; + validators: EV_3516; + paths: Set; + merged: DeepMerge_3516; +} + +type CK_3516 = `p35.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_16, Registry_35_16, CK_3516, EP_3516, EV_3516, DeepMerge_3516 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-17.ts new file mode 100644 index 00000000..be09694b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-17.ts @@ -0,0 +1,50 @@ +// pkg-35/types-17 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3517 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3517 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_17 | null; children: Entity_35_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3517: number; y3517: string; z3517: boolean }; +} + +type Path_3517 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3517}` }[keyof T & string] : never; +type EP_3517 = Path_3517; + +type Val_3517 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3517 } + : T[K] extends object ? { t: 'o'; props: Val_3517 } + : { t: 'u' }; +}; +type EV_3517 = Val_3517; + +interface Registry_35_17 { + entities: Map; + validators: EV_3517; + paths: Set; + merged: DeepMerge_3517; +} + +type CK_3517 = `p35.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_17, Registry_35_17, CK_3517, EP_3517, EV_3517, DeepMerge_3517 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-18.ts new file mode 100644 index 00000000..22af614d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-18.ts @@ -0,0 +1,50 @@ +// pkg-35/types-18 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3518 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3518 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_18 | null; children: Entity_35_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3518: number; y3518: string; z3518: boolean }; +} + +type Path_3518 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3518}` }[keyof T & string] : never; +type EP_3518 = Path_3518; + +type Val_3518 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3518 } + : T[K] extends object ? { t: 'o'; props: Val_3518 } + : { t: 'u' }; +}; +type EV_3518 = Val_3518; + +interface Registry_35_18 { + entities: Map; + validators: EV_3518; + paths: Set; + merged: DeepMerge_3518; +} + +type CK_3518 = `p35.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_18, Registry_35_18, CK_3518, EP_3518, EV_3518, DeepMerge_3518 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-19.ts new file mode 100644 index 00000000..3e5c09dc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-19.ts @@ -0,0 +1,50 @@ +// pkg-35/types-19 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3519 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3519 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_19 | null; children: Entity_35_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3519: number; y3519: string; z3519: boolean }; +} + +type Path_3519 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3519}` }[keyof T & string] : never; +type EP_3519 = Path_3519; + +type Val_3519 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3519 } + : T[K] extends object ? { t: 'o'; props: Val_3519 } + : { t: 'u' }; +}; +type EV_3519 = Val_3519; + +interface Registry_35_19 { + entities: Map; + validators: EV_3519; + paths: Set; + merged: DeepMerge_3519; +} + +type CK_3519 = `p35.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_19, Registry_35_19, CK_3519, EP_3519, EV_3519, DeepMerge_3519 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-20.ts new file mode 100644 index 00000000..be6f4460 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-20.ts @@ -0,0 +1,50 @@ +// pkg-35/types-20 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3520 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3520 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_20 | null; children: Entity_35_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3520: number; y3520: string; z3520: boolean }; +} + +type Path_3520 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3520}` }[keyof T & string] : never; +type EP_3520 = Path_3520; + +type Val_3520 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3520 } + : T[K] extends object ? { t: 'o'; props: Val_3520 } + : { t: 'u' }; +}; +type EV_3520 = Val_3520; + +interface Registry_35_20 { + entities: Map; + validators: EV_3520; + paths: Set; + merged: DeepMerge_3520; +} + +type CK_3520 = `p35.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_20, Registry_35_20, CK_3520, EP_3520, EV_3520, DeepMerge_3520 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-21.ts new file mode 100644 index 00000000..5c35d7ce --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-21.ts @@ -0,0 +1,50 @@ +// pkg-35/types-21 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3521 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3521 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_21 | null; children: Entity_35_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3521: number; y3521: string; z3521: boolean }; +} + +type Path_3521 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3521}` }[keyof T & string] : never; +type EP_3521 = Path_3521; + +type Val_3521 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3521 } + : T[K] extends object ? { t: 'o'; props: Val_3521 } + : { t: 'u' }; +}; +type EV_3521 = Val_3521; + +interface Registry_35_21 { + entities: Map; + validators: EV_3521; + paths: Set; + merged: DeepMerge_3521; +} + +type CK_3521 = `p35.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_21, Registry_35_21, CK_3521, EP_3521, EV_3521, DeepMerge_3521 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-22.ts new file mode 100644 index 00000000..dd73d149 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-22.ts @@ -0,0 +1,50 @@ +// pkg-35/types-22 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3522 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3522 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_22 | null; children: Entity_35_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3522: number; y3522: string; z3522: boolean }; +} + +type Path_3522 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3522}` }[keyof T & string] : never; +type EP_3522 = Path_3522; + +type Val_3522 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3522 } + : T[K] extends object ? { t: 'o'; props: Val_3522 } + : { t: 'u' }; +}; +type EV_3522 = Val_3522; + +interface Registry_35_22 { + entities: Map; + validators: EV_3522; + paths: Set; + merged: DeepMerge_3522; +} + +type CK_3522 = `p35.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_22, Registry_35_22, CK_3522, EP_3522, EV_3522, DeepMerge_3522 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-23.ts new file mode 100644 index 00000000..e8f41870 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-23.ts @@ -0,0 +1,50 @@ +// pkg-35/types-23 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3523 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3523 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_23 | null; children: Entity_35_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3523: number; y3523: string; z3523: boolean }; +} + +type Path_3523 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3523}` }[keyof T & string] : never; +type EP_3523 = Path_3523; + +type Val_3523 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3523 } + : T[K] extends object ? { t: 'o'; props: Val_3523 } + : { t: 'u' }; +}; +type EV_3523 = Val_3523; + +interface Registry_35_23 { + entities: Map; + validators: EV_3523; + paths: Set; + merged: DeepMerge_3523; +} + +type CK_3523 = `p35.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_23, Registry_35_23, CK_3523, EP_3523, EV_3523, DeepMerge_3523 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-24.ts new file mode 100644 index 00000000..0f4ad383 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-24.ts @@ -0,0 +1,50 @@ +// pkg-35/types-24 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3524 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3524 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_24 | null; children: Entity_35_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3524: number; y3524: string; z3524: boolean }; +} + +type Path_3524 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3524}` }[keyof T & string] : never; +type EP_3524 = Path_3524; + +type Val_3524 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3524 } + : T[K] extends object ? { t: 'o'; props: Val_3524 } + : { t: 'u' }; +}; +type EV_3524 = Val_3524; + +interface Registry_35_24 { + entities: Map; + validators: EV_3524; + paths: Set; + merged: DeepMerge_3524; +} + +type CK_3524 = `p35.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_24, Registry_35_24, CK_3524, EP_3524, EV_3524, DeepMerge_3524 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-25.ts new file mode 100644 index 00000000..945391a8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-25.ts @@ -0,0 +1,50 @@ +// pkg-35/types-25 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3525 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3525 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_25 | null; children: Entity_35_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3525: number; y3525: string; z3525: boolean }; +} + +type Path_3525 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3525}` }[keyof T & string] : never; +type EP_3525 = Path_3525; + +type Val_3525 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3525 } + : T[K] extends object ? { t: 'o'; props: Val_3525 } + : { t: 'u' }; +}; +type EV_3525 = Val_3525; + +interface Registry_35_25 { + entities: Map; + validators: EV_3525; + paths: Set; + merged: DeepMerge_3525; +} + +type CK_3525 = `p35.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_25, Registry_35_25, CK_3525, EP_3525, EV_3525, DeepMerge_3525 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-26.ts new file mode 100644 index 00000000..1df66aca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-26.ts @@ -0,0 +1,50 @@ +// pkg-35/types-26 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3526 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3526 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_26 | null; children: Entity_35_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3526: number; y3526: string; z3526: boolean }; +} + +type Path_3526 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3526}` }[keyof T & string] : never; +type EP_3526 = Path_3526; + +type Val_3526 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3526 } + : T[K] extends object ? { t: 'o'; props: Val_3526 } + : { t: 'u' }; +}; +type EV_3526 = Val_3526; + +interface Registry_35_26 { + entities: Map; + validators: EV_3526; + paths: Set; + merged: DeepMerge_3526; +} + +type CK_3526 = `p35.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_26, Registry_35_26, CK_3526, EP_3526, EV_3526, DeepMerge_3526 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-27.ts new file mode 100644 index 00000000..94dbc99c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-27.ts @@ -0,0 +1,50 @@ +// pkg-35/types-27 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3527 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3527 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_27 | null; children: Entity_35_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3527: number; y3527: string; z3527: boolean }; +} + +type Path_3527 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3527}` }[keyof T & string] : never; +type EP_3527 = Path_3527; + +type Val_3527 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3527 } + : T[K] extends object ? { t: 'o'; props: Val_3527 } + : { t: 'u' }; +}; +type EV_3527 = Val_3527; + +interface Registry_35_27 { + entities: Map; + validators: EV_3527; + paths: Set; + merged: DeepMerge_3527; +} + +type CK_3527 = `p35.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_27, Registry_35_27, CK_3527, EP_3527, EV_3527, DeepMerge_3527 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-28.ts new file mode 100644 index 00000000..05db7ffa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-28.ts @@ -0,0 +1,50 @@ +// pkg-35/types-28 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3528 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3528 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_28 | null; children: Entity_35_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3528: number; y3528: string; z3528: boolean }; +} + +type Path_3528 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3528}` }[keyof T & string] : never; +type EP_3528 = Path_3528; + +type Val_3528 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3528 } + : T[K] extends object ? { t: 'o'; props: Val_3528 } + : { t: 'u' }; +}; +type EV_3528 = Val_3528; + +interface Registry_35_28 { + entities: Map; + validators: EV_3528; + paths: Set; + merged: DeepMerge_3528; +} + +type CK_3528 = `p35.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_28, Registry_35_28, CK_3528, EP_3528, EV_3528, DeepMerge_3528 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-29.ts new file mode 100644 index 00000000..f09174e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-29.ts @@ -0,0 +1,50 @@ +// pkg-35/types-29 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3529 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3529 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_29 | null; children: Entity_35_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3529: number; y3529: string; z3529: boolean }; +} + +type Path_3529 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3529}` }[keyof T & string] : never; +type EP_3529 = Path_3529; + +type Val_3529 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3529 } + : T[K] extends object ? { t: 'o'; props: Val_3529 } + : { t: 'u' }; +}; +type EV_3529 = Val_3529; + +interface Registry_35_29 { + entities: Map; + validators: EV_3529; + paths: Set; + merged: DeepMerge_3529; +} + +type CK_3529 = `p35.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_29, Registry_35_29, CK_3529, EP_3529, EV_3529, DeepMerge_3529 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-30.ts new file mode 100644 index 00000000..2c85b65f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-30.ts @@ -0,0 +1,50 @@ +// pkg-35/types-30 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3530 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3530 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_30 | null; children: Entity_35_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3530: number; y3530: string; z3530: boolean }; +} + +type Path_3530 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3530}` }[keyof T & string] : never; +type EP_3530 = Path_3530; + +type Val_3530 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3530 } + : T[K] extends object ? { t: 'o'; props: Val_3530 } + : { t: 'u' }; +}; +type EV_3530 = Val_3530; + +interface Registry_35_30 { + entities: Map; + validators: EV_3530; + paths: Set; + merged: DeepMerge_3530; +} + +type CK_3530 = `p35.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_30, Registry_35_30, CK_3530, EP_3530, EV_3530, DeepMerge_3530 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-31.ts new file mode 100644 index 00000000..424758eb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-31.ts @@ -0,0 +1,50 @@ +// pkg-35/types-31 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3531 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3531 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_31 | null; children: Entity_35_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3531: number; y3531: string; z3531: boolean }; +} + +type Path_3531 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3531}` }[keyof T & string] : never; +type EP_3531 = Path_3531; + +type Val_3531 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3531 } + : T[K] extends object ? { t: 'o'; props: Val_3531 } + : { t: 'u' }; +}; +type EV_3531 = Val_3531; + +interface Registry_35_31 { + entities: Map; + validators: EV_3531; + paths: Set; + merged: DeepMerge_3531; +} + +type CK_3531 = `p35.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_31, Registry_35_31, CK_3531, EP_3531, EV_3531, DeepMerge_3531 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-32.ts new file mode 100644 index 00000000..14734827 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-32.ts @@ -0,0 +1,50 @@ +// pkg-35/types-32 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3532 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3532 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_32 | null; children: Entity_35_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3532: number; y3532: string; z3532: boolean }; +} + +type Path_3532 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3532}` }[keyof T & string] : never; +type EP_3532 = Path_3532; + +type Val_3532 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3532 } + : T[K] extends object ? { t: 'o'; props: Val_3532 } + : { t: 'u' }; +}; +type EV_3532 = Val_3532; + +interface Registry_35_32 { + entities: Map; + validators: EV_3532; + paths: Set; + merged: DeepMerge_3532; +} + +type CK_3532 = `p35.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_32, Registry_35_32, CK_3532, EP_3532, EV_3532, DeepMerge_3532 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-33.ts new file mode 100644 index 00000000..e76364e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-33.ts @@ -0,0 +1,50 @@ +// pkg-35/types-33 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3533 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3533 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_33 | null; children: Entity_35_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3533: number; y3533: string; z3533: boolean }; +} + +type Path_3533 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3533}` }[keyof T & string] : never; +type EP_3533 = Path_3533; + +type Val_3533 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3533 } + : T[K] extends object ? { t: 'o'; props: Val_3533 } + : { t: 'u' }; +}; +type EV_3533 = Val_3533; + +interface Registry_35_33 { + entities: Map; + validators: EV_3533; + paths: Set; + merged: DeepMerge_3533; +} + +type CK_3533 = `p35.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_33, Registry_35_33, CK_3533, EP_3533, EV_3533, DeepMerge_3533 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-34.ts new file mode 100644 index 00000000..6498076b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-34.ts @@ -0,0 +1,50 @@ +// pkg-35/types-34 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3534 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3534 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_34 | null; children: Entity_35_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3534: number; y3534: string; z3534: boolean }; +} + +type Path_3534 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3534}` }[keyof T & string] : never; +type EP_3534 = Path_3534; + +type Val_3534 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3534 } + : T[K] extends object ? { t: 'o'; props: Val_3534 } + : { t: 'u' }; +}; +type EV_3534 = Val_3534; + +interface Registry_35_34 { + entities: Map; + validators: EV_3534; + paths: Set; + merged: DeepMerge_3534; +} + +type CK_3534 = `p35.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_34, Registry_35_34, CK_3534, EP_3534, EV_3534, DeepMerge_3534 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-35.ts new file mode 100644 index 00000000..2602c96c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-35.ts @@ -0,0 +1,50 @@ +// pkg-35/types-35 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3535 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3535 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_35 | null; children: Entity_35_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3535: number; y3535: string; z3535: boolean }; +} + +type Path_3535 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3535}` }[keyof T & string] : never; +type EP_3535 = Path_3535; + +type Val_3535 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3535 } + : T[K] extends object ? { t: 'o'; props: Val_3535 } + : { t: 'u' }; +}; +type EV_3535 = Val_3535; + +interface Registry_35_35 { + entities: Map; + validators: EV_3535; + paths: Set; + merged: DeepMerge_3535; +} + +type CK_3535 = `p35.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_35, Registry_35_35, CK_3535, EP_3535, EV_3535, DeepMerge_3535 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-36.ts new file mode 100644 index 00000000..54d68099 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-36.ts @@ -0,0 +1,50 @@ +// pkg-35/types-36 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3536 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3536 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_36 | null; children: Entity_35_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3536: number; y3536: string; z3536: boolean }; +} + +type Path_3536 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3536}` }[keyof T & string] : never; +type EP_3536 = Path_3536; + +type Val_3536 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3536 } + : T[K] extends object ? { t: 'o'; props: Val_3536 } + : { t: 'u' }; +}; +type EV_3536 = Val_3536; + +interface Registry_35_36 { + entities: Map; + validators: EV_3536; + paths: Set; + merged: DeepMerge_3536; +} + +type CK_3536 = `p35.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_36, Registry_35_36, CK_3536, EP_3536, EV_3536, DeepMerge_3536 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-37.ts new file mode 100644 index 00000000..b5637324 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-37.ts @@ -0,0 +1,50 @@ +// pkg-35/types-37 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3537 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3537 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_37 | null; children: Entity_35_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3537: number; y3537: string; z3537: boolean }; +} + +type Path_3537 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3537}` }[keyof T & string] : never; +type EP_3537 = Path_3537; + +type Val_3537 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3537 } + : T[K] extends object ? { t: 'o'; props: Val_3537 } + : { t: 'u' }; +}; +type EV_3537 = Val_3537; + +interface Registry_35_37 { + entities: Map; + validators: EV_3537; + paths: Set; + merged: DeepMerge_3537; +} + +type CK_3537 = `p35.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_37, Registry_35_37, CK_3537, EP_3537, EV_3537, DeepMerge_3537 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-38.ts new file mode 100644 index 00000000..68f06daf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-38.ts @@ -0,0 +1,50 @@ +// pkg-35/types-38 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3538 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3538 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_38 | null; children: Entity_35_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3538: number; y3538: string; z3538: boolean }; +} + +type Path_3538 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3538}` }[keyof T & string] : never; +type EP_3538 = Path_3538; + +type Val_3538 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3538 } + : T[K] extends object ? { t: 'o'; props: Val_3538 } + : { t: 'u' }; +}; +type EV_3538 = Val_3538; + +interface Registry_35_38 { + entities: Map; + validators: EV_3538; + paths: Set; + merged: DeepMerge_3538; +} + +type CK_3538 = `p35.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_38, Registry_35_38, CK_3538, EP_3538, EV_3538, DeepMerge_3538 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-39.ts new file mode 100644 index 00000000..f2622f9a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-39.ts @@ -0,0 +1,50 @@ +// pkg-35/types-39 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3539 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3539 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_39 | null; children: Entity_35_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3539: number; y3539: string; z3539: boolean }; +} + +type Path_3539 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3539}` }[keyof T & string] : never; +type EP_3539 = Path_3539; + +type Val_3539 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3539 } + : T[K] extends object ? { t: 'o'; props: Val_3539 } + : { t: 'u' }; +}; +type EV_3539 = Val_3539; + +interface Registry_35_39 { + entities: Map; + validators: EV_3539; + paths: Set; + merged: DeepMerge_3539; +} + +type CK_3539 = `p35.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_39, Registry_35_39, CK_3539, EP_3539, EV_3539, DeepMerge_3539 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-40.ts new file mode 100644 index 00000000..c129b165 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-40.ts @@ -0,0 +1,50 @@ +// pkg-35/types-40 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3540 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3540 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_40 | null; children: Entity_35_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3540: number; y3540: string; z3540: boolean }; +} + +type Path_3540 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3540}` }[keyof T & string] : never; +type EP_3540 = Path_3540; + +type Val_3540 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3540 } + : T[K] extends object ? { t: 'o'; props: Val_3540 } + : { t: 'u' }; +}; +type EV_3540 = Val_3540; + +interface Registry_35_40 { + entities: Map; + validators: EV_3540; + paths: Set; + merged: DeepMerge_3540; +} + +type CK_3540 = `p35.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_40, Registry_35_40, CK_3540, EP_3540, EV_3540, DeepMerge_3540 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-41.ts new file mode 100644 index 00000000..a0a8800e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-41.ts @@ -0,0 +1,50 @@ +// pkg-35/types-41 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3541 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3541 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_41 | null; children: Entity_35_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3541: number; y3541: string; z3541: boolean }; +} + +type Path_3541 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3541}` }[keyof T & string] : never; +type EP_3541 = Path_3541; + +type Val_3541 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3541 } + : T[K] extends object ? { t: 'o'; props: Val_3541 } + : { t: 'u' }; +}; +type EV_3541 = Val_3541; + +interface Registry_35_41 { + entities: Map; + validators: EV_3541; + paths: Set; + merged: DeepMerge_3541; +} + +type CK_3541 = `p35.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_41, Registry_35_41, CK_3541, EP_3541, EV_3541, DeepMerge_3541 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-42.ts new file mode 100644 index 00000000..8057582f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-42.ts @@ -0,0 +1,50 @@ +// pkg-35/types-42 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3542 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3542 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_42 | null; children: Entity_35_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3542: number; y3542: string; z3542: boolean }; +} + +type Path_3542 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3542}` }[keyof T & string] : never; +type EP_3542 = Path_3542; + +type Val_3542 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3542 } + : T[K] extends object ? { t: 'o'; props: Val_3542 } + : { t: 'u' }; +}; +type EV_3542 = Val_3542; + +interface Registry_35_42 { + entities: Map; + validators: EV_3542; + paths: Set; + merged: DeepMerge_3542; +} + +type CK_3542 = `p35.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_42, Registry_35_42, CK_3542, EP_3542, EV_3542, DeepMerge_3542 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-43.ts new file mode 100644 index 00000000..4f9372c4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-43.ts @@ -0,0 +1,50 @@ +// pkg-35/types-43 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3543 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3543 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_43 | null; children: Entity_35_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3543: number; y3543: string; z3543: boolean }; +} + +type Path_3543 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3543}` }[keyof T & string] : never; +type EP_3543 = Path_3543; + +type Val_3543 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3543 } + : T[K] extends object ? { t: 'o'; props: Val_3543 } + : { t: 'u' }; +}; +type EV_3543 = Val_3543; + +interface Registry_35_43 { + entities: Map; + validators: EV_3543; + paths: Set; + merged: DeepMerge_3543; +} + +type CK_3543 = `p35.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_43, Registry_35_43, CK_3543, EP_3543, EV_3543, DeepMerge_3543 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-44.ts new file mode 100644 index 00000000..48cc0600 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-44.ts @@ -0,0 +1,50 @@ +// pkg-35/types-44 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3544 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3544 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_44 | null; children: Entity_35_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3544: number; y3544: string; z3544: boolean }; +} + +type Path_3544 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3544}` }[keyof T & string] : never; +type EP_3544 = Path_3544; + +type Val_3544 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3544 } + : T[K] extends object ? { t: 'o'; props: Val_3544 } + : { t: 'u' }; +}; +type EV_3544 = Val_3544; + +interface Registry_35_44 { + entities: Map; + validators: EV_3544; + paths: Set; + merged: DeepMerge_3544; +} + +type CK_3544 = `p35.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_44, Registry_35_44, CK_3544, EP_3544, EV_3544, DeepMerge_3544 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-45.ts new file mode 100644 index 00000000..3ded37d5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-45.ts @@ -0,0 +1,50 @@ +// pkg-35/types-45 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3545 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3545 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_45 | null; children: Entity_35_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3545: number; y3545: string; z3545: boolean }; +} + +type Path_3545 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3545}` }[keyof T & string] : never; +type EP_3545 = Path_3545; + +type Val_3545 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3545 } + : T[K] extends object ? { t: 'o'; props: Val_3545 } + : { t: 'u' }; +}; +type EV_3545 = Val_3545; + +interface Registry_35_45 { + entities: Map; + validators: EV_3545; + paths: Set; + merged: DeepMerge_3545; +} + +type CK_3545 = `p35.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_45, Registry_35_45, CK_3545, EP_3545, EV_3545, DeepMerge_3545 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-46.ts new file mode 100644 index 00000000..f65539a4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-46.ts @@ -0,0 +1,50 @@ +// pkg-35/types-46 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3546 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3546 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_46 | null; children: Entity_35_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3546: number; y3546: string; z3546: boolean }; +} + +type Path_3546 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3546}` }[keyof T & string] : never; +type EP_3546 = Path_3546; + +type Val_3546 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3546 } + : T[K] extends object ? { t: 'o'; props: Val_3546 } + : { t: 'u' }; +}; +type EV_3546 = Val_3546; + +interface Registry_35_46 { + entities: Map; + validators: EV_3546; + paths: Set; + merged: DeepMerge_3546; +} + +type CK_3546 = `p35.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_46, Registry_35_46, CK_3546, EP_3546, EV_3546, DeepMerge_3546 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-47.ts new file mode 100644 index 00000000..959da920 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-47.ts @@ -0,0 +1,50 @@ +// pkg-35/types-47 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3547 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3547 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_47 | null; children: Entity_35_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3547: number; y3547: string; z3547: boolean }; +} + +type Path_3547 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3547}` }[keyof T & string] : never; +type EP_3547 = Path_3547; + +type Val_3547 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3547 } + : T[K] extends object ? { t: 'o'; props: Val_3547 } + : { t: 'u' }; +}; +type EV_3547 = Val_3547; + +interface Registry_35_47 { + entities: Map; + validators: EV_3547; + paths: Set; + merged: DeepMerge_3547; +} + +type CK_3547 = `p35.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_47, Registry_35_47, CK_3547, EP_3547, EV_3547, DeepMerge_3547 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-48.ts new file mode 100644 index 00000000..9137ba83 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-48.ts @@ -0,0 +1,50 @@ +// pkg-35/types-48 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3548 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3548 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_48 | null; children: Entity_35_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3548: number; y3548: string; z3548: boolean }; +} + +type Path_3548 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3548}` }[keyof T & string] : never; +type EP_3548 = Path_3548; + +type Val_3548 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3548 } + : T[K] extends object ? { t: 'o'; props: Val_3548 } + : { t: 'u' }; +}; +type EV_3548 = Val_3548; + +interface Registry_35_48 { + entities: Map; + validators: EV_3548; + paths: Set; + merged: DeepMerge_3548; +} + +type CK_3548 = `p35.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_48, Registry_35_48, CK_3548, EP_3548, EV_3548, DeepMerge_3548 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-49.ts new file mode 100644 index 00000000..cb23b0ca --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-49.ts @@ -0,0 +1,50 @@ +// pkg-35/types-49 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3549 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3549 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_49 | null; children: Entity_35_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3549: number; y3549: string; z3549: boolean }; +} + +type Path_3549 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3549}` }[keyof T & string] : never; +type EP_3549 = Path_3549; + +type Val_3549 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3549 } + : T[K] extends object ? { t: 'o'; props: Val_3549 } + : { t: 'u' }; +}; +type EV_3549 = Val_3549; + +interface Registry_35_49 { + entities: Map; + validators: EV_3549; + paths: Set; + merged: DeepMerge_3549; +} + +type CK_3549 = `p35.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_49, Registry_35_49, CK_3549, EP_3549, EV_3549, DeepMerge_3549 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-35/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-35/types-50.ts new file mode 100644 index 00000000..b16601a2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-35/types-50.ts @@ -0,0 +1,50 @@ +// pkg-35/types-50 - heavy interconnected types + +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; +import type { Entity_32_01, Registry_32_01 } from '../pkg-32/types-01'; +import type { Entity_32_10, Registry_32_10 } from '../pkg-32/types-10'; +import type { Entity_32_20, Registry_32_20 } from '../pkg-32/types-20'; + +type DeepMerge_3550 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3550 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_35_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_35_50 | null; children: Entity_35_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3550: number; y3550: string; z3550: boolean }; +} + +type Path_3550 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3550}` }[keyof T & string] : never; +type EP_3550 = Path_3550; + +type Val_3550 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3550 } + : T[K] extends object ? { t: 'o'; props: Val_3550 } + : { t: 'u' }; +}; +type EV_3550 = Val_3550; + +interface Registry_35_50 { + entities: Map; + validators: EV_3550; + paths: Set; + merged: DeepMerge_3550; +} + +type CK_3550 = `p35.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_35_50, Registry_35_50, CK_3550, EP_3550, EV_3550, DeepMerge_3550 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-36/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-01.ts new file mode 100644 index 00000000..ea6103d4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-01.ts @@ -0,0 +1,50 @@ +// pkg-36/types-01 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3601 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3601 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_01 | null; children: Entity_36_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3601: number; y3601: string; z3601: boolean }; +} + +type Path_3601 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3601}` }[keyof T & string] : never; +type EP_3601 = Path_3601; + +type Val_3601 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3601 } + : T[K] extends object ? { t: 'o'; props: Val_3601 } + : { t: 'u' }; +}; +type EV_3601 = Val_3601; + +interface Registry_36_01 { + entities: Map; + validators: EV_3601; + paths: Set; + merged: DeepMerge_3601; +} + +type CK_3601 = `p36.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_01, Registry_36_01, CK_3601, EP_3601, EV_3601, DeepMerge_3601 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-02.ts new file mode 100644 index 00000000..cde3d25a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-02.ts @@ -0,0 +1,50 @@ +// pkg-36/types-02 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3602 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3602 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_02 | null; children: Entity_36_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3602: number; y3602: string; z3602: boolean }; +} + +type Path_3602 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3602}` }[keyof T & string] : never; +type EP_3602 = Path_3602; + +type Val_3602 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3602 } + : T[K] extends object ? { t: 'o'; props: Val_3602 } + : { t: 'u' }; +}; +type EV_3602 = Val_3602; + +interface Registry_36_02 { + entities: Map; + validators: EV_3602; + paths: Set; + merged: DeepMerge_3602; +} + +type CK_3602 = `p36.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_02, Registry_36_02, CK_3602, EP_3602, EV_3602, DeepMerge_3602 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-03.ts new file mode 100644 index 00000000..15f2d09d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-03.ts @@ -0,0 +1,50 @@ +// pkg-36/types-03 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3603 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3603 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_03 | null; children: Entity_36_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3603: number; y3603: string; z3603: boolean }; +} + +type Path_3603 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3603}` }[keyof T & string] : never; +type EP_3603 = Path_3603; + +type Val_3603 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3603 } + : T[K] extends object ? { t: 'o'; props: Val_3603 } + : { t: 'u' }; +}; +type EV_3603 = Val_3603; + +interface Registry_36_03 { + entities: Map; + validators: EV_3603; + paths: Set; + merged: DeepMerge_3603; +} + +type CK_3603 = `p36.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_03, Registry_36_03, CK_3603, EP_3603, EV_3603, DeepMerge_3603 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-04.ts new file mode 100644 index 00000000..40f0df22 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-04.ts @@ -0,0 +1,50 @@ +// pkg-36/types-04 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3604 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3604 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_04 | null; children: Entity_36_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3604: number; y3604: string; z3604: boolean }; +} + +type Path_3604 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3604}` }[keyof T & string] : never; +type EP_3604 = Path_3604; + +type Val_3604 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3604 } + : T[K] extends object ? { t: 'o'; props: Val_3604 } + : { t: 'u' }; +}; +type EV_3604 = Val_3604; + +interface Registry_36_04 { + entities: Map; + validators: EV_3604; + paths: Set; + merged: DeepMerge_3604; +} + +type CK_3604 = `p36.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_04, Registry_36_04, CK_3604, EP_3604, EV_3604, DeepMerge_3604 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-05.ts new file mode 100644 index 00000000..7cd7bffd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-05.ts @@ -0,0 +1,50 @@ +// pkg-36/types-05 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3605 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3605 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_05 | null; children: Entity_36_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3605: number; y3605: string; z3605: boolean }; +} + +type Path_3605 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3605}` }[keyof T & string] : never; +type EP_3605 = Path_3605; + +type Val_3605 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3605 } + : T[K] extends object ? { t: 'o'; props: Val_3605 } + : { t: 'u' }; +}; +type EV_3605 = Val_3605; + +interface Registry_36_05 { + entities: Map; + validators: EV_3605; + paths: Set; + merged: DeepMerge_3605; +} + +type CK_3605 = `p36.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_05, Registry_36_05, CK_3605, EP_3605, EV_3605, DeepMerge_3605 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-06.ts new file mode 100644 index 00000000..00861fba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-06.ts @@ -0,0 +1,50 @@ +// pkg-36/types-06 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3606 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3606 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_06 | null; children: Entity_36_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3606: number; y3606: string; z3606: boolean }; +} + +type Path_3606 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3606}` }[keyof T & string] : never; +type EP_3606 = Path_3606; + +type Val_3606 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3606 } + : T[K] extends object ? { t: 'o'; props: Val_3606 } + : { t: 'u' }; +}; +type EV_3606 = Val_3606; + +interface Registry_36_06 { + entities: Map; + validators: EV_3606; + paths: Set; + merged: DeepMerge_3606; +} + +type CK_3606 = `p36.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_06, Registry_36_06, CK_3606, EP_3606, EV_3606, DeepMerge_3606 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-07.ts new file mode 100644 index 00000000..930b3dee --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-07.ts @@ -0,0 +1,50 @@ +// pkg-36/types-07 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3607 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3607 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_07 | null; children: Entity_36_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3607: number; y3607: string; z3607: boolean }; +} + +type Path_3607 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3607}` }[keyof T & string] : never; +type EP_3607 = Path_3607; + +type Val_3607 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3607 } + : T[K] extends object ? { t: 'o'; props: Val_3607 } + : { t: 'u' }; +}; +type EV_3607 = Val_3607; + +interface Registry_36_07 { + entities: Map; + validators: EV_3607; + paths: Set; + merged: DeepMerge_3607; +} + +type CK_3607 = `p36.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_07, Registry_36_07, CK_3607, EP_3607, EV_3607, DeepMerge_3607 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-08.ts new file mode 100644 index 00000000..a4bf2119 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-08.ts @@ -0,0 +1,50 @@ +// pkg-36/types-08 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3608 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3608 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_08 | null; children: Entity_36_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3608: number; y3608: string; z3608: boolean }; +} + +type Path_3608 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3608}` }[keyof T & string] : never; +type EP_3608 = Path_3608; + +type Val_3608 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3608 } + : T[K] extends object ? { t: 'o'; props: Val_3608 } + : { t: 'u' }; +}; +type EV_3608 = Val_3608; + +interface Registry_36_08 { + entities: Map; + validators: EV_3608; + paths: Set; + merged: DeepMerge_3608; +} + +type CK_3608 = `p36.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_08, Registry_36_08, CK_3608, EP_3608, EV_3608, DeepMerge_3608 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-09.ts new file mode 100644 index 00000000..84d58591 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-09.ts @@ -0,0 +1,50 @@ +// pkg-36/types-09 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3609 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3609 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_09 | null; children: Entity_36_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3609: number; y3609: string; z3609: boolean }; +} + +type Path_3609 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3609}` }[keyof T & string] : never; +type EP_3609 = Path_3609; + +type Val_3609 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3609 } + : T[K] extends object ? { t: 'o'; props: Val_3609 } + : { t: 'u' }; +}; +type EV_3609 = Val_3609; + +interface Registry_36_09 { + entities: Map; + validators: EV_3609; + paths: Set; + merged: DeepMerge_3609; +} + +type CK_3609 = `p36.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_09, Registry_36_09, CK_3609, EP_3609, EV_3609, DeepMerge_3609 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-10.ts new file mode 100644 index 00000000..88b18c21 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-10.ts @@ -0,0 +1,50 @@ +// pkg-36/types-10 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3610 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3610 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_10 | null; children: Entity_36_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3610: number; y3610: string; z3610: boolean }; +} + +type Path_3610 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3610}` }[keyof T & string] : never; +type EP_3610 = Path_3610; + +type Val_3610 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3610 } + : T[K] extends object ? { t: 'o'; props: Val_3610 } + : { t: 'u' }; +}; +type EV_3610 = Val_3610; + +interface Registry_36_10 { + entities: Map; + validators: EV_3610; + paths: Set; + merged: DeepMerge_3610; +} + +type CK_3610 = `p36.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_10, Registry_36_10, CK_3610, EP_3610, EV_3610, DeepMerge_3610 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-11.ts new file mode 100644 index 00000000..0638d386 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-11.ts @@ -0,0 +1,50 @@ +// pkg-36/types-11 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3611 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3611 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_11 | null; children: Entity_36_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3611: number; y3611: string; z3611: boolean }; +} + +type Path_3611 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3611}` }[keyof T & string] : never; +type EP_3611 = Path_3611; + +type Val_3611 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3611 } + : T[K] extends object ? { t: 'o'; props: Val_3611 } + : { t: 'u' }; +}; +type EV_3611 = Val_3611; + +interface Registry_36_11 { + entities: Map; + validators: EV_3611; + paths: Set; + merged: DeepMerge_3611; +} + +type CK_3611 = `p36.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_11, Registry_36_11, CK_3611, EP_3611, EV_3611, DeepMerge_3611 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-12.ts new file mode 100644 index 00000000..ed1cba16 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-12.ts @@ -0,0 +1,50 @@ +// pkg-36/types-12 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3612 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3612 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_12 | null; children: Entity_36_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3612: number; y3612: string; z3612: boolean }; +} + +type Path_3612 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3612}` }[keyof T & string] : never; +type EP_3612 = Path_3612; + +type Val_3612 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3612 } + : T[K] extends object ? { t: 'o'; props: Val_3612 } + : { t: 'u' }; +}; +type EV_3612 = Val_3612; + +interface Registry_36_12 { + entities: Map; + validators: EV_3612; + paths: Set; + merged: DeepMerge_3612; +} + +type CK_3612 = `p36.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_12, Registry_36_12, CK_3612, EP_3612, EV_3612, DeepMerge_3612 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-13.ts new file mode 100644 index 00000000..2e02547f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-13.ts @@ -0,0 +1,50 @@ +// pkg-36/types-13 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3613 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3613 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_13 | null; children: Entity_36_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3613: number; y3613: string; z3613: boolean }; +} + +type Path_3613 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3613}` }[keyof T & string] : never; +type EP_3613 = Path_3613; + +type Val_3613 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3613 } + : T[K] extends object ? { t: 'o'; props: Val_3613 } + : { t: 'u' }; +}; +type EV_3613 = Val_3613; + +interface Registry_36_13 { + entities: Map; + validators: EV_3613; + paths: Set; + merged: DeepMerge_3613; +} + +type CK_3613 = `p36.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_13, Registry_36_13, CK_3613, EP_3613, EV_3613, DeepMerge_3613 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-14.ts new file mode 100644 index 00000000..6e099119 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-14.ts @@ -0,0 +1,50 @@ +// pkg-36/types-14 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3614 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3614 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_14 | null; children: Entity_36_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3614: number; y3614: string; z3614: boolean }; +} + +type Path_3614 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3614}` }[keyof T & string] : never; +type EP_3614 = Path_3614; + +type Val_3614 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3614 } + : T[K] extends object ? { t: 'o'; props: Val_3614 } + : { t: 'u' }; +}; +type EV_3614 = Val_3614; + +interface Registry_36_14 { + entities: Map; + validators: EV_3614; + paths: Set; + merged: DeepMerge_3614; +} + +type CK_3614 = `p36.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_14, Registry_36_14, CK_3614, EP_3614, EV_3614, DeepMerge_3614 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-15.ts new file mode 100644 index 00000000..40a79715 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-15.ts @@ -0,0 +1,50 @@ +// pkg-36/types-15 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3615 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3615 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_15 | null; children: Entity_36_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3615: number; y3615: string; z3615: boolean }; +} + +type Path_3615 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3615}` }[keyof T & string] : never; +type EP_3615 = Path_3615; + +type Val_3615 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3615 } + : T[K] extends object ? { t: 'o'; props: Val_3615 } + : { t: 'u' }; +}; +type EV_3615 = Val_3615; + +interface Registry_36_15 { + entities: Map; + validators: EV_3615; + paths: Set; + merged: DeepMerge_3615; +} + +type CK_3615 = `p36.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_15, Registry_36_15, CK_3615, EP_3615, EV_3615, DeepMerge_3615 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-16.ts new file mode 100644 index 00000000..5153bb99 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-16.ts @@ -0,0 +1,50 @@ +// pkg-36/types-16 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3616 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3616 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_16 | null; children: Entity_36_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3616: number; y3616: string; z3616: boolean }; +} + +type Path_3616 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3616}` }[keyof T & string] : never; +type EP_3616 = Path_3616; + +type Val_3616 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3616 } + : T[K] extends object ? { t: 'o'; props: Val_3616 } + : { t: 'u' }; +}; +type EV_3616 = Val_3616; + +interface Registry_36_16 { + entities: Map; + validators: EV_3616; + paths: Set; + merged: DeepMerge_3616; +} + +type CK_3616 = `p36.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_16, Registry_36_16, CK_3616, EP_3616, EV_3616, DeepMerge_3616 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-17.ts new file mode 100644 index 00000000..64b8c220 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-17.ts @@ -0,0 +1,50 @@ +// pkg-36/types-17 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3617 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3617 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_17 | null; children: Entity_36_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3617: number; y3617: string; z3617: boolean }; +} + +type Path_3617 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3617}` }[keyof T & string] : never; +type EP_3617 = Path_3617; + +type Val_3617 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3617 } + : T[K] extends object ? { t: 'o'; props: Val_3617 } + : { t: 'u' }; +}; +type EV_3617 = Val_3617; + +interface Registry_36_17 { + entities: Map; + validators: EV_3617; + paths: Set; + merged: DeepMerge_3617; +} + +type CK_3617 = `p36.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_17, Registry_36_17, CK_3617, EP_3617, EV_3617, DeepMerge_3617 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-18.ts new file mode 100644 index 00000000..5c75079d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-18.ts @@ -0,0 +1,50 @@ +// pkg-36/types-18 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3618 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3618 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_18 | null; children: Entity_36_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3618: number; y3618: string; z3618: boolean }; +} + +type Path_3618 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3618}` }[keyof T & string] : never; +type EP_3618 = Path_3618; + +type Val_3618 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3618 } + : T[K] extends object ? { t: 'o'; props: Val_3618 } + : { t: 'u' }; +}; +type EV_3618 = Val_3618; + +interface Registry_36_18 { + entities: Map; + validators: EV_3618; + paths: Set; + merged: DeepMerge_3618; +} + +type CK_3618 = `p36.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_18, Registry_36_18, CK_3618, EP_3618, EV_3618, DeepMerge_3618 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-19.ts new file mode 100644 index 00000000..5c15034c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-19.ts @@ -0,0 +1,50 @@ +// pkg-36/types-19 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3619 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3619 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_19 | null; children: Entity_36_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3619: number; y3619: string; z3619: boolean }; +} + +type Path_3619 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3619}` }[keyof T & string] : never; +type EP_3619 = Path_3619; + +type Val_3619 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3619 } + : T[K] extends object ? { t: 'o'; props: Val_3619 } + : { t: 'u' }; +}; +type EV_3619 = Val_3619; + +interface Registry_36_19 { + entities: Map; + validators: EV_3619; + paths: Set; + merged: DeepMerge_3619; +} + +type CK_3619 = `p36.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_19, Registry_36_19, CK_3619, EP_3619, EV_3619, DeepMerge_3619 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-20.ts new file mode 100644 index 00000000..e946dbf8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-20.ts @@ -0,0 +1,50 @@ +// pkg-36/types-20 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3620 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3620 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_20 | null; children: Entity_36_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3620: number; y3620: string; z3620: boolean }; +} + +type Path_3620 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3620}` }[keyof T & string] : never; +type EP_3620 = Path_3620; + +type Val_3620 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3620 } + : T[K] extends object ? { t: 'o'; props: Val_3620 } + : { t: 'u' }; +}; +type EV_3620 = Val_3620; + +interface Registry_36_20 { + entities: Map; + validators: EV_3620; + paths: Set; + merged: DeepMerge_3620; +} + +type CK_3620 = `p36.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_20, Registry_36_20, CK_3620, EP_3620, EV_3620, DeepMerge_3620 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-21.ts new file mode 100644 index 00000000..3610b774 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-21.ts @@ -0,0 +1,50 @@ +// pkg-36/types-21 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3621 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3621 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_21 | null; children: Entity_36_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3621: number; y3621: string; z3621: boolean }; +} + +type Path_3621 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3621}` }[keyof T & string] : never; +type EP_3621 = Path_3621; + +type Val_3621 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3621 } + : T[K] extends object ? { t: 'o'; props: Val_3621 } + : { t: 'u' }; +}; +type EV_3621 = Val_3621; + +interface Registry_36_21 { + entities: Map; + validators: EV_3621; + paths: Set; + merged: DeepMerge_3621; +} + +type CK_3621 = `p36.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_21, Registry_36_21, CK_3621, EP_3621, EV_3621, DeepMerge_3621 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-22.ts new file mode 100644 index 00000000..76a2b62a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-22.ts @@ -0,0 +1,50 @@ +// pkg-36/types-22 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3622 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3622 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_22 | null; children: Entity_36_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3622: number; y3622: string; z3622: boolean }; +} + +type Path_3622 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3622}` }[keyof T & string] : never; +type EP_3622 = Path_3622; + +type Val_3622 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3622 } + : T[K] extends object ? { t: 'o'; props: Val_3622 } + : { t: 'u' }; +}; +type EV_3622 = Val_3622; + +interface Registry_36_22 { + entities: Map; + validators: EV_3622; + paths: Set; + merged: DeepMerge_3622; +} + +type CK_3622 = `p36.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_22, Registry_36_22, CK_3622, EP_3622, EV_3622, DeepMerge_3622 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-23.ts new file mode 100644 index 00000000..6ec0420f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-23.ts @@ -0,0 +1,50 @@ +// pkg-36/types-23 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3623 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3623 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_23 | null; children: Entity_36_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3623: number; y3623: string; z3623: boolean }; +} + +type Path_3623 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3623}` }[keyof T & string] : never; +type EP_3623 = Path_3623; + +type Val_3623 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3623 } + : T[K] extends object ? { t: 'o'; props: Val_3623 } + : { t: 'u' }; +}; +type EV_3623 = Val_3623; + +interface Registry_36_23 { + entities: Map; + validators: EV_3623; + paths: Set; + merged: DeepMerge_3623; +} + +type CK_3623 = `p36.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_23, Registry_36_23, CK_3623, EP_3623, EV_3623, DeepMerge_3623 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-24.ts new file mode 100644 index 00000000..adcf9aa2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-24.ts @@ -0,0 +1,50 @@ +// pkg-36/types-24 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3624 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3624 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_24 | null; children: Entity_36_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3624: number; y3624: string; z3624: boolean }; +} + +type Path_3624 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3624}` }[keyof T & string] : never; +type EP_3624 = Path_3624; + +type Val_3624 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3624 } + : T[K] extends object ? { t: 'o'; props: Val_3624 } + : { t: 'u' }; +}; +type EV_3624 = Val_3624; + +interface Registry_36_24 { + entities: Map; + validators: EV_3624; + paths: Set; + merged: DeepMerge_3624; +} + +type CK_3624 = `p36.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_24, Registry_36_24, CK_3624, EP_3624, EV_3624, DeepMerge_3624 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-25.ts new file mode 100644 index 00000000..b515b676 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-25.ts @@ -0,0 +1,50 @@ +// pkg-36/types-25 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3625 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3625 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_25 | null; children: Entity_36_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3625: number; y3625: string; z3625: boolean }; +} + +type Path_3625 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3625}` }[keyof T & string] : never; +type EP_3625 = Path_3625; + +type Val_3625 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3625 } + : T[K] extends object ? { t: 'o'; props: Val_3625 } + : { t: 'u' }; +}; +type EV_3625 = Val_3625; + +interface Registry_36_25 { + entities: Map; + validators: EV_3625; + paths: Set; + merged: DeepMerge_3625; +} + +type CK_3625 = `p36.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_25, Registry_36_25, CK_3625, EP_3625, EV_3625, DeepMerge_3625 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-26.ts new file mode 100644 index 00000000..2dc54d82 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-26.ts @@ -0,0 +1,50 @@ +// pkg-36/types-26 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3626 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3626 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_26 | null; children: Entity_36_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3626: number; y3626: string; z3626: boolean }; +} + +type Path_3626 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3626}` }[keyof T & string] : never; +type EP_3626 = Path_3626; + +type Val_3626 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3626 } + : T[K] extends object ? { t: 'o'; props: Val_3626 } + : { t: 'u' }; +}; +type EV_3626 = Val_3626; + +interface Registry_36_26 { + entities: Map; + validators: EV_3626; + paths: Set; + merged: DeepMerge_3626; +} + +type CK_3626 = `p36.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_26, Registry_36_26, CK_3626, EP_3626, EV_3626, DeepMerge_3626 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-27.ts new file mode 100644 index 00000000..2f4b2b2b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-27.ts @@ -0,0 +1,50 @@ +// pkg-36/types-27 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3627 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3627 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_27 | null; children: Entity_36_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3627: number; y3627: string; z3627: boolean }; +} + +type Path_3627 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3627}` }[keyof T & string] : never; +type EP_3627 = Path_3627; + +type Val_3627 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3627 } + : T[K] extends object ? { t: 'o'; props: Val_3627 } + : { t: 'u' }; +}; +type EV_3627 = Val_3627; + +interface Registry_36_27 { + entities: Map; + validators: EV_3627; + paths: Set; + merged: DeepMerge_3627; +} + +type CK_3627 = `p36.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_27, Registry_36_27, CK_3627, EP_3627, EV_3627, DeepMerge_3627 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-28.ts new file mode 100644 index 00000000..3b1dc4da --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-28.ts @@ -0,0 +1,50 @@ +// pkg-36/types-28 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3628 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3628 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_28 | null; children: Entity_36_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3628: number; y3628: string; z3628: boolean }; +} + +type Path_3628 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3628}` }[keyof T & string] : never; +type EP_3628 = Path_3628; + +type Val_3628 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3628 } + : T[K] extends object ? { t: 'o'; props: Val_3628 } + : { t: 'u' }; +}; +type EV_3628 = Val_3628; + +interface Registry_36_28 { + entities: Map; + validators: EV_3628; + paths: Set; + merged: DeepMerge_3628; +} + +type CK_3628 = `p36.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_28, Registry_36_28, CK_3628, EP_3628, EV_3628, DeepMerge_3628 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-29.ts new file mode 100644 index 00000000..7b99c896 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-29.ts @@ -0,0 +1,50 @@ +// pkg-36/types-29 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3629 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3629 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_29 | null; children: Entity_36_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3629: number; y3629: string; z3629: boolean }; +} + +type Path_3629 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3629}` }[keyof T & string] : never; +type EP_3629 = Path_3629; + +type Val_3629 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3629 } + : T[K] extends object ? { t: 'o'; props: Val_3629 } + : { t: 'u' }; +}; +type EV_3629 = Val_3629; + +interface Registry_36_29 { + entities: Map; + validators: EV_3629; + paths: Set; + merged: DeepMerge_3629; +} + +type CK_3629 = `p36.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_29, Registry_36_29, CK_3629, EP_3629, EV_3629, DeepMerge_3629 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-30.ts new file mode 100644 index 00000000..2ef25467 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-30.ts @@ -0,0 +1,50 @@ +// pkg-36/types-30 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3630 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3630 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_30 | null; children: Entity_36_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3630: number; y3630: string; z3630: boolean }; +} + +type Path_3630 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3630}` }[keyof T & string] : never; +type EP_3630 = Path_3630; + +type Val_3630 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3630 } + : T[K] extends object ? { t: 'o'; props: Val_3630 } + : { t: 'u' }; +}; +type EV_3630 = Val_3630; + +interface Registry_36_30 { + entities: Map; + validators: EV_3630; + paths: Set; + merged: DeepMerge_3630; +} + +type CK_3630 = `p36.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_30, Registry_36_30, CK_3630, EP_3630, EV_3630, DeepMerge_3630 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-31.ts new file mode 100644 index 00000000..35154654 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-31.ts @@ -0,0 +1,50 @@ +// pkg-36/types-31 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3631 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3631 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_31 | null; children: Entity_36_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3631: number; y3631: string; z3631: boolean }; +} + +type Path_3631 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3631}` }[keyof T & string] : never; +type EP_3631 = Path_3631; + +type Val_3631 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3631 } + : T[K] extends object ? { t: 'o'; props: Val_3631 } + : { t: 'u' }; +}; +type EV_3631 = Val_3631; + +interface Registry_36_31 { + entities: Map; + validators: EV_3631; + paths: Set; + merged: DeepMerge_3631; +} + +type CK_3631 = `p36.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_31, Registry_36_31, CK_3631, EP_3631, EV_3631, DeepMerge_3631 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-32.ts new file mode 100644 index 00000000..d1696ac2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-32.ts @@ -0,0 +1,50 @@ +// pkg-36/types-32 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3632 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3632 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_32 | null; children: Entity_36_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3632: number; y3632: string; z3632: boolean }; +} + +type Path_3632 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3632}` }[keyof T & string] : never; +type EP_3632 = Path_3632; + +type Val_3632 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3632 } + : T[K] extends object ? { t: 'o'; props: Val_3632 } + : { t: 'u' }; +}; +type EV_3632 = Val_3632; + +interface Registry_36_32 { + entities: Map; + validators: EV_3632; + paths: Set; + merged: DeepMerge_3632; +} + +type CK_3632 = `p36.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_32, Registry_36_32, CK_3632, EP_3632, EV_3632, DeepMerge_3632 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-33.ts new file mode 100644 index 00000000..2ad3a494 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-33.ts @@ -0,0 +1,50 @@ +// pkg-36/types-33 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3633 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3633 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_33 | null; children: Entity_36_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3633: number; y3633: string; z3633: boolean }; +} + +type Path_3633 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3633}` }[keyof T & string] : never; +type EP_3633 = Path_3633; + +type Val_3633 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3633 } + : T[K] extends object ? { t: 'o'; props: Val_3633 } + : { t: 'u' }; +}; +type EV_3633 = Val_3633; + +interface Registry_36_33 { + entities: Map; + validators: EV_3633; + paths: Set; + merged: DeepMerge_3633; +} + +type CK_3633 = `p36.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_33, Registry_36_33, CK_3633, EP_3633, EV_3633, DeepMerge_3633 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-34.ts new file mode 100644 index 00000000..a3404e44 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-34.ts @@ -0,0 +1,50 @@ +// pkg-36/types-34 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3634 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3634 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_34 | null; children: Entity_36_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3634: number; y3634: string; z3634: boolean }; +} + +type Path_3634 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3634}` }[keyof T & string] : never; +type EP_3634 = Path_3634; + +type Val_3634 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3634 } + : T[K] extends object ? { t: 'o'; props: Val_3634 } + : { t: 'u' }; +}; +type EV_3634 = Val_3634; + +interface Registry_36_34 { + entities: Map; + validators: EV_3634; + paths: Set; + merged: DeepMerge_3634; +} + +type CK_3634 = `p36.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_34, Registry_36_34, CK_3634, EP_3634, EV_3634, DeepMerge_3634 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-35.ts new file mode 100644 index 00000000..42e85fc1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-35.ts @@ -0,0 +1,50 @@ +// pkg-36/types-35 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3635 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3635 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_35 | null; children: Entity_36_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3635: number; y3635: string; z3635: boolean }; +} + +type Path_3635 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3635}` }[keyof T & string] : never; +type EP_3635 = Path_3635; + +type Val_3635 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3635 } + : T[K] extends object ? { t: 'o'; props: Val_3635 } + : { t: 'u' }; +}; +type EV_3635 = Val_3635; + +interface Registry_36_35 { + entities: Map; + validators: EV_3635; + paths: Set; + merged: DeepMerge_3635; +} + +type CK_3635 = `p36.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_35, Registry_36_35, CK_3635, EP_3635, EV_3635, DeepMerge_3635 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-36.ts new file mode 100644 index 00000000..7e3a0716 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-36.ts @@ -0,0 +1,50 @@ +// pkg-36/types-36 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3636 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3636 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_36 | null; children: Entity_36_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3636: number; y3636: string; z3636: boolean }; +} + +type Path_3636 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3636}` }[keyof T & string] : never; +type EP_3636 = Path_3636; + +type Val_3636 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3636 } + : T[K] extends object ? { t: 'o'; props: Val_3636 } + : { t: 'u' }; +}; +type EV_3636 = Val_3636; + +interface Registry_36_36 { + entities: Map; + validators: EV_3636; + paths: Set; + merged: DeepMerge_3636; +} + +type CK_3636 = `p36.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_36, Registry_36_36, CK_3636, EP_3636, EV_3636, DeepMerge_3636 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-37.ts new file mode 100644 index 00000000..f7185282 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-37.ts @@ -0,0 +1,50 @@ +// pkg-36/types-37 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3637 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3637 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_37 | null; children: Entity_36_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3637: number; y3637: string; z3637: boolean }; +} + +type Path_3637 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3637}` }[keyof T & string] : never; +type EP_3637 = Path_3637; + +type Val_3637 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3637 } + : T[K] extends object ? { t: 'o'; props: Val_3637 } + : { t: 'u' }; +}; +type EV_3637 = Val_3637; + +interface Registry_36_37 { + entities: Map; + validators: EV_3637; + paths: Set; + merged: DeepMerge_3637; +} + +type CK_3637 = `p36.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_37, Registry_36_37, CK_3637, EP_3637, EV_3637, DeepMerge_3637 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-38.ts new file mode 100644 index 00000000..e1eba656 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-38.ts @@ -0,0 +1,50 @@ +// pkg-36/types-38 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3638 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3638 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_38 | null; children: Entity_36_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3638: number; y3638: string; z3638: boolean }; +} + +type Path_3638 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3638}` }[keyof T & string] : never; +type EP_3638 = Path_3638; + +type Val_3638 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3638 } + : T[K] extends object ? { t: 'o'; props: Val_3638 } + : { t: 'u' }; +}; +type EV_3638 = Val_3638; + +interface Registry_36_38 { + entities: Map; + validators: EV_3638; + paths: Set; + merged: DeepMerge_3638; +} + +type CK_3638 = `p36.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_38, Registry_36_38, CK_3638, EP_3638, EV_3638, DeepMerge_3638 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-39.ts new file mode 100644 index 00000000..0d1df1a5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-39.ts @@ -0,0 +1,50 @@ +// pkg-36/types-39 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3639 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3639 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_39 | null; children: Entity_36_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3639: number; y3639: string; z3639: boolean }; +} + +type Path_3639 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3639}` }[keyof T & string] : never; +type EP_3639 = Path_3639; + +type Val_3639 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3639 } + : T[K] extends object ? { t: 'o'; props: Val_3639 } + : { t: 'u' }; +}; +type EV_3639 = Val_3639; + +interface Registry_36_39 { + entities: Map; + validators: EV_3639; + paths: Set; + merged: DeepMerge_3639; +} + +type CK_3639 = `p36.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_39, Registry_36_39, CK_3639, EP_3639, EV_3639, DeepMerge_3639 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-40.ts new file mode 100644 index 00000000..a10547fa --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-40.ts @@ -0,0 +1,50 @@ +// pkg-36/types-40 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3640 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3640 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_40 | null; children: Entity_36_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3640: number; y3640: string; z3640: boolean }; +} + +type Path_3640 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3640}` }[keyof T & string] : never; +type EP_3640 = Path_3640; + +type Val_3640 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3640 } + : T[K] extends object ? { t: 'o'; props: Val_3640 } + : { t: 'u' }; +}; +type EV_3640 = Val_3640; + +interface Registry_36_40 { + entities: Map; + validators: EV_3640; + paths: Set; + merged: DeepMerge_3640; +} + +type CK_3640 = `p36.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_40, Registry_36_40, CK_3640, EP_3640, EV_3640, DeepMerge_3640 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-41.ts new file mode 100644 index 00000000..52172361 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-41.ts @@ -0,0 +1,50 @@ +// pkg-36/types-41 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3641 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3641 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_41 | null; children: Entity_36_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3641: number; y3641: string; z3641: boolean }; +} + +type Path_3641 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3641}` }[keyof T & string] : never; +type EP_3641 = Path_3641; + +type Val_3641 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3641 } + : T[K] extends object ? { t: 'o'; props: Val_3641 } + : { t: 'u' }; +}; +type EV_3641 = Val_3641; + +interface Registry_36_41 { + entities: Map; + validators: EV_3641; + paths: Set; + merged: DeepMerge_3641; +} + +type CK_3641 = `p36.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_41, Registry_36_41, CK_3641, EP_3641, EV_3641, DeepMerge_3641 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-42.ts new file mode 100644 index 00000000..4a9d1209 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-42.ts @@ -0,0 +1,50 @@ +// pkg-36/types-42 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3642 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3642 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_42 | null; children: Entity_36_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3642: number; y3642: string; z3642: boolean }; +} + +type Path_3642 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3642}` }[keyof T & string] : never; +type EP_3642 = Path_3642; + +type Val_3642 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3642 } + : T[K] extends object ? { t: 'o'; props: Val_3642 } + : { t: 'u' }; +}; +type EV_3642 = Val_3642; + +interface Registry_36_42 { + entities: Map; + validators: EV_3642; + paths: Set; + merged: DeepMerge_3642; +} + +type CK_3642 = `p36.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_42, Registry_36_42, CK_3642, EP_3642, EV_3642, DeepMerge_3642 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-43.ts new file mode 100644 index 00000000..3eb267fb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-43.ts @@ -0,0 +1,50 @@ +// pkg-36/types-43 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3643 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3643 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_43 | null; children: Entity_36_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3643: number; y3643: string; z3643: boolean }; +} + +type Path_3643 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3643}` }[keyof T & string] : never; +type EP_3643 = Path_3643; + +type Val_3643 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3643 } + : T[K] extends object ? { t: 'o'; props: Val_3643 } + : { t: 'u' }; +}; +type EV_3643 = Val_3643; + +interface Registry_36_43 { + entities: Map; + validators: EV_3643; + paths: Set; + merged: DeepMerge_3643; +} + +type CK_3643 = `p36.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_43, Registry_36_43, CK_3643, EP_3643, EV_3643, DeepMerge_3643 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-44.ts new file mode 100644 index 00000000..47498da6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-44.ts @@ -0,0 +1,50 @@ +// pkg-36/types-44 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3644 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3644 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_44 | null; children: Entity_36_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3644: number; y3644: string; z3644: boolean }; +} + +type Path_3644 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3644}` }[keyof T & string] : never; +type EP_3644 = Path_3644; + +type Val_3644 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3644 } + : T[K] extends object ? { t: 'o'; props: Val_3644 } + : { t: 'u' }; +}; +type EV_3644 = Val_3644; + +interface Registry_36_44 { + entities: Map; + validators: EV_3644; + paths: Set; + merged: DeepMerge_3644; +} + +type CK_3644 = `p36.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_44, Registry_36_44, CK_3644, EP_3644, EV_3644, DeepMerge_3644 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-45.ts new file mode 100644 index 00000000..fc36d976 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-45.ts @@ -0,0 +1,50 @@ +// pkg-36/types-45 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3645 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3645 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_45 | null; children: Entity_36_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3645: number; y3645: string; z3645: boolean }; +} + +type Path_3645 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3645}` }[keyof T & string] : never; +type EP_3645 = Path_3645; + +type Val_3645 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3645 } + : T[K] extends object ? { t: 'o'; props: Val_3645 } + : { t: 'u' }; +}; +type EV_3645 = Val_3645; + +interface Registry_36_45 { + entities: Map; + validators: EV_3645; + paths: Set; + merged: DeepMerge_3645; +} + +type CK_3645 = `p36.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_45, Registry_36_45, CK_3645, EP_3645, EV_3645, DeepMerge_3645 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-46.ts new file mode 100644 index 00000000..3440a989 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-46.ts @@ -0,0 +1,50 @@ +// pkg-36/types-46 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3646 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3646 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_46 | null; children: Entity_36_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3646: number; y3646: string; z3646: boolean }; +} + +type Path_3646 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3646}` }[keyof T & string] : never; +type EP_3646 = Path_3646; + +type Val_3646 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3646 } + : T[K] extends object ? { t: 'o'; props: Val_3646 } + : { t: 'u' }; +}; +type EV_3646 = Val_3646; + +interface Registry_36_46 { + entities: Map; + validators: EV_3646; + paths: Set; + merged: DeepMerge_3646; +} + +type CK_3646 = `p36.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_46, Registry_36_46, CK_3646, EP_3646, EV_3646, DeepMerge_3646 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-47.ts new file mode 100644 index 00000000..e69306db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-47.ts @@ -0,0 +1,50 @@ +// pkg-36/types-47 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3647 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3647 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_47 | null; children: Entity_36_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3647: number; y3647: string; z3647: boolean }; +} + +type Path_3647 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3647}` }[keyof T & string] : never; +type EP_3647 = Path_3647; + +type Val_3647 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3647 } + : T[K] extends object ? { t: 'o'; props: Val_3647 } + : { t: 'u' }; +}; +type EV_3647 = Val_3647; + +interface Registry_36_47 { + entities: Map; + validators: EV_3647; + paths: Set; + merged: DeepMerge_3647; +} + +type CK_3647 = `p36.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_47, Registry_36_47, CK_3647, EP_3647, EV_3647, DeepMerge_3647 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-48.ts new file mode 100644 index 00000000..5b589098 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-48.ts @@ -0,0 +1,50 @@ +// pkg-36/types-48 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3648 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3648 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_48 | null; children: Entity_36_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3648: number; y3648: string; z3648: boolean }; +} + +type Path_3648 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3648}` }[keyof T & string] : never; +type EP_3648 = Path_3648; + +type Val_3648 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3648 } + : T[K] extends object ? { t: 'o'; props: Val_3648 } + : { t: 'u' }; +}; +type EV_3648 = Val_3648; + +interface Registry_36_48 { + entities: Map; + validators: EV_3648; + paths: Set; + merged: DeepMerge_3648; +} + +type CK_3648 = `p36.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_48, Registry_36_48, CK_3648, EP_3648, EV_3648, DeepMerge_3648 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-49.ts new file mode 100644 index 00000000..c5020810 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-49.ts @@ -0,0 +1,50 @@ +// pkg-36/types-49 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3649 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3649 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_49 | null; children: Entity_36_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3649: number; y3649: string; z3649: boolean }; +} + +type Path_3649 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3649}` }[keyof T & string] : never; +type EP_3649 = Path_3649; + +type Val_3649 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3649 } + : T[K] extends object ? { t: 'o'; props: Val_3649 } + : { t: 'u' }; +}; +type EV_3649 = Val_3649; + +interface Registry_36_49 { + entities: Map; + validators: EV_3649; + paths: Set; + merged: DeepMerge_3649; +} + +type CK_3649 = `p36.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_49, Registry_36_49, CK_3649, EP_3649, EV_3649, DeepMerge_3649 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-36/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-36/types-50.ts new file mode 100644 index 00000000..3c8c5ff5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-36/types-50.ts @@ -0,0 +1,50 @@ +// pkg-36/types-50 - heavy interconnected types + +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; +import type { Entity_33_01, Registry_33_01 } from '../pkg-33/types-01'; +import type { Entity_33_10, Registry_33_10 } from '../pkg-33/types-10'; +import type { Entity_33_20, Registry_33_20 } from '../pkg-33/types-20'; + +type DeepMerge_3650 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3650 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_36_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_36_50 | null; children: Entity_36_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3650: number; y3650: string; z3650: boolean }; +} + +type Path_3650 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3650}` }[keyof T & string] : never; +type EP_3650 = Path_3650; + +type Val_3650 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3650 } + : T[K] extends object ? { t: 'o'; props: Val_3650 } + : { t: 'u' }; +}; +type EV_3650 = Val_3650; + +interface Registry_36_50 { + entities: Map; + validators: EV_3650; + paths: Set; + merged: DeepMerge_3650; +} + +type CK_3650 = `p36.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_36_50, Registry_36_50, CK_3650, EP_3650, EV_3650, DeepMerge_3650 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-37/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-01.ts new file mode 100644 index 00000000..777f3836 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-01.ts @@ -0,0 +1,50 @@ +// pkg-37/types-01 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3701 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3701 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_01 | null; children: Entity_37_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3701: number; y3701: string; z3701: boolean }; +} + +type Path_3701 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3701}` }[keyof T & string] : never; +type EP_3701 = Path_3701; + +type Val_3701 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3701 } + : T[K] extends object ? { t: 'o'; props: Val_3701 } + : { t: 'u' }; +}; +type EV_3701 = Val_3701; + +interface Registry_37_01 { + entities: Map; + validators: EV_3701; + paths: Set; + merged: DeepMerge_3701; +} + +type CK_3701 = `p37.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_01, Registry_37_01, CK_3701, EP_3701, EV_3701, DeepMerge_3701 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-02.ts new file mode 100644 index 00000000..222f4f1e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-02.ts @@ -0,0 +1,50 @@ +// pkg-37/types-02 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3702 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3702 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_02 | null; children: Entity_37_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3702: number; y3702: string; z3702: boolean }; +} + +type Path_3702 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3702}` }[keyof T & string] : never; +type EP_3702 = Path_3702; + +type Val_3702 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3702 } + : T[K] extends object ? { t: 'o'; props: Val_3702 } + : { t: 'u' }; +}; +type EV_3702 = Val_3702; + +interface Registry_37_02 { + entities: Map; + validators: EV_3702; + paths: Set; + merged: DeepMerge_3702; +} + +type CK_3702 = `p37.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_02, Registry_37_02, CK_3702, EP_3702, EV_3702, DeepMerge_3702 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-03.ts new file mode 100644 index 00000000..a46037fd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-03.ts @@ -0,0 +1,50 @@ +// pkg-37/types-03 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3703 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3703 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_03 | null; children: Entity_37_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3703: number; y3703: string; z3703: boolean }; +} + +type Path_3703 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3703}` }[keyof T & string] : never; +type EP_3703 = Path_3703; + +type Val_3703 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3703 } + : T[K] extends object ? { t: 'o'; props: Val_3703 } + : { t: 'u' }; +}; +type EV_3703 = Val_3703; + +interface Registry_37_03 { + entities: Map; + validators: EV_3703; + paths: Set; + merged: DeepMerge_3703; +} + +type CK_3703 = `p37.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_03, Registry_37_03, CK_3703, EP_3703, EV_3703, DeepMerge_3703 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-04.ts new file mode 100644 index 00000000..520bac83 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-04.ts @@ -0,0 +1,50 @@ +// pkg-37/types-04 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3704 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3704 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_04 | null; children: Entity_37_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3704: number; y3704: string; z3704: boolean }; +} + +type Path_3704 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3704}` }[keyof T & string] : never; +type EP_3704 = Path_3704; + +type Val_3704 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3704 } + : T[K] extends object ? { t: 'o'; props: Val_3704 } + : { t: 'u' }; +}; +type EV_3704 = Val_3704; + +interface Registry_37_04 { + entities: Map; + validators: EV_3704; + paths: Set; + merged: DeepMerge_3704; +} + +type CK_3704 = `p37.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_04, Registry_37_04, CK_3704, EP_3704, EV_3704, DeepMerge_3704 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-05.ts new file mode 100644 index 00000000..fe2caf3a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-05.ts @@ -0,0 +1,50 @@ +// pkg-37/types-05 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3705 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3705 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_05 | null; children: Entity_37_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3705: number; y3705: string; z3705: boolean }; +} + +type Path_3705 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3705}` }[keyof T & string] : never; +type EP_3705 = Path_3705; + +type Val_3705 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3705 } + : T[K] extends object ? { t: 'o'; props: Val_3705 } + : { t: 'u' }; +}; +type EV_3705 = Val_3705; + +interface Registry_37_05 { + entities: Map; + validators: EV_3705; + paths: Set; + merged: DeepMerge_3705; +} + +type CK_3705 = `p37.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_05, Registry_37_05, CK_3705, EP_3705, EV_3705, DeepMerge_3705 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-06.ts new file mode 100644 index 00000000..e8155229 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-06.ts @@ -0,0 +1,50 @@ +// pkg-37/types-06 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3706 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3706 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_06 | null; children: Entity_37_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3706: number; y3706: string; z3706: boolean }; +} + +type Path_3706 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3706}` }[keyof T & string] : never; +type EP_3706 = Path_3706; + +type Val_3706 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3706 } + : T[K] extends object ? { t: 'o'; props: Val_3706 } + : { t: 'u' }; +}; +type EV_3706 = Val_3706; + +interface Registry_37_06 { + entities: Map; + validators: EV_3706; + paths: Set; + merged: DeepMerge_3706; +} + +type CK_3706 = `p37.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_06, Registry_37_06, CK_3706, EP_3706, EV_3706, DeepMerge_3706 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-07.ts new file mode 100644 index 00000000..c701f364 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-07.ts @@ -0,0 +1,50 @@ +// pkg-37/types-07 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3707 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3707 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_07 | null; children: Entity_37_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3707: number; y3707: string; z3707: boolean }; +} + +type Path_3707 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3707}` }[keyof T & string] : never; +type EP_3707 = Path_3707; + +type Val_3707 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3707 } + : T[K] extends object ? { t: 'o'; props: Val_3707 } + : { t: 'u' }; +}; +type EV_3707 = Val_3707; + +interface Registry_37_07 { + entities: Map; + validators: EV_3707; + paths: Set; + merged: DeepMerge_3707; +} + +type CK_3707 = `p37.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_07, Registry_37_07, CK_3707, EP_3707, EV_3707, DeepMerge_3707 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-08.ts new file mode 100644 index 00000000..83516f2e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-08.ts @@ -0,0 +1,50 @@ +// pkg-37/types-08 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3708 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3708 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_08 | null; children: Entity_37_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3708: number; y3708: string; z3708: boolean }; +} + +type Path_3708 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3708}` }[keyof T & string] : never; +type EP_3708 = Path_3708; + +type Val_3708 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3708 } + : T[K] extends object ? { t: 'o'; props: Val_3708 } + : { t: 'u' }; +}; +type EV_3708 = Val_3708; + +interface Registry_37_08 { + entities: Map; + validators: EV_3708; + paths: Set; + merged: DeepMerge_3708; +} + +type CK_3708 = `p37.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_08, Registry_37_08, CK_3708, EP_3708, EV_3708, DeepMerge_3708 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-09.ts new file mode 100644 index 00000000..60208ed3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-09.ts @@ -0,0 +1,50 @@ +// pkg-37/types-09 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3709 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3709 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_09 | null; children: Entity_37_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3709: number; y3709: string; z3709: boolean }; +} + +type Path_3709 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3709}` }[keyof T & string] : never; +type EP_3709 = Path_3709; + +type Val_3709 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3709 } + : T[K] extends object ? { t: 'o'; props: Val_3709 } + : { t: 'u' }; +}; +type EV_3709 = Val_3709; + +interface Registry_37_09 { + entities: Map; + validators: EV_3709; + paths: Set; + merged: DeepMerge_3709; +} + +type CK_3709 = `p37.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_09, Registry_37_09, CK_3709, EP_3709, EV_3709, DeepMerge_3709 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-10.ts new file mode 100644 index 00000000..bf1f0634 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-10.ts @@ -0,0 +1,50 @@ +// pkg-37/types-10 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3710 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3710 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_10 | null; children: Entity_37_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3710: number; y3710: string; z3710: boolean }; +} + +type Path_3710 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3710}` }[keyof T & string] : never; +type EP_3710 = Path_3710; + +type Val_3710 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3710 } + : T[K] extends object ? { t: 'o'; props: Val_3710 } + : { t: 'u' }; +}; +type EV_3710 = Val_3710; + +interface Registry_37_10 { + entities: Map; + validators: EV_3710; + paths: Set; + merged: DeepMerge_3710; +} + +type CK_3710 = `p37.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_10, Registry_37_10, CK_3710, EP_3710, EV_3710, DeepMerge_3710 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-11.ts new file mode 100644 index 00000000..40533502 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-11.ts @@ -0,0 +1,50 @@ +// pkg-37/types-11 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3711 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3711 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_11 | null; children: Entity_37_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3711: number; y3711: string; z3711: boolean }; +} + +type Path_3711 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3711}` }[keyof T & string] : never; +type EP_3711 = Path_3711; + +type Val_3711 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3711 } + : T[K] extends object ? { t: 'o'; props: Val_3711 } + : { t: 'u' }; +}; +type EV_3711 = Val_3711; + +interface Registry_37_11 { + entities: Map; + validators: EV_3711; + paths: Set; + merged: DeepMerge_3711; +} + +type CK_3711 = `p37.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_11, Registry_37_11, CK_3711, EP_3711, EV_3711, DeepMerge_3711 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-12.ts new file mode 100644 index 00000000..1a556bf4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-12.ts @@ -0,0 +1,50 @@ +// pkg-37/types-12 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3712 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3712 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_12 | null; children: Entity_37_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3712: number; y3712: string; z3712: boolean }; +} + +type Path_3712 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3712}` }[keyof T & string] : never; +type EP_3712 = Path_3712; + +type Val_3712 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3712 } + : T[K] extends object ? { t: 'o'; props: Val_3712 } + : { t: 'u' }; +}; +type EV_3712 = Val_3712; + +interface Registry_37_12 { + entities: Map; + validators: EV_3712; + paths: Set; + merged: DeepMerge_3712; +} + +type CK_3712 = `p37.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_12, Registry_37_12, CK_3712, EP_3712, EV_3712, DeepMerge_3712 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-13.ts new file mode 100644 index 00000000..c8dff436 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-13.ts @@ -0,0 +1,50 @@ +// pkg-37/types-13 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3713 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3713 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_13 | null; children: Entity_37_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3713: number; y3713: string; z3713: boolean }; +} + +type Path_3713 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3713}` }[keyof T & string] : never; +type EP_3713 = Path_3713; + +type Val_3713 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3713 } + : T[K] extends object ? { t: 'o'; props: Val_3713 } + : { t: 'u' }; +}; +type EV_3713 = Val_3713; + +interface Registry_37_13 { + entities: Map; + validators: EV_3713; + paths: Set; + merged: DeepMerge_3713; +} + +type CK_3713 = `p37.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_13, Registry_37_13, CK_3713, EP_3713, EV_3713, DeepMerge_3713 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-14.ts new file mode 100644 index 00000000..21bcc9b6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-14.ts @@ -0,0 +1,50 @@ +// pkg-37/types-14 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3714 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3714 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_14 | null; children: Entity_37_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3714: number; y3714: string; z3714: boolean }; +} + +type Path_3714 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3714}` }[keyof T & string] : never; +type EP_3714 = Path_3714; + +type Val_3714 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3714 } + : T[K] extends object ? { t: 'o'; props: Val_3714 } + : { t: 'u' }; +}; +type EV_3714 = Val_3714; + +interface Registry_37_14 { + entities: Map; + validators: EV_3714; + paths: Set; + merged: DeepMerge_3714; +} + +type CK_3714 = `p37.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_14, Registry_37_14, CK_3714, EP_3714, EV_3714, DeepMerge_3714 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-15.ts new file mode 100644 index 00000000..11ecdcaf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-15.ts @@ -0,0 +1,50 @@ +// pkg-37/types-15 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3715 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3715 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_15 | null; children: Entity_37_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3715: number; y3715: string; z3715: boolean }; +} + +type Path_3715 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3715}` }[keyof T & string] : never; +type EP_3715 = Path_3715; + +type Val_3715 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3715 } + : T[K] extends object ? { t: 'o'; props: Val_3715 } + : { t: 'u' }; +}; +type EV_3715 = Val_3715; + +interface Registry_37_15 { + entities: Map; + validators: EV_3715; + paths: Set; + merged: DeepMerge_3715; +} + +type CK_3715 = `p37.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_15, Registry_37_15, CK_3715, EP_3715, EV_3715, DeepMerge_3715 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-16.ts new file mode 100644 index 00000000..f4b3fbb2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-16.ts @@ -0,0 +1,50 @@ +// pkg-37/types-16 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3716 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3716 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_16 | null; children: Entity_37_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3716: number; y3716: string; z3716: boolean }; +} + +type Path_3716 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3716}` }[keyof T & string] : never; +type EP_3716 = Path_3716; + +type Val_3716 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3716 } + : T[K] extends object ? { t: 'o'; props: Val_3716 } + : { t: 'u' }; +}; +type EV_3716 = Val_3716; + +interface Registry_37_16 { + entities: Map; + validators: EV_3716; + paths: Set; + merged: DeepMerge_3716; +} + +type CK_3716 = `p37.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_16, Registry_37_16, CK_3716, EP_3716, EV_3716, DeepMerge_3716 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-17.ts new file mode 100644 index 00000000..cc9ca989 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-17.ts @@ -0,0 +1,50 @@ +// pkg-37/types-17 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3717 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3717 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_17 | null; children: Entity_37_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3717: number; y3717: string; z3717: boolean }; +} + +type Path_3717 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3717}` }[keyof T & string] : never; +type EP_3717 = Path_3717; + +type Val_3717 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3717 } + : T[K] extends object ? { t: 'o'; props: Val_3717 } + : { t: 'u' }; +}; +type EV_3717 = Val_3717; + +interface Registry_37_17 { + entities: Map; + validators: EV_3717; + paths: Set; + merged: DeepMerge_3717; +} + +type CK_3717 = `p37.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_17, Registry_37_17, CK_3717, EP_3717, EV_3717, DeepMerge_3717 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-18.ts new file mode 100644 index 00000000..dabaf650 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-18.ts @@ -0,0 +1,50 @@ +// pkg-37/types-18 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3718 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3718 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_18 | null; children: Entity_37_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3718: number; y3718: string; z3718: boolean }; +} + +type Path_3718 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3718}` }[keyof T & string] : never; +type EP_3718 = Path_3718; + +type Val_3718 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3718 } + : T[K] extends object ? { t: 'o'; props: Val_3718 } + : { t: 'u' }; +}; +type EV_3718 = Val_3718; + +interface Registry_37_18 { + entities: Map; + validators: EV_3718; + paths: Set; + merged: DeepMerge_3718; +} + +type CK_3718 = `p37.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_18, Registry_37_18, CK_3718, EP_3718, EV_3718, DeepMerge_3718 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-19.ts new file mode 100644 index 00000000..4e108de5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-19.ts @@ -0,0 +1,50 @@ +// pkg-37/types-19 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3719 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3719 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_19 | null; children: Entity_37_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3719: number; y3719: string; z3719: boolean }; +} + +type Path_3719 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3719}` }[keyof T & string] : never; +type EP_3719 = Path_3719; + +type Val_3719 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3719 } + : T[K] extends object ? { t: 'o'; props: Val_3719 } + : { t: 'u' }; +}; +type EV_3719 = Val_3719; + +interface Registry_37_19 { + entities: Map; + validators: EV_3719; + paths: Set; + merged: DeepMerge_3719; +} + +type CK_3719 = `p37.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_19, Registry_37_19, CK_3719, EP_3719, EV_3719, DeepMerge_3719 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-20.ts new file mode 100644 index 00000000..cd73b55d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-20.ts @@ -0,0 +1,50 @@ +// pkg-37/types-20 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3720 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3720 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_20 | null; children: Entity_37_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3720: number; y3720: string; z3720: boolean }; +} + +type Path_3720 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3720}` }[keyof T & string] : never; +type EP_3720 = Path_3720; + +type Val_3720 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3720 } + : T[K] extends object ? { t: 'o'; props: Val_3720 } + : { t: 'u' }; +}; +type EV_3720 = Val_3720; + +interface Registry_37_20 { + entities: Map; + validators: EV_3720; + paths: Set; + merged: DeepMerge_3720; +} + +type CK_3720 = `p37.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_20, Registry_37_20, CK_3720, EP_3720, EV_3720, DeepMerge_3720 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-21.ts new file mode 100644 index 00000000..8ecc64bb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-21.ts @@ -0,0 +1,50 @@ +// pkg-37/types-21 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3721 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3721 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_21 | null; children: Entity_37_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3721: number; y3721: string; z3721: boolean }; +} + +type Path_3721 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3721}` }[keyof T & string] : never; +type EP_3721 = Path_3721; + +type Val_3721 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3721 } + : T[K] extends object ? { t: 'o'; props: Val_3721 } + : { t: 'u' }; +}; +type EV_3721 = Val_3721; + +interface Registry_37_21 { + entities: Map; + validators: EV_3721; + paths: Set; + merged: DeepMerge_3721; +} + +type CK_3721 = `p37.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_21, Registry_37_21, CK_3721, EP_3721, EV_3721, DeepMerge_3721 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-22.ts new file mode 100644 index 00000000..098f7563 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-22.ts @@ -0,0 +1,50 @@ +// pkg-37/types-22 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3722 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3722 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_22 | null; children: Entity_37_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3722: number; y3722: string; z3722: boolean }; +} + +type Path_3722 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3722}` }[keyof T & string] : never; +type EP_3722 = Path_3722; + +type Val_3722 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3722 } + : T[K] extends object ? { t: 'o'; props: Val_3722 } + : { t: 'u' }; +}; +type EV_3722 = Val_3722; + +interface Registry_37_22 { + entities: Map; + validators: EV_3722; + paths: Set; + merged: DeepMerge_3722; +} + +type CK_3722 = `p37.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_22, Registry_37_22, CK_3722, EP_3722, EV_3722, DeepMerge_3722 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-23.ts new file mode 100644 index 00000000..fe4f971d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-23.ts @@ -0,0 +1,50 @@ +// pkg-37/types-23 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3723 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3723 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_23 | null; children: Entity_37_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3723: number; y3723: string; z3723: boolean }; +} + +type Path_3723 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3723}` }[keyof T & string] : never; +type EP_3723 = Path_3723; + +type Val_3723 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3723 } + : T[K] extends object ? { t: 'o'; props: Val_3723 } + : { t: 'u' }; +}; +type EV_3723 = Val_3723; + +interface Registry_37_23 { + entities: Map; + validators: EV_3723; + paths: Set; + merged: DeepMerge_3723; +} + +type CK_3723 = `p37.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_23, Registry_37_23, CK_3723, EP_3723, EV_3723, DeepMerge_3723 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-24.ts new file mode 100644 index 00000000..fcd3f64c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-24.ts @@ -0,0 +1,50 @@ +// pkg-37/types-24 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3724 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3724 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_24 | null; children: Entity_37_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3724: number; y3724: string; z3724: boolean }; +} + +type Path_3724 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3724}` }[keyof T & string] : never; +type EP_3724 = Path_3724; + +type Val_3724 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3724 } + : T[K] extends object ? { t: 'o'; props: Val_3724 } + : { t: 'u' }; +}; +type EV_3724 = Val_3724; + +interface Registry_37_24 { + entities: Map; + validators: EV_3724; + paths: Set; + merged: DeepMerge_3724; +} + +type CK_3724 = `p37.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_24, Registry_37_24, CK_3724, EP_3724, EV_3724, DeepMerge_3724 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-25.ts new file mode 100644 index 00000000..47c73299 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-25.ts @@ -0,0 +1,50 @@ +// pkg-37/types-25 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3725 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3725 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_25 | null; children: Entity_37_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3725: number; y3725: string; z3725: boolean }; +} + +type Path_3725 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3725}` }[keyof T & string] : never; +type EP_3725 = Path_3725; + +type Val_3725 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3725 } + : T[K] extends object ? { t: 'o'; props: Val_3725 } + : { t: 'u' }; +}; +type EV_3725 = Val_3725; + +interface Registry_37_25 { + entities: Map; + validators: EV_3725; + paths: Set; + merged: DeepMerge_3725; +} + +type CK_3725 = `p37.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_25, Registry_37_25, CK_3725, EP_3725, EV_3725, DeepMerge_3725 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-26.ts new file mode 100644 index 00000000..b9719df3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-26.ts @@ -0,0 +1,50 @@ +// pkg-37/types-26 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3726 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3726 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_26 | null; children: Entity_37_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3726: number; y3726: string; z3726: boolean }; +} + +type Path_3726 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3726}` }[keyof T & string] : never; +type EP_3726 = Path_3726; + +type Val_3726 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3726 } + : T[K] extends object ? { t: 'o'; props: Val_3726 } + : { t: 'u' }; +}; +type EV_3726 = Val_3726; + +interface Registry_37_26 { + entities: Map; + validators: EV_3726; + paths: Set; + merged: DeepMerge_3726; +} + +type CK_3726 = `p37.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_26, Registry_37_26, CK_3726, EP_3726, EV_3726, DeepMerge_3726 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-27.ts new file mode 100644 index 00000000..ef0bc5df --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-27.ts @@ -0,0 +1,50 @@ +// pkg-37/types-27 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3727 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3727 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_27 | null; children: Entity_37_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3727: number; y3727: string; z3727: boolean }; +} + +type Path_3727 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3727}` }[keyof T & string] : never; +type EP_3727 = Path_3727; + +type Val_3727 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3727 } + : T[K] extends object ? { t: 'o'; props: Val_3727 } + : { t: 'u' }; +}; +type EV_3727 = Val_3727; + +interface Registry_37_27 { + entities: Map; + validators: EV_3727; + paths: Set; + merged: DeepMerge_3727; +} + +type CK_3727 = `p37.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_27, Registry_37_27, CK_3727, EP_3727, EV_3727, DeepMerge_3727 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-28.ts new file mode 100644 index 00000000..7b345772 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-28.ts @@ -0,0 +1,50 @@ +// pkg-37/types-28 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3728 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3728 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_28 | null; children: Entity_37_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3728: number; y3728: string; z3728: boolean }; +} + +type Path_3728 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3728}` }[keyof T & string] : never; +type EP_3728 = Path_3728; + +type Val_3728 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3728 } + : T[K] extends object ? { t: 'o'; props: Val_3728 } + : { t: 'u' }; +}; +type EV_3728 = Val_3728; + +interface Registry_37_28 { + entities: Map; + validators: EV_3728; + paths: Set; + merged: DeepMerge_3728; +} + +type CK_3728 = `p37.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_28, Registry_37_28, CK_3728, EP_3728, EV_3728, DeepMerge_3728 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-29.ts new file mode 100644 index 00000000..29d65eda --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-29.ts @@ -0,0 +1,50 @@ +// pkg-37/types-29 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3729 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3729 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_29 | null; children: Entity_37_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3729: number; y3729: string; z3729: boolean }; +} + +type Path_3729 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3729}` }[keyof T & string] : never; +type EP_3729 = Path_3729; + +type Val_3729 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3729 } + : T[K] extends object ? { t: 'o'; props: Val_3729 } + : { t: 'u' }; +}; +type EV_3729 = Val_3729; + +interface Registry_37_29 { + entities: Map; + validators: EV_3729; + paths: Set; + merged: DeepMerge_3729; +} + +type CK_3729 = `p37.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_29, Registry_37_29, CK_3729, EP_3729, EV_3729, DeepMerge_3729 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-30.ts new file mode 100644 index 00000000..04174907 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-30.ts @@ -0,0 +1,50 @@ +// pkg-37/types-30 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3730 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3730 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_30 | null; children: Entity_37_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3730: number; y3730: string; z3730: boolean }; +} + +type Path_3730 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3730}` }[keyof T & string] : never; +type EP_3730 = Path_3730; + +type Val_3730 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3730 } + : T[K] extends object ? { t: 'o'; props: Val_3730 } + : { t: 'u' }; +}; +type EV_3730 = Val_3730; + +interface Registry_37_30 { + entities: Map; + validators: EV_3730; + paths: Set; + merged: DeepMerge_3730; +} + +type CK_3730 = `p37.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_30, Registry_37_30, CK_3730, EP_3730, EV_3730, DeepMerge_3730 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-31.ts new file mode 100644 index 00000000..20680a23 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-31.ts @@ -0,0 +1,50 @@ +// pkg-37/types-31 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3731 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3731 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_31 | null; children: Entity_37_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3731: number; y3731: string; z3731: boolean }; +} + +type Path_3731 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3731}` }[keyof T & string] : never; +type EP_3731 = Path_3731; + +type Val_3731 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3731 } + : T[K] extends object ? { t: 'o'; props: Val_3731 } + : { t: 'u' }; +}; +type EV_3731 = Val_3731; + +interface Registry_37_31 { + entities: Map; + validators: EV_3731; + paths: Set; + merged: DeepMerge_3731; +} + +type CK_3731 = `p37.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_31, Registry_37_31, CK_3731, EP_3731, EV_3731, DeepMerge_3731 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-32.ts new file mode 100644 index 00000000..dbdc86cd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-32.ts @@ -0,0 +1,50 @@ +// pkg-37/types-32 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3732 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3732 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_32 | null; children: Entity_37_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3732: number; y3732: string; z3732: boolean }; +} + +type Path_3732 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3732}` }[keyof T & string] : never; +type EP_3732 = Path_3732; + +type Val_3732 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3732 } + : T[K] extends object ? { t: 'o'; props: Val_3732 } + : { t: 'u' }; +}; +type EV_3732 = Val_3732; + +interface Registry_37_32 { + entities: Map; + validators: EV_3732; + paths: Set; + merged: DeepMerge_3732; +} + +type CK_3732 = `p37.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_32, Registry_37_32, CK_3732, EP_3732, EV_3732, DeepMerge_3732 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-33.ts new file mode 100644 index 00000000..d65a0a01 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-33.ts @@ -0,0 +1,50 @@ +// pkg-37/types-33 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3733 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3733 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_33 | null; children: Entity_37_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3733: number; y3733: string; z3733: boolean }; +} + +type Path_3733 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3733}` }[keyof T & string] : never; +type EP_3733 = Path_3733; + +type Val_3733 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3733 } + : T[K] extends object ? { t: 'o'; props: Val_3733 } + : { t: 'u' }; +}; +type EV_3733 = Val_3733; + +interface Registry_37_33 { + entities: Map; + validators: EV_3733; + paths: Set; + merged: DeepMerge_3733; +} + +type CK_3733 = `p37.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_33, Registry_37_33, CK_3733, EP_3733, EV_3733, DeepMerge_3733 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-34.ts new file mode 100644 index 00000000..409ae7cc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-34.ts @@ -0,0 +1,50 @@ +// pkg-37/types-34 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3734 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3734 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_34 | null; children: Entity_37_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3734: number; y3734: string; z3734: boolean }; +} + +type Path_3734 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3734}` }[keyof T & string] : never; +type EP_3734 = Path_3734; + +type Val_3734 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3734 } + : T[K] extends object ? { t: 'o'; props: Val_3734 } + : { t: 'u' }; +}; +type EV_3734 = Val_3734; + +interface Registry_37_34 { + entities: Map; + validators: EV_3734; + paths: Set; + merged: DeepMerge_3734; +} + +type CK_3734 = `p37.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_34, Registry_37_34, CK_3734, EP_3734, EV_3734, DeepMerge_3734 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-35.ts new file mode 100644 index 00000000..0e83696e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-35.ts @@ -0,0 +1,50 @@ +// pkg-37/types-35 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3735 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3735 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_35 | null; children: Entity_37_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3735: number; y3735: string; z3735: boolean }; +} + +type Path_3735 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3735}` }[keyof T & string] : never; +type EP_3735 = Path_3735; + +type Val_3735 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3735 } + : T[K] extends object ? { t: 'o'; props: Val_3735 } + : { t: 'u' }; +}; +type EV_3735 = Val_3735; + +interface Registry_37_35 { + entities: Map; + validators: EV_3735; + paths: Set; + merged: DeepMerge_3735; +} + +type CK_3735 = `p37.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_35, Registry_37_35, CK_3735, EP_3735, EV_3735, DeepMerge_3735 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-36.ts new file mode 100644 index 00000000..edab73d2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-36.ts @@ -0,0 +1,50 @@ +// pkg-37/types-36 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3736 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3736 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_36 | null; children: Entity_37_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3736: number; y3736: string; z3736: boolean }; +} + +type Path_3736 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3736}` }[keyof T & string] : never; +type EP_3736 = Path_3736; + +type Val_3736 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3736 } + : T[K] extends object ? { t: 'o'; props: Val_3736 } + : { t: 'u' }; +}; +type EV_3736 = Val_3736; + +interface Registry_37_36 { + entities: Map; + validators: EV_3736; + paths: Set; + merged: DeepMerge_3736; +} + +type CK_3736 = `p37.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_36, Registry_37_36, CK_3736, EP_3736, EV_3736, DeepMerge_3736 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-37.ts new file mode 100644 index 00000000..f0496b78 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-37.ts @@ -0,0 +1,50 @@ +// pkg-37/types-37 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3737 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3737 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_37 | null; children: Entity_37_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3737: number; y3737: string; z3737: boolean }; +} + +type Path_3737 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3737}` }[keyof T & string] : never; +type EP_3737 = Path_3737; + +type Val_3737 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3737 } + : T[K] extends object ? { t: 'o'; props: Val_3737 } + : { t: 'u' }; +}; +type EV_3737 = Val_3737; + +interface Registry_37_37 { + entities: Map; + validators: EV_3737; + paths: Set; + merged: DeepMerge_3737; +} + +type CK_3737 = `p37.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_37, Registry_37_37, CK_3737, EP_3737, EV_3737, DeepMerge_3737 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-38.ts new file mode 100644 index 00000000..c1148dfc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-38.ts @@ -0,0 +1,50 @@ +// pkg-37/types-38 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3738 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3738 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_38 | null; children: Entity_37_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3738: number; y3738: string; z3738: boolean }; +} + +type Path_3738 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3738}` }[keyof T & string] : never; +type EP_3738 = Path_3738; + +type Val_3738 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3738 } + : T[K] extends object ? { t: 'o'; props: Val_3738 } + : { t: 'u' }; +}; +type EV_3738 = Val_3738; + +interface Registry_37_38 { + entities: Map; + validators: EV_3738; + paths: Set; + merged: DeepMerge_3738; +} + +type CK_3738 = `p37.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_38, Registry_37_38, CK_3738, EP_3738, EV_3738, DeepMerge_3738 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-39.ts new file mode 100644 index 00000000..d38f5d96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-39.ts @@ -0,0 +1,50 @@ +// pkg-37/types-39 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3739 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3739 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_39 | null; children: Entity_37_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3739: number; y3739: string; z3739: boolean }; +} + +type Path_3739 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3739}` }[keyof T & string] : never; +type EP_3739 = Path_3739; + +type Val_3739 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3739 } + : T[K] extends object ? { t: 'o'; props: Val_3739 } + : { t: 'u' }; +}; +type EV_3739 = Val_3739; + +interface Registry_37_39 { + entities: Map; + validators: EV_3739; + paths: Set; + merged: DeepMerge_3739; +} + +type CK_3739 = `p37.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_39, Registry_37_39, CK_3739, EP_3739, EV_3739, DeepMerge_3739 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-40.ts new file mode 100644 index 00000000..08a89a91 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-40.ts @@ -0,0 +1,50 @@ +// pkg-37/types-40 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3740 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3740 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_40 | null; children: Entity_37_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3740: number; y3740: string; z3740: boolean }; +} + +type Path_3740 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3740}` }[keyof T & string] : never; +type EP_3740 = Path_3740; + +type Val_3740 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3740 } + : T[K] extends object ? { t: 'o'; props: Val_3740 } + : { t: 'u' }; +}; +type EV_3740 = Val_3740; + +interface Registry_37_40 { + entities: Map; + validators: EV_3740; + paths: Set; + merged: DeepMerge_3740; +} + +type CK_3740 = `p37.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_40, Registry_37_40, CK_3740, EP_3740, EV_3740, DeepMerge_3740 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-41.ts new file mode 100644 index 00000000..cb7504b2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-41.ts @@ -0,0 +1,50 @@ +// pkg-37/types-41 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3741 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3741 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_41 | null; children: Entity_37_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3741: number; y3741: string; z3741: boolean }; +} + +type Path_3741 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3741}` }[keyof T & string] : never; +type EP_3741 = Path_3741; + +type Val_3741 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3741 } + : T[K] extends object ? { t: 'o'; props: Val_3741 } + : { t: 'u' }; +}; +type EV_3741 = Val_3741; + +interface Registry_37_41 { + entities: Map; + validators: EV_3741; + paths: Set; + merged: DeepMerge_3741; +} + +type CK_3741 = `p37.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_41, Registry_37_41, CK_3741, EP_3741, EV_3741, DeepMerge_3741 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-42.ts new file mode 100644 index 00000000..68c7643a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-42.ts @@ -0,0 +1,50 @@ +// pkg-37/types-42 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3742 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3742 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_42 | null; children: Entity_37_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3742: number; y3742: string; z3742: boolean }; +} + +type Path_3742 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3742}` }[keyof T & string] : never; +type EP_3742 = Path_3742; + +type Val_3742 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3742 } + : T[K] extends object ? { t: 'o'; props: Val_3742 } + : { t: 'u' }; +}; +type EV_3742 = Val_3742; + +interface Registry_37_42 { + entities: Map; + validators: EV_3742; + paths: Set; + merged: DeepMerge_3742; +} + +type CK_3742 = `p37.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_42, Registry_37_42, CK_3742, EP_3742, EV_3742, DeepMerge_3742 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-43.ts new file mode 100644 index 00000000..0cf1eb06 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-43.ts @@ -0,0 +1,50 @@ +// pkg-37/types-43 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3743 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3743 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_43 | null; children: Entity_37_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3743: number; y3743: string; z3743: boolean }; +} + +type Path_3743 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3743}` }[keyof T & string] : never; +type EP_3743 = Path_3743; + +type Val_3743 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3743 } + : T[K] extends object ? { t: 'o'; props: Val_3743 } + : { t: 'u' }; +}; +type EV_3743 = Val_3743; + +interface Registry_37_43 { + entities: Map; + validators: EV_3743; + paths: Set; + merged: DeepMerge_3743; +} + +type CK_3743 = `p37.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_43, Registry_37_43, CK_3743, EP_3743, EV_3743, DeepMerge_3743 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-44.ts new file mode 100644 index 00000000..51bbc3ef --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-44.ts @@ -0,0 +1,50 @@ +// pkg-37/types-44 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3744 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3744 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_44 | null; children: Entity_37_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3744: number; y3744: string; z3744: boolean }; +} + +type Path_3744 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3744}` }[keyof T & string] : never; +type EP_3744 = Path_3744; + +type Val_3744 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3744 } + : T[K] extends object ? { t: 'o'; props: Val_3744 } + : { t: 'u' }; +}; +type EV_3744 = Val_3744; + +interface Registry_37_44 { + entities: Map; + validators: EV_3744; + paths: Set; + merged: DeepMerge_3744; +} + +type CK_3744 = `p37.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_44, Registry_37_44, CK_3744, EP_3744, EV_3744, DeepMerge_3744 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-45.ts new file mode 100644 index 00000000..347fc3da --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-45.ts @@ -0,0 +1,50 @@ +// pkg-37/types-45 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3745 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3745 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_45 | null; children: Entity_37_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3745: number; y3745: string; z3745: boolean }; +} + +type Path_3745 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3745}` }[keyof T & string] : never; +type EP_3745 = Path_3745; + +type Val_3745 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3745 } + : T[K] extends object ? { t: 'o'; props: Val_3745 } + : { t: 'u' }; +}; +type EV_3745 = Val_3745; + +interface Registry_37_45 { + entities: Map; + validators: EV_3745; + paths: Set; + merged: DeepMerge_3745; +} + +type CK_3745 = `p37.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_45, Registry_37_45, CK_3745, EP_3745, EV_3745, DeepMerge_3745 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-46.ts new file mode 100644 index 00000000..42fdeb2c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-46.ts @@ -0,0 +1,50 @@ +// pkg-37/types-46 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3746 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3746 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_46 | null; children: Entity_37_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3746: number; y3746: string; z3746: boolean }; +} + +type Path_3746 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3746}` }[keyof T & string] : never; +type EP_3746 = Path_3746; + +type Val_3746 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3746 } + : T[K] extends object ? { t: 'o'; props: Val_3746 } + : { t: 'u' }; +}; +type EV_3746 = Val_3746; + +interface Registry_37_46 { + entities: Map; + validators: EV_3746; + paths: Set; + merged: DeepMerge_3746; +} + +type CK_3746 = `p37.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_46, Registry_37_46, CK_3746, EP_3746, EV_3746, DeepMerge_3746 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-47.ts new file mode 100644 index 00000000..ea457091 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-47.ts @@ -0,0 +1,50 @@ +// pkg-37/types-47 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3747 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3747 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_47 | null; children: Entity_37_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3747: number; y3747: string; z3747: boolean }; +} + +type Path_3747 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3747}` }[keyof T & string] : never; +type EP_3747 = Path_3747; + +type Val_3747 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3747 } + : T[K] extends object ? { t: 'o'; props: Val_3747 } + : { t: 'u' }; +}; +type EV_3747 = Val_3747; + +interface Registry_37_47 { + entities: Map; + validators: EV_3747; + paths: Set; + merged: DeepMerge_3747; +} + +type CK_3747 = `p37.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_47, Registry_37_47, CK_3747, EP_3747, EV_3747, DeepMerge_3747 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-48.ts new file mode 100644 index 00000000..dbb1fc93 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-48.ts @@ -0,0 +1,50 @@ +// pkg-37/types-48 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3748 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3748 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_48 | null; children: Entity_37_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3748: number; y3748: string; z3748: boolean }; +} + +type Path_3748 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3748}` }[keyof T & string] : never; +type EP_3748 = Path_3748; + +type Val_3748 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3748 } + : T[K] extends object ? { t: 'o'; props: Val_3748 } + : { t: 'u' }; +}; +type EV_3748 = Val_3748; + +interface Registry_37_48 { + entities: Map; + validators: EV_3748; + paths: Set; + merged: DeepMerge_3748; +} + +type CK_3748 = `p37.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_48, Registry_37_48, CK_3748, EP_3748, EV_3748, DeepMerge_3748 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-49.ts new file mode 100644 index 00000000..986fefb6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-49.ts @@ -0,0 +1,50 @@ +// pkg-37/types-49 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3749 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3749 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_49 | null; children: Entity_37_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3749: number; y3749: string; z3749: boolean }; +} + +type Path_3749 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3749}` }[keyof T & string] : never; +type EP_3749 = Path_3749; + +type Val_3749 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3749 } + : T[K] extends object ? { t: 'o'; props: Val_3749 } + : { t: 'u' }; +}; +type EV_3749 = Val_3749; + +interface Registry_37_49 { + entities: Map; + validators: EV_3749; + paths: Set; + merged: DeepMerge_3749; +} + +type CK_3749 = `p37.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_49, Registry_37_49, CK_3749, EP_3749, EV_3749, DeepMerge_3749 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-37/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-37/types-50.ts new file mode 100644 index 00000000..7315b810 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-37/types-50.ts @@ -0,0 +1,50 @@ +// pkg-37/types-50 - heavy interconnected types + +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; +import type { Entity_34_01, Registry_34_01 } from '../pkg-34/types-01'; +import type { Entity_34_10, Registry_34_10 } from '../pkg-34/types-10'; +import type { Entity_34_20, Registry_34_20 } from '../pkg-34/types-20'; + +type DeepMerge_3750 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3750 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_37_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_37_50 | null; children: Entity_37_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3750: number; y3750: string; z3750: boolean }; +} + +type Path_3750 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3750}` }[keyof T & string] : never; +type EP_3750 = Path_3750; + +type Val_3750 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3750 } + : T[K] extends object ? { t: 'o'; props: Val_3750 } + : { t: 'u' }; +}; +type EV_3750 = Val_3750; + +interface Registry_37_50 { + entities: Map; + validators: EV_3750; + paths: Set; + merged: DeepMerge_3750; +} + +type CK_3750 = `p37.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_37_50, Registry_37_50, CK_3750, EP_3750, EV_3750, DeepMerge_3750 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-38/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-01.ts new file mode 100644 index 00000000..39df055d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-01.ts @@ -0,0 +1,50 @@ +// pkg-38/types-01 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3801 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3801 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_01 | null; children: Entity_38_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3801: number; y3801: string; z3801: boolean }; +} + +type Path_3801 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3801}` }[keyof T & string] : never; +type EP_3801 = Path_3801; + +type Val_3801 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3801 } + : T[K] extends object ? { t: 'o'; props: Val_3801 } + : { t: 'u' }; +}; +type EV_3801 = Val_3801; + +interface Registry_38_01 { + entities: Map; + validators: EV_3801; + paths: Set; + merged: DeepMerge_3801; +} + +type CK_3801 = `p38.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_01, Registry_38_01, CK_3801, EP_3801, EV_3801, DeepMerge_3801 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-02.ts new file mode 100644 index 00000000..9020578c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-02.ts @@ -0,0 +1,50 @@ +// pkg-38/types-02 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3802 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3802 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_02 | null; children: Entity_38_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3802: number; y3802: string; z3802: boolean }; +} + +type Path_3802 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3802}` }[keyof T & string] : never; +type EP_3802 = Path_3802; + +type Val_3802 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3802 } + : T[K] extends object ? { t: 'o'; props: Val_3802 } + : { t: 'u' }; +}; +type EV_3802 = Val_3802; + +interface Registry_38_02 { + entities: Map; + validators: EV_3802; + paths: Set; + merged: DeepMerge_3802; +} + +type CK_3802 = `p38.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_02, Registry_38_02, CK_3802, EP_3802, EV_3802, DeepMerge_3802 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-03.ts new file mode 100644 index 00000000..94dec9be --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-03.ts @@ -0,0 +1,50 @@ +// pkg-38/types-03 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3803 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3803 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_03 | null; children: Entity_38_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3803: number; y3803: string; z3803: boolean }; +} + +type Path_3803 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3803}` }[keyof T & string] : never; +type EP_3803 = Path_3803; + +type Val_3803 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3803 } + : T[K] extends object ? { t: 'o'; props: Val_3803 } + : { t: 'u' }; +}; +type EV_3803 = Val_3803; + +interface Registry_38_03 { + entities: Map; + validators: EV_3803; + paths: Set; + merged: DeepMerge_3803; +} + +type CK_3803 = `p38.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_03, Registry_38_03, CK_3803, EP_3803, EV_3803, DeepMerge_3803 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-04.ts new file mode 100644 index 00000000..d36813e2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-04.ts @@ -0,0 +1,50 @@ +// pkg-38/types-04 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3804 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3804 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_04 | null; children: Entity_38_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3804: number; y3804: string; z3804: boolean }; +} + +type Path_3804 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3804}` }[keyof T & string] : never; +type EP_3804 = Path_3804; + +type Val_3804 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3804 } + : T[K] extends object ? { t: 'o'; props: Val_3804 } + : { t: 'u' }; +}; +type EV_3804 = Val_3804; + +interface Registry_38_04 { + entities: Map; + validators: EV_3804; + paths: Set; + merged: DeepMerge_3804; +} + +type CK_3804 = `p38.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_04, Registry_38_04, CK_3804, EP_3804, EV_3804, DeepMerge_3804 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-05.ts new file mode 100644 index 00000000..18ced2f9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-05.ts @@ -0,0 +1,50 @@ +// pkg-38/types-05 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3805 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3805 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_05 | null; children: Entity_38_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3805: number; y3805: string; z3805: boolean }; +} + +type Path_3805 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3805}` }[keyof T & string] : never; +type EP_3805 = Path_3805; + +type Val_3805 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3805 } + : T[K] extends object ? { t: 'o'; props: Val_3805 } + : { t: 'u' }; +}; +type EV_3805 = Val_3805; + +interface Registry_38_05 { + entities: Map; + validators: EV_3805; + paths: Set; + merged: DeepMerge_3805; +} + +type CK_3805 = `p38.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_05, Registry_38_05, CK_3805, EP_3805, EV_3805, DeepMerge_3805 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-06.ts new file mode 100644 index 00000000..1ef1cf2e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-06.ts @@ -0,0 +1,50 @@ +// pkg-38/types-06 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3806 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3806 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_06 | null; children: Entity_38_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3806: number; y3806: string; z3806: boolean }; +} + +type Path_3806 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3806}` }[keyof T & string] : never; +type EP_3806 = Path_3806; + +type Val_3806 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3806 } + : T[K] extends object ? { t: 'o'; props: Val_3806 } + : { t: 'u' }; +}; +type EV_3806 = Val_3806; + +interface Registry_38_06 { + entities: Map; + validators: EV_3806; + paths: Set; + merged: DeepMerge_3806; +} + +type CK_3806 = `p38.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_06, Registry_38_06, CK_3806, EP_3806, EV_3806, DeepMerge_3806 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-07.ts new file mode 100644 index 00000000..ca2c5858 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-07.ts @@ -0,0 +1,50 @@ +// pkg-38/types-07 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3807 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3807 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_07 | null; children: Entity_38_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3807: number; y3807: string; z3807: boolean }; +} + +type Path_3807 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3807}` }[keyof T & string] : never; +type EP_3807 = Path_3807; + +type Val_3807 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3807 } + : T[K] extends object ? { t: 'o'; props: Val_3807 } + : { t: 'u' }; +}; +type EV_3807 = Val_3807; + +interface Registry_38_07 { + entities: Map; + validators: EV_3807; + paths: Set; + merged: DeepMerge_3807; +} + +type CK_3807 = `p38.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_07, Registry_38_07, CK_3807, EP_3807, EV_3807, DeepMerge_3807 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-08.ts new file mode 100644 index 00000000..daf7c2e6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-08.ts @@ -0,0 +1,50 @@ +// pkg-38/types-08 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3808 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3808 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_08 | null; children: Entity_38_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3808: number; y3808: string; z3808: boolean }; +} + +type Path_3808 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3808}` }[keyof T & string] : never; +type EP_3808 = Path_3808; + +type Val_3808 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3808 } + : T[K] extends object ? { t: 'o'; props: Val_3808 } + : { t: 'u' }; +}; +type EV_3808 = Val_3808; + +interface Registry_38_08 { + entities: Map; + validators: EV_3808; + paths: Set; + merged: DeepMerge_3808; +} + +type CK_3808 = `p38.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_08, Registry_38_08, CK_3808, EP_3808, EV_3808, DeepMerge_3808 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-09.ts new file mode 100644 index 00000000..44e26a16 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-09.ts @@ -0,0 +1,50 @@ +// pkg-38/types-09 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3809 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3809 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_09 | null; children: Entity_38_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3809: number; y3809: string; z3809: boolean }; +} + +type Path_3809 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3809}` }[keyof T & string] : never; +type EP_3809 = Path_3809; + +type Val_3809 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3809 } + : T[K] extends object ? { t: 'o'; props: Val_3809 } + : { t: 'u' }; +}; +type EV_3809 = Val_3809; + +interface Registry_38_09 { + entities: Map; + validators: EV_3809; + paths: Set; + merged: DeepMerge_3809; +} + +type CK_3809 = `p38.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_09, Registry_38_09, CK_3809, EP_3809, EV_3809, DeepMerge_3809 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-10.ts new file mode 100644 index 00000000..631a8485 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-10.ts @@ -0,0 +1,50 @@ +// pkg-38/types-10 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3810 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3810 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_10 | null; children: Entity_38_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3810: number; y3810: string; z3810: boolean }; +} + +type Path_3810 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3810}` }[keyof T & string] : never; +type EP_3810 = Path_3810; + +type Val_3810 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3810 } + : T[K] extends object ? { t: 'o'; props: Val_3810 } + : { t: 'u' }; +}; +type EV_3810 = Val_3810; + +interface Registry_38_10 { + entities: Map; + validators: EV_3810; + paths: Set; + merged: DeepMerge_3810; +} + +type CK_3810 = `p38.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_10, Registry_38_10, CK_3810, EP_3810, EV_3810, DeepMerge_3810 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-11.ts new file mode 100644 index 00000000..7d17bd54 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-11.ts @@ -0,0 +1,50 @@ +// pkg-38/types-11 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3811 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3811 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_11 | null; children: Entity_38_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3811: number; y3811: string; z3811: boolean }; +} + +type Path_3811 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3811}` }[keyof T & string] : never; +type EP_3811 = Path_3811; + +type Val_3811 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3811 } + : T[K] extends object ? { t: 'o'; props: Val_3811 } + : { t: 'u' }; +}; +type EV_3811 = Val_3811; + +interface Registry_38_11 { + entities: Map; + validators: EV_3811; + paths: Set; + merged: DeepMerge_3811; +} + +type CK_3811 = `p38.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_11, Registry_38_11, CK_3811, EP_3811, EV_3811, DeepMerge_3811 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-12.ts new file mode 100644 index 00000000..2b7b1595 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-12.ts @@ -0,0 +1,50 @@ +// pkg-38/types-12 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3812 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3812 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_12 | null; children: Entity_38_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3812: number; y3812: string; z3812: boolean }; +} + +type Path_3812 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3812}` }[keyof T & string] : never; +type EP_3812 = Path_3812; + +type Val_3812 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3812 } + : T[K] extends object ? { t: 'o'; props: Val_3812 } + : { t: 'u' }; +}; +type EV_3812 = Val_3812; + +interface Registry_38_12 { + entities: Map; + validators: EV_3812; + paths: Set; + merged: DeepMerge_3812; +} + +type CK_3812 = `p38.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_12, Registry_38_12, CK_3812, EP_3812, EV_3812, DeepMerge_3812 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-13.ts new file mode 100644 index 00000000..f03e0c1e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-13.ts @@ -0,0 +1,50 @@ +// pkg-38/types-13 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3813 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3813 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_13 | null; children: Entity_38_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3813: number; y3813: string; z3813: boolean }; +} + +type Path_3813 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3813}` }[keyof T & string] : never; +type EP_3813 = Path_3813; + +type Val_3813 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3813 } + : T[K] extends object ? { t: 'o'; props: Val_3813 } + : { t: 'u' }; +}; +type EV_3813 = Val_3813; + +interface Registry_38_13 { + entities: Map; + validators: EV_3813; + paths: Set; + merged: DeepMerge_3813; +} + +type CK_3813 = `p38.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_13, Registry_38_13, CK_3813, EP_3813, EV_3813, DeepMerge_3813 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-14.ts new file mode 100644 index 00000000..59563cab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-14.ts @@ -0,0 +1,50 @@ +// pkg-38/types-14 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3814 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3814 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_14 | null; children: Entity_38_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3814: number; y3814: string; z3814: boolean }; +} + +type Path_3814 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3814}` }[keyof T & string] : never; +type EP_3814 = Path_3814; + +type Val_3814 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3814 } + : T[K] extends object ? { t: 'o'; props: Val_3814 } + : { t: 'u' }; +}; +type EV_3814 = Val_3814; + +interface Registry_38_14 { + entities: Map; + validators: EV_3814; + paths: Set; + merged: DeepMerge_3814; +} + +type CK_3814 = `p38.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_14, Registry_38_14, CK_3814, EP_3814, EV_3814, DeepMerge_3814 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-15.ts new file mode 100644 index 00000000..2027bd53 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-15.ts @@ -0,0 +1,50 @@ +// pkg-38/types-15 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3815 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3815 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_15 | null; children: Entity_38_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3815: number; y3815: string; z3815: boolean }; +} + +type Path_3815 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3815}` }[keyof T & string] : never; +type EP_3815 = Path_3815; + +type Val_3815 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3815 } + : T[K] extends object ? { t: 'o'; props: Val_3815 } + : { t: 'u' }; +}; +type EV_3815 = Val_3815; + +interface Registry_38_15 { + entities: Map; + validators: EV_3815; + paths: Set; + merged: DeepMerge_3815; +} + +type CK_3815 = `p38.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_15, Registry_38_15, CK_3815, EP_3815, EV_3815, DeepMerge_3815 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-16.ts new file mode 100644 index 00000000..148ca799 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-16.ts @@ -0,0 +1,50 @@ +// pkg-38/types-16 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3816 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3816 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_16 | null; children: Entity_38_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3816: number; y3816: string; z3816: boolean }; +} + +type Path_3816 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3816}` }[keyof T & string] : never; +type EP_3816 = Path_3816; + +type Val_3816 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3816 } + : T[K] extends object ? { t: 'o'; props: Val_3816 } + : { t: 'u' }; +}; +type EV_3816 = Val_3816; + +interface Registry_38_16 { + entities: Map; + validators: EV_3816; + paths: Set; + merged: DeepMerge_3816; +} + +type CK_3816 = `p38.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_16, Registry_38_16, CK_3816, EP_3816, EV_3816, DeepMerge_3816 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-17.ts new file mode 100644 index 00000000..09ee3857 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-17.ts @@ -0,0 +1,50 @@ +// pkg-38/types-17 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3817 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3817 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_17 | null; children: Entity_38_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3817: number; y3817: string; z3817: boolean }; +} + +type Path_3817 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3817}` }[keyof T & string] : never; +type EP_3817 = Path_3817; + +type Val_3817 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3817 } + : T[K] extends object ? { t: 'o'; props: Val_3817 } + : { t: 'u' }; +}; +type EV_3817 = Val_3817; + +interface Registry_38_17 { + entities: Map; + validators: EV_3817; + paths: Set; + merged: DeepMerge_3817; +} + +type CK_3817 = `p38.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_17, Registry_38_17, CK_3817, EP_3817, EV_3817, DeepMerge_3817 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-18.ts new file mode 100644 index 00000000..4a8edcce --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-18.ts @@ -0,0 +1,50 @@ +// pkg-38/types-18 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3818 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3818 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_18 | null; children: Entity_38_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3818: number; y3818: string; z3818: boolean }; +} + +type Path_3818 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3818}` }[keyof T & string] : never; +type EP_3818 = Path_3818; + +type Val_3818 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3818 } + : T[K] extends object ? { t: 'o'; props: Val_3818 } + : { t: 'u' }; +}; +type EV_3818 = Val_3818; + +interface Registry_38_18 { + entities: Map; + validators: EV_3818; + paths: Set; + merged: DeepMerge_3818; +} + +type CK_3818 = `p38.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_18, Registry_38_18, CK_3818, EP_3818, EV_3818, DeepMerge_3818 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-19.ts new file mode 100644 index 00000000..dcddb5b1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-19.ts @@ -0,0 +1,50 @@ +// pkg-38/types-19 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3819 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3819 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_19 | null; children: Entity_38_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3819: number; y3819: string; z3819: boolean }; +} + +type Path_3819 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3819}` }[keyof T & string] : never; +type EP_3819 = Path_3819; + +type Val_3819 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3819 } + : T[K] extends object ? { t: 'o'; props: Val_3819 } + : { t: 'u' }; +}; +type EV_3819 = Val_3819; + +interface Registry_38_19 { + entities: Map; + validators: EV_3819; + paths: Set; + merged: DeepMerge_3819; +} + +type CK_3819 = `p38.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_19, Registry_38_19, CK_3819, EP_3819, EV_3819, DeepMerge_3819 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-20.ts new file mode 100644 index 00000000..11634c05 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-20.ts @@ -0,0 +1,50 @@ +// pkg-38/types-20 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3820 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3820 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_20 | null; children: Entity_38_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3820: number; y3820: string; z3820: boolean }; +} + +type Path_3820 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3820}` }[keyof T & string] : never; +type EP_3820 = Path_3820; + +type Val_3820 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3820 } + : T[K] extends object ? { t: 'o'; props: Val_3820 } + : { t: 'u' }; +}; +type EV_3820 = Val_3820; + +interface Registry_38_20 { + entities: Map; + validators: EV_3820; + paths: Set; + merged: DeepMerge_3820; +} + +type CK_3820 = `p38.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_20, Registry_38_20, CK_3820, EP_3820, EV_3820, DeepMerge_3820 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-21.ts new file mode 100644 index 00000000..6cb1c770 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-21.ts @@ -0,0 +1,50 @@ +// pkg-38/types-21 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3821 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3821 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_21 | null; children: Entity_38_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3821: number; y3821: string; z3821: boolean }; +} + +type Path_3821 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3821}` }[keyof T & string] : never; +type EP_3821 = Path_3821; + +type Val_3821 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3821 } + : T[K] extends object ? { t: 'o'; props: Val_3821 } + : { t: 'u' }; +}; +type EV_3821 = Val_3821; + +interface Registry_38_21 { + entities: Map; + validators: EV_3821; + paths: Set; + merged: DeepMerge_3821; +} + +type CK_3821 = `p38.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_21, Registry_38_21, CK_3821, EP_3821, EV_3821, DeepMerge_3821 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-22.ts new file mode 100644 index 00000000..29df84f0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-22.ts @@ -0,0 +1,50 @@ +// pkg-38/types-22 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3822 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3822 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_22 | null; children: Entity_38_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3822: number; y3822: string; z3822: boolean }; +} + +type Path_3822 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3822}` }[keyof T & string] : never; +type EP_3822 = Path_3822; + +type Val_3822 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3822 } + : T[K] extends object ? { t: 'o'; props: Val_3822 } + : { t: 'u' }; +}; +type EV_3822 = Val_3822; + +interface Registry_38_22 { + entities: Map; + validators: EV_3822; + paths: Set; + merged: DeepMerge_3822; +} + +type CK_3822 = `p38.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_22, Registry_38_22, CK_3822, EP_3822, EV_3822, DeepMerge_3822 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-23.ts new file mode 100644 index 00000000..258c2ab5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-23.ts @@ -0,0 +1,50 @@ +// pkg-38/types-23 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3823 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3823 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_23 | null; children: Entity_38_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3823: number; y3823: string; z3823: boolean }; +} + +type Path_3823 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3823}` }[keyof T & string] : never; +type EP_3823 = Path_3823; + +type Val_3823 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3823 } + : T[K] extends object ? { t: 'o'; props: Val_3823 } + : { t: 'u' }; +}; +type EV_3823 = Val_3823; + +interface Registry_38_23 { + entities: Map; + validators: EV_3823; + paths: Set; + merged: DeepMerge_3823; +} + +type CK_3823 = `p38.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_23, Registry_38_23, CK_3823, EP_3823, EV_3823, DeepMerge_3823 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-24.ts new file mode 100644 index 00000000..59dd1525 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-24.ts @@ -0,0 +1,50 @@ +// pkg-38/types-24 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3824 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3824 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_24 | null; children: Entity_38_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3824: number; y3824: string; z3824: boolean }; +} + +type Path_3824 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3824}` }[keyof T & string] : never; +type EP_3824 = Path_3824; + +type Val_3824 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3824 } + : T[K] extends object ? { t: 'o'; props: Val_3824 } + : { t: 'u' }; +}; +type EV_3824 = Val_3824; + +interface Registry_38_24 { + entities: Map; + validators: EV_3824; + paths: Set; + merged: DeepMerge_3824; +} + +type CK_3824 = `p38.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_24, Registry_38_24, CK_3824, EP_3824, EV_3824, DeepMerge_3824 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-25.ts new file mode 100644 index 00000000..73889d43 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-25.ts @@ -0,0 +1,50 @@ +// pkg-38/types-25 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3825 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3825 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_25 | null; children: Entity_38_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3825: number; y3825: string; z3825: boolean }; +} + +type Path_3825 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3825}` }[keyof T & string] : never; +type EP_3825 = Path_3825; + +type Val_3825 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3825 } + : T[K] extends object ? { t: 'o'; props: Val_3825 } + : { t: 'u' }; +}; +type EV_3825 = Val_3825; + +interface Registry_38_25 { + entities: Map; + validators: EV_3825; + paths: Set; + merged: DeepMerge_3825; +} + +type CK_3825 = `p38.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_25, Registry_38_25, CK_3825, EP_3825, EV_3825, DeepMerge_3825 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-26.ts new file mode 100644 index 00000000..98c3e419 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-26.ts @@ -0,0 +1,50 @@ +// pkg-38/types-26 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3826 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3826 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_26 | null; children: Entity_38_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3826: number; y3826: string; z3826: boolean }; +} + +type Path_3826 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3826}` }[keyof T & string] : never; +type EP_3826 = Path_3826; + +type Val_3826 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3826 } + : T[K] extends object ? { t: 'o'; props: Val_3826 } + : { t: 'u' }; +}; +type EV_3826 = Val_3826; + +interface Registry_38_26 { + entities: Map; + validators: EV_3826; + paths: Set; + merged: DeepMerge_3826; +} + +type CK_3826 = `p38.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_26, Registry_38_26, CK_3826, EP_3826, EV_3826, DeepMerge_3826 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-27.ts new file mode 100644 index 00000000..2c8e5ef9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-27.ts @@ -0,0 +1,50 @@ +// pkg-38/types-27 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3827 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3827 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_27 | null; children: Entity_38_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3827: number; y3827: string; z3827: boolean }; +} + +type Path_3827 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3827}` }[keyof T & string] : never; +type EP_3827 = Path_3827; + +type Val_3827 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3827 } + : T[K] extends object ? { t: 'o'; props: Val_3827 } + : { t: 'u' }; +}; +type EV_3827 = Val_3827; + +interface Registry_38_27 { + entities: Map; + validators: EV_3827; + paths: Set; + merged: DeepMerge_3827; +} + +type CK_3827 = `p38.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_27, Registry_38_27, CK_3827, EP_3827, EV_3827, DeepMerge_3827 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-28.ts new file mode 100644 index 00000000..81dcf2f0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-28.ts @@ -0,0 +1,50 @@ +// pkg-38/types-28 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3828 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3828 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_28 | null; children: Entity_38_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3828: number; y3828: string; z3828: boolean }; +} + +type Path_3828 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3828}` }[keyof T & string] : never; +type EP_3828 = Path_3828; + +type Val_3828 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3828 } + : T[K] extends object ? { t: 'o'; props: Val_3828 } + : { t: 'u' }; +}; +type EV_3828 = Val_3828; + +interface Registry_38_28 { + entities: Map; + validators: EV_3828; + paths: Set; + merged: DeepMerge_3828; +} + +type CK_3828 = `p38.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_28, Registry_38_28, CK_3828, EP_3828, EV_3828, DeepMerge_3828 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-29.ts new file mode 100644 index 00000000..348d5871 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-29.ts @@ -0,0 +1,50 @@ +// pkg-38/types-29 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3829 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3829 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_29 | null; children: Entity_38_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3829: number; y3829: string; z3829: boolean }; +} + +type Path_3829 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3829}` }[keyof T & string] : never; +type EP_3829 = Path_3829; + +type Val_3829 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3829 } + : T[K] extends object ? { t: 'o'; props: Val_3829 } + : { t: 'u' }; +}; +type EV_3829 = Val_3829; + +interface Registry_38_29 { + entities: Map; + validators: EV_3829; + paths: Set; + merged: DeepMerge_3829; +} + +type CK_3829 = `p38.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_29, Registry_38_29, CK_3829, EP_3829, EV_3829, DeepMerge_3829 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-30.ts new file mode 100644 index 00000000..4902a5b8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-30.ts @@ -0,0 +1,50 @@ +// pkg-38/types-30 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3830 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3830 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_30 | null; children: Entity_38_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3830: number; y3830: string; z3830: boolean }; +} + +type Path_3830 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3830}` }[keyof T & string] : never; +type EP_3830 = Path_3830; + +type Val_3830 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3830 } + : T[K] extends object ? { t: 'o'; props: Val_3830 } + : { t: 'u' }; +}; +type EV_3830 = Val_3830; + +interface Registry_38_30 { + entities: Map; + validators: EV_3830; + paths: Set; + merged: DeepMerge_3830; +} + +type CK_3830 = `p38.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_30, Registry_38_30, CK_3830, EP_3830, EV_3830, DeepMerge_3830 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-31.ts new file mode 100644 index 00000000..fa444b30 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-31.ts @@ -0,0 +1,50 @@ +// pkg-38/types-31 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3831 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3831 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_31 | null; children: Entity_38_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3831: number; y3831: string; z3831: boolean }; +} + +type Path_3831 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3831}` }[keyof T & string] : never; +type EP_3831 = Path_3831; + +type Val_3831 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3831 } + : T[K] extends object ? { t: 'o'; props: Val_3831 } + : { t: 'u' }; +}; +type EV_3831 = Val_3831; + +interface Registry_38_31 { + entities: Map; + validators: EV_3831; + paths: Set; + merged: DeepMerge_3831; +} + +type CK_3831 = `p38.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_31, Registry_38_31, CK_3831, EP_3831, EV_3831, DeepMerge_3831 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-32.ts new file mode 100644 index 00000000..f0f3782f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-32.ts @@ -0,0 +1,50 @@ +// pkg-38/types-32 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3832 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3832 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_32 | null; children: Entity_38_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3832: number; y3832: string; z3832: boolean }; +} + +type Path_3832 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3832}` }[keyof T & string] : never; +type EP_3832 = Path_3832; + +type Val_3832 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3832 } + : T[K] extends object ? { t: 'o'; props: Val_3832 } + : { t: 'u' }; +}; +type EV_3832 = Val_3832; + +interface Registry_38_32 { + entities: Map; + validators: EV_3832; + paths: Set; + merged: DeepMerge_3832; +} + +type CK_3832 = `p38.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_32, Registry_38_32, CK_3832, EP_3832, EV_3832, DeepMerge_3832 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-33.ts new file mode 100644 index 00000000..b653fb0e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-33.ts @@ -0,0 +1,50 @@ +// pkg-38/types-33 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3833 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3833 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_33 | null; children: Entity_38_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3833: number; y3833: string; z3833: boolean }; +} + +type Path_3833 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3833}` }[keyof T & string] : never; +type EP_3833 = Path_3833; + +type Val_3833 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3833 } + : T[K] extends object ? { t: 'o'; props: Val_3833 } + : { t: 'u' }; +}; +type EV_3833 = Val_3833; + +interface Registry_38_33 { + entities: Map; + validators: EV_3833; + paths: Set; + merged: DeepMerge_3833; +} + +type CK_3833 = `p38.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_33, Registry_38_33, CK_3833, EP_3833, EV_3833, DeepMerge_3833 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-34.ts new file mode 100644 index 00000000..0dca63a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-34.ts @@ -0,0 +1,50 @@ +// pkg-38/types-34 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3834 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3834 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_34 | null; children: Entity_38_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3834: number; y3834: string; z3834: boolean }; +} + +type Path_3834 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3834}` }[keyof T & string] : never; +type EP_3834 = Path_3834; + +type Val_3834 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3834 } + : T[K] extends object ? { t: 'o'; props: Val_3834 } + : { t: 'u' }; +}; +type EV_3834 = Val_3834; + +interface Registry_38_34 { + entities: Map; + validators: EV_3834; + paths: Set; + merged: DeepMerge_3834; +} + +type CK_3834 = `p38.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_34, Registry_38_34, CK_3834, EP_3834, EV_3834, DeepMerge_3834 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-35.ts new file mode 100644 index 00000000..0db7dd57 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-35.ts @@ -0,0 +1,50 @@ +// pkg-38/types-35 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3835 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3835 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_35 | null; children: Entity_38_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3835: number; y3835: string; z3835: boolean }; +} + +type Path_3835 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3835}` }[keyof T & string] : never; +type EP_3835 = Path_3835; + +type Val_3835 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3835 } + : T[K] extends object ? { t: 'o'; props: Val_3835 } + : { t: 'u' }; +}; +type EV_3835 = Val_3835; + +interface Registry_38_35 { + entities: Map; + validators: EV_3835; + paths: Set; + merged: DeepMerge_3835; +} + +type CK_3835 = `p38.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_35, Registry_38_35, CK_3835, EP_3835, EV_3835, DeepMerge_3835 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-36.ts new file mode 100644 index 00000000..8f64f807 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-36.ts @@ -0,0 +1,50 @@ +// pkg-38/types-36 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3836 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3836 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_36 | null; children: Entity_38_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3836: number; y3836: string; z3836: boolean }; +} + +type Path_3836 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3836}` }[keyof T & string] : never; +type EP_3836 = Path_3836; + +type Val_3836 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3836 } + : T[K] extends object ? { t: 'o'; props: Val_3836 } + : { t: 'u' }; +}; +type EV_3836 = Val_3836; + +interface Registry_38_36 { + entities: Map; + validators: EV_3836; + paths: Set; + merged: DeepMerge_3836; +} + +type CK_3836 = `p38.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_36, Registry_38_36, CK_3836, EP_3836, EV_3836, DeepMerge_3836 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-37.ts new file mode 100644 index 00000000..88372b91 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-37.ts @@ -0,0 +1,50 @@ +// pkg-38/types-37 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3837 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3837 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_37 | null; children: Entity_38_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3837: number; y3837: string; z3837: boolean }; +} + +type Path_3837 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3837}` }[keyof T & string] : never; +type EP_3837 = Path_3837; + +type Val_3837 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3837 } + : T[K] extends object ? { t: 'o'; props: Val_3837 } + : { t: 'u' }; +}; +type EV_3837 = Val_3837; + +interface Registry_38_37 { + entities: Map; + validators: EV_3837; + paths: Set; + merged: DeepMerge_3837; +} + +type CK_3837 = `p38.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_37, Registry_38_37, CK_3837, EP_3837, EV_3837, DeepMerge_3837 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-38.ts new file mode 100644 index 00000000..68a175a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-38.ts @@ -0,0 +1,50 @@ +// pkg-38/types-38 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3838 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3838 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_38 | null; children: Entity_38_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3838: number; y3838: string; z3838: boolean }; +} + +type Path_3838 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3838}` }[keyof T & string] : never; +type EP_3838 = Path_3838; + +type Val_3838 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3838 } + : T[K] extends object ? { t: 'o'; props: Val_3838 } + : { t: 'u' }; +}; +type EV_3838 = Val_3838; + +interface Registry_38_38 { + entities: Map; + validators: EV_3838; + paths: Set; + merged: DeepMerge_3838; +} + +type CK_3838 = `p38.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_38, Registry_38_38, CK_3838, EP_3838, EV_3838, DeepMerge_3838 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-39.ts new file mode 100644 index 00000000..7070a561 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-39.ts @@ -0,0 +1,50 @@ +// pkg-38/types-39 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3839 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3839 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_39 | null; children: Entity_38_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3839: number; y3839: string; z3839: boolean }; +} + +type Path_3839 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3839}` }[keyof T & string] : never; +type EP_3839 = Path_3839; + +type Val_3839 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3839 } + : T[K] extends object ? { t: 'o'; props: Val_3839 } + : { t: 'u' }; +}; +type EV_3839 = Val_3839; + +interface Registry_38_39 { + entities: Map; + validators: EV_3839; + paths: Set; + merged: DeepMerge_3839; +} + +type CK_3839 = `p38.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_39, Registry_38_39, CK_3839, EP_3839, EV_3839, DeepMerge_3839 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-40.ts new file mode 100644 index 00000000..0dc740b5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-40.ts @@ -0,0 +1,50 @@ +// pkg-38/types-40 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3840 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3840 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_40 | null; children: Entity_38_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3840: number; y3840: string; z3840: boolean }; +} + +type Path_3840 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3840}` }[keyof T & string] : never; +type EP_3840 = Path_3840; + +type Val_3840 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3840 } + : T[K] extends object ? { t: 'o'; props: Val_3840 } + : { t: 'u' }; +}; +type EV_3840 = Val_3840; + +interface Registry_38_40 { + entities: Map; + validators: EV_3840; + paths: Set; + merged: DeepMerge_3840; +} + +type CK_3840 = `p38.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_40, Registry_38_40, CK_3840, EP_3840, EV_3840, DeepMerge_3840 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-41.ts new file mode 100644 index 00000000..fa9d4b66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-41.ts @@ -0,0 +1,50 @@ +// pkg-38/types-41 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3841 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3841 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_41 | null; children: Entity_38_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3841: number; y3841: string; z3841: boolean }; +} + +type Path_3841 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3841}` }[keyof T & string] : never; +type EP_3841 = Path_3841; + +type Val_3841 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3841 } + : T[K] extends object ? { t: 'o'; props: Val_3841 } + : { t: 'u' }; +}; +type EV_3841 = Val_3841; + +interface Registry_38_41 { + entities: Map; + validators: EV_3841; + paths: Set; + merged: DeepMerge_3841; +} + +type CK_3841 = `p38.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_41, Registry_38_41, CK_3841, EP_3841, EV_3841, DeepMerge_3841 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-42.ts new file mode 100644 index 00000000..d08e469e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-42.ts @@ -0,0 +1,50 @@ +// pkg-38/types-42 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3842 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3842 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_42 | null; children: Entity_38_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3842: number; y3842: string; z3842: boolean }; +} + +type Path_3842 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3842}` }[keyof T & string] : never; +type EP_3842 = Path_3842; + +type Val_3842 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3842 } + : T[K] extends object ? { t: 'o'; props: Val_3842 } + : { t: 'u' }; +}; +type EV_3842 = Val_3842; + +interface Registry_38_42 { + entities: Map; + validators: EV_3842; + paths: Set; + merged: DeepMerge_3842; +} + +type CK_3842 = `p38.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_42, Registry_38_42, CK_3842, EP_3842, EV_3842, DeepMerge_3842 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-43.ts new file mode 100644 index 00000000..0ce7c1c9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-43.ts @@ -0,0 +1,50 @@ +// pkg-38/types-43 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3843 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3843 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_43 | null; children: Entity_38_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3843: number; y3843: string; z3843: boolean }; +} + +type Path_3843 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3843}` }[keyof T & string] : never; +type EP_3843 = Path_3843; + +type Val_3843 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3843 } + : T[K] extends object ? { t: 'o'; props: Val_3843 } + : { t: 'u' }; +}; +type EV_3843 = Val_3843; + +interface Registry_38_43 { + entities: Map; + validators: EV_3843; + paths: Set; + merged: DeepMerge_3843; +} + +type CK_3843 = `p38.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_43, Registry_38_43, CK_3843, EP_3843, EV_3843, DeepMerge_3843 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-44.ts new file mode 100644 index 00000000..b82b3706 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-44.ts @@ -0,0 +1,50 @@ +// pkg-38/types-44 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3844 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3844 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_44 | null; children: Entity_38_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3844: number; y3844: string; z3844: boolean }; +} + +type Path_3844 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3844}` }[keyof T & string] : never; +type EP_3844 = Path_3844; + +type Val_3844 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3844 } + : T[K] extends object ? { t: 'o'; props: Val_3844 } + : { t: 'u' }; +}; +type EV_3844 = Val_3844; + +interface Registry_38_44 { + entities: Map; + validators: EV_3844; + paths: Set; + merged: DeepMerge_3844; +} + +type CK_3844 = `p38.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_44, Registry_38_44, CK_3844, EP_3844, EV_3844, DeepMerge_3844 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-45.ts new file mode 100644 index 00000000..45bf5b4a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-45.ts @@ -0,0 +1,50 @@ +// pkg-38/types-45 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3845 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3845 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_45 | null; children: Entity_38_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3845: number; y3845: string; z3845: boolean }; +} + +type Path_3845 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3845}` }[keyof T & string] : never; +type EP_3845 = Path_3845; + +type Val_3845 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3845 } + : T[K] extends object ? { t: 'o'; props: Val_3845 } + : { t: 'u' }; +}; +type EV_3845 = Val_3845; + +interface Registry_38_45 { + entities: Map; + validators: EV_3845; + paths: Set; + merged: DeepMerge_3845; +} + +type CK_3845 = `p38.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_45, Registry_38_45, CK_3845, EP_3845, EV_3845, DeepMerge_3845 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-46.ts new file mode 100644 index 00000000..e0867d32 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-46.ts @@ -0,0 +1,50 @@ +// pkg-38/types-46 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3846 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3846 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_46 | null; children: Entity_38_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3846: number; y3846: string; z3846: boolean }; +} + +type Path_3846 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3846}` }[keyof T & string] : never; +type EP_3846 = Path_3846; + +type Val_3846 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3846 } + : T[K] extends object ? { t: 'o'; props: Val_3846 } + : { t: 'u' }; +}; +type EV_3846 = Val_3846; + +interface Registry_38_46 { + entities: Map; + validators: EV_3846; + paths: Set; + merged: DeepMerge_3846; +} + +type CK_3846 = `p38.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_46, Registry_38_46, CK_3846, EP_3846, EV_3846, DeepMerge_3846 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-47.ts new file mode 100644 index 00000000..3096ee7a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-47.ts @@ -0,0 +1,50 @@ +// pkg-38/types-47 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3847 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3847 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_47 | null; children: Entity_38_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3847: number; y3847: string; z3847: boolean }; +} + +type Path_3847 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3847}` }[keyof T & string] : never; +type EP_3847 = Path_3847; + +type Val_3847 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3847 } + : T[K] extends object ? { t: 'o'; props: Val_3847 } + : { t: 'u' }; +}; +type EV_3847 = Val_3847; + +interface Registry_38_47 { + entities: Map; + validators: EV_3847; + paths: Set; + merged: DeepMerge_3847; +} + +type CK_3847 = `p38.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_47, Registry_38_47, CK_3847, EP_3847, EV_3847, DeepMerge_3847 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-48.ts new file mode 100644 index 00000000..92e41a50 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-48.ts @@ -0,0 +1,50 @@ +// pkg-38/types-48 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3848 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3848 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_48 | null; children: Entity_38_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3848: number; y3848: string; z3848: boolean }; +} + +type Path_3848 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3848}` }[keyof T & string] : never; +type EP_3848 = Path_3848; + +type Val_3848 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3848 } + : T[K] extends object ? { t: 'o'; props: Val_3848 } + : { t: 'u' }; +}; +type EV_3848 = Val_3848; + +interface Registry_38_48 { + entities: Map; + validators: EV_3848; + paths: Set; + merged: DeepMerge_3848; +} + +type CK_3848 = `p38.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_48, Registry_38_48, CK_3848, EP_3848, EV_3848, DeepMerge_3848 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-49.ts new file mode 100644 index 00000000..cb5fa671 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-49.ts @@ -0,0 +1,50 @@ +// pkg-38/types-49 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3849 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3849 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_49 | null; children: Entity_38_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3849: number; y3849: string; z3849: boolean }; +} + +type Path_3849 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3849}` }[keyof T & string] : never; +type EP_3849 = Path_3849; + +type Val_3849 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3849 } + : T[K] extends object ? { t: 'o'; props: Val_3849 } + : { t: 'u' }; +}; +type EV_3849 = Val_3849; + +interface Registry_38_49 { + entities: Map; + validators: EV_3849; + paths: Set; + merged: DeepMerge_3849; +} + +type CK_3849 = `p38.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_49, Registry_38_49, CK_3849, EP_3849, EV_3849, DeepMerge_3849 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-38/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-38/types-50.ts new file mode 100644 index 00000000..ff6b72af --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-38/types-50.ts @@ -0,0 +1,50 @@ +// pkg-38/types-50 - heavy interconnected types + +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; +import type { Entity_35_01, Registry_35_01 } from '../pkg-35/types-01'; +import type { Entity_35_10, Registry_35_10 } from '../pkg-35/types-10'; +import type { Entity_35_20, Registry_35_20 } from '../pkg-35/types-20'; + +type DeepMerge_3850 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3850 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_38_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_38_50 | null; children: Entity_38_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3850: number; y3850: string; z3850: boolean }; +} + +type Path_3850 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3850}` }[keyof T & string] : never; +type EP_3850 = Path_3850; + +type Val_3850 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3850 } + : T[K] extends object ? { t: 'o'; props: Val_3850 } + : { t: 'u' }; +}; +type EV_3850 = Val_3850; + +interface Registry_38_50 { + entities: Map; + validators: EV_3850; + paths: Set; + merged: DeepMerge_3850; +} + +type CK_3850 = `p38.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_38_50, Registry_38_50, CK_3850, EP_3850, EV_3850, DeepMerge_3850 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-39/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-01.ts new file mode 100644 index 00000000..8c2f3f96 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-01.ts @@ -0,0 +1,50 @@ +// pkg-39/types-01 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3901 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3901 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_01 | null; children: Entity_39_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x3901: number; y3901: string; z3901: boolean }; +} + +type Path_3901 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3901}` }[keyof T & string] : never; +type EP_3901 = Path_3901; + +type Val_3901 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3901 } + : T[K] extends object ? { t: 'o'; props: Val_3901 } + : { t: 'u' }; +}; +type EV_3901 = Val_3901; + +interface Registry_39_01 { + entities: Map; + validators: EV_3901; + paths: Set; + merged: DeepMerge_3901; +} + +type CK_3901 = `p39.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_01, Registry_39_01, CK_3901, EP_3901, EV_3901, DeepMerge_3901 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-02.ts new file mode 100644 index 00000000..31b89de6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-02.ts @@ -0,0 +1,50 @@ +// pkg-39/types-02 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3902 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3902 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_02 | null; children: Entity_39_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x3902: number; y3902: string; z3902: boolean }; +} + +type Path_3902 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3902}` }[keyof T & string] : never; +type EP_3902 = Path_3902; + +type Val_3902 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3902 } + : T[K] extends object ? { t: 'o'; props: Val_3902 } + : { t: 'u' }; +}; +type EV_3902 = Val_3902; + +interface Registry_39_02 { + entities: Map; + validators: EV_3902; + paths: Set; + merged: DeepMerge_3902; +} + +type CK_3902 = `p39.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_02, Registry_39_02, CK_3902, EP_3902, EV_3902, DeepMerge_3902 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-03.ts new file mode 100644 index 00000000..a50a9f66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-03.ts @@ -0,0 +1,50 @@ +// pkg-39/types-03 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3903 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3903 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_03 | null; children: Entity_39_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x3903: number; y3903: string; z3903: boolean }; +} + +type Path_3903 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3903}` }[keyof T & string] : never; +type EP_3903 = Path_3903; + +type Val_3903 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3903 } + : T[K] extends object ? { t: 'o'; props: Val_3903 } + : { t: 'u' }; +}; +type EV_3903 = Val_3903; + +interface Registry_39_03 { + entities: Map; + validators: EV_3903; + paths: Set; + merged: DeepMerge_3903; +} + +type CK_3903 = `p39.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_03, Registry_39_03, CK_3903, EP_3903, EV_3903, DeepMerge_3903 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-04.ts new file mode 100644 index 00000000..b90d77db --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-04.ts @@ -0,0 +1,50 @@ +// pkg-39/types-04 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3904 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3904 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_04 | null; children: Entity_39_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x3904: number; y3904: string; z3904: boolean }; +} + +type Path_3904 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3904}` }[keyof T & string] : never; +type EP_3904 = Path_3904; + +type Val_3904 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3904 } + : T[K] extends object ? { t: 'o'; props: Val_3904 } + : { t: 'u' }; +}; +type EV_3904 = Val_3904; + +interface Registry_39_04 { + entities: Map; + validators: EV_3904; + paths: Set; + merged: DeepMerge_3904; +} + +type CK_3904 = `p39.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_04, Registry_39_04, CK_3904, EP_3904, EV_3904, DeepMerge_3904 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-05.ts new file mode 100644 index 00000000..abf38ef8 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-05.ts @@ -0,0 +1,50 @@ +// pkg-39/types-05 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3905 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3905 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_05 | null; children: Entity_39_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x3905: number; y3905: string; z3905: boolean }; +} + +type Path_3905 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3905}` }[keyof T & string] : never; +type EP_3905 = Path_3905; + +type Val_3905 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3905 } + : T[K] extends object ? { t: 'o'; props: Val_3905 } + : { t: 'u' }; +}; +type EV_3905 = Val_3905; + +interface Registry_39_05 { + entities: Map; + validators: EV_3905; + paths: Set; + merged: DeepMerge_3905; +} + +type CK_3905 = `p39.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_05, Registry_39_05, CK_3905, EP_3905, EV_3905, DeepMerge_3905 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-06.ts new file mode 100644 index 00000000..aa2d2d8e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-06.ts @@ -0,0 +1,50 @@ +// pkg-39/types-06 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3906 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3906 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_06 | null; children: Entity_39_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x3906: number; y3906: string; z3906: boolean }; +} + +type Path_3906 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3906}` }[keyof T & string] : never; +type EP_3906 = Path_3906; + +type Val_3906 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3906 } + : T[K] extends object ? { t: 'o'; props: Val_3906 } + : { t: 'u' }; +}; +type EV_3906 = Val_3906; + +interface Registry_39_06 { + entities: Map; + validators: EV_3906; + paths: Set; + merged: DeepMerge_3906; +} + +type CK_3906 = `p39.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_06, Registry_39_06, CK_3906, EP_3906, EV_3906, DeepMerge_3906 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-07.ts new file mode 100644 index 00000000..494c0032 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-07.ts @@ -0,0 +1,50 @@ +// pkg-39/types-07 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3907 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3907 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_07 | null; children: Entity_39_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x3907: number; y3907: string; z3907: boolean }; +} + +type Path_3907 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3907}` }[keyof T & string] : never; +type EP_3907 = Path_3907; + +type Val_3907 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3907 } + : T[K] extends object ? { t: 'o'; props: Val_3907 } + : { t: 'u' }; +}; +type EV_3907 = Val_3907; + +interface Registry_39_07 { + entities: Map; + validators: EV_3907; + paths: Set; + merged: DeepMerge_3907; +} + +type CK_3907 = `p39.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_07, Registry_39_07, CK_3907, EP_3907, EV_3907, DeepMerge_3907 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-08.ts new file mode 100644 index 00000000..c58cb50d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-08.ts @@ -0,0 +1,50 @@ +// pkg-39/types-08 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3908 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3908 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_08 | null; children: Entity_39_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x3908: number; y3908: string; z3908: boolean }; +} + +type Path_3908 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3908}` }[keyof T & string] : never; +type EP_3908 = Path_3908; + +type Val_3908 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3908 } + : T[K] extends object ? { t: 'o'; props: Val_3908 } + : { t: 'u' }; +}; +type EV_3908 = Val_3908; + +interface Registry_39_08 { + entities: Map; + validators: EV_3908; + paths: Set; + merged: DeepMerge_3908; +} + +type CK_3908 = `p39.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_08, Registry_39_08, CK_3908, EP_3908, EV_3908, DeepMerge_3908 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-09.ts new file mode 100644 index 00000000..06176567 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-09.ts @@ -0,0 +1,50 @@ +// pkg-39/types-09 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3909 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3909 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_09 | null; children: Entity_39_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x3909: number; y3909: string; z3909: boolean }; +} + +type Path_3909 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3909}` }[keyof T & string] : never; +type EP_3909 = Path_3909; + +type Val_3909 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3909 } + : T[K] extends object ? { t: 'o'; props: Val_3909 } + : { t: 'u' }; +}; +type EV_3909 = Val_3909; + +interface Registry_39_09 { + entities: Map; + validators: EV_3909; + paths: Set; + merged: DeepMerge_3909; +} + +type CK_3909 = `p39.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_09, Registry_39_09, CK_3909, EP_3909, EV_3909, DeepMerge_3909 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-10.ts new file mode 100644 index 00000000..a9c62feb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-10.ts @@ -0,0 +1,50 @@ +// pkg-39/types-10 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3910 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3910 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_10 | null; children: Entity_39_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x3910: number; y3910: string; z3910: boolean }; +} + +type Path_3910 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3910}` }[keyof T & string] : never; +type EP_3910 = Path_3910; + +type Val_3910 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3910 } + : T[K] extends object ? { t: 'o'; props: Val_3910 } + : { t: 'u' }; +}; +type EV_3910 = Val_3910; + +interface Registry_39_10 { + entities: Map; + validators: EV_3910; + paths: Set; + merged: DeepMerge_3910; +} + +type CK_3910 = `p39.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_10, Registry_39_10, CK_3910, EP_3910, EV_3910, DeepMerge_3910 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-11.ts new file mode 100644 index 00000000..9693156a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-11.ts @@ -0,0 +1,50 @@ +// pkg-39/types-11 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3911 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3911 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_11 | null; children: Entity_39_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x3911: number; y3911: string; z3911: boolean }; +} + +type Path_3911 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3911}` }[keyof T & string] : never; +type EP_3911 = Path_3911; + +type Val_3911 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3911 } + : T[K] extends object ? { t: 'o'; props: Val_3911 } + : { t: 'u' }; +}; +type EV_3911 = Val_3911; + +interface Registry_39_11 { + entities: Map; + validators: EV_3911; + paths: Set; + merged: DeepMerge_3911; +} + +type CK_3911 = `p39.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_11, Registry_39_11, CK_3911, EP_3911, EV_3911, DeepMerge_3911 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-12.ts new file mode 100644 index 00000000..cd2069e9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-12.ts @@ -0,0 +1,50 @@ +// pkg-39/types-12 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3912 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3912 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_12 | null; children: Entity_39_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x3912: number; y3912: string; z3912: boolean }; +} + +type Path_3912 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3912}` }[keyof T & string] : never; +type EP_3912 = Path_3912; + +type Val_3912 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3912 } + : T[K] extends object ? { t: 'o'; props: Val_3912 } + : { t: 'u' }; +}; +type EV_3912 = Val_3912; + +interface Registry_39_12 { + entities: Map; + validators: EV_3912; + paths: Set; + merged: DeepMerge_3912; +} + +type CK_3912 = `p39.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_12, Registry_39_12, CK_3912, EP_3912, EV_3912, DeepMerge_3912 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-13.ts new file mode 100644 index 00000000..c7f37dd6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-13.ts @@ -0,0 +1,50 @@ +// pkg-39/types-13 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3913 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3913 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_13 | null; children: Entity_39_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x3913: number; y3913: string; z3913: boolean }; +} + +type Path_3913 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3913}` }[keyof T & string] : never; +type EP_3913 = Path_3913; + +type Val_3913 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3913 } + : T[K] extends object ? { t: 'o'; props: Val_3913 } + : { t: 'u' }; +}; +type EV_3913 = Val_3913; + +interface Registry_39_13 { + entities: Map; + validators: EV_3913; + paths: Set; + merged: DeepMerge_3913; +} + +type CK_3913 = `p39.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_13, Registry_39_13, CK_3913, EP_3913, EV_3913, DeepMerge_3913 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-14.ts new file mode 100644 index 00000000..5e83adda --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-14.ts @@ -0,0 +1,50 @@ +// pkg-39/types-14 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3914 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3914 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_14 | null; children: Entity_39_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x3914: number; y3914: string; z3914: boolean }; +} + +type Path_3914 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3914}` }[keyof T & string] : never; +type EP_3914 = Path_3914; + +type Val_3914 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3914 } + : T[K] extends object ? { t: 'o'; props: Val_3914 } + : { t: 'u' }; +}; +type EV_3914 = Val_3914; + +interface Registry_39_14 { + entities: Map; + validators: EV_3914; + paths: Set; + merged: DeepMerge_3914; +} + +type CK_3914 = `p39.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_14, Registry_39_14, CK_3914, EP_3914, EV_3914, DeepMerge_3914 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-15.ts new file mode 100644 index 00000000..a30f5ec6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-15.ts @@ -0,0 +1,50 @@ +// pkg-39/types-15 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3915 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3915 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_15 | null; children: Entity_39_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x3915: number; y3915: string; z3915: boolean }; +} + +type Path_3915 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3915}` }[keyof T & string] : never; +type EP_3915 = Path_3915; + +type Val_3915 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3915 } + : T[K] extends object ? { t: 'o'; props: Val_3915 } + : { t: 'u' }; +}; +type EV_3915 = Val_3915; + +interface Registry_39_15 { + entities: Map; + validators: EV_3915; + paths: Set; + merged: DeepMerge_3915; +} + +type CK_3915 = `p39.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_15, Registry_39_15, CK_3915, EP_3915, EV_3915, DeepMerge_3915 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-16.ts new file mode 100644 index 00000000..1a9a54d9 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-16.ts @@ -0,0 +1,50 @@ +// pkg-39/types-16 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3916 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3916 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_16 | null; children: Entity_39_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x3916: number; y3916: string; z3916: boolean }; +} + +type Path_3916 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3916}` }[keyof T & string] : never; +type EP_3916 = Path_3916; + +type Val_3916 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3916 } + : T[K] extends object ? { t: 'o'; props: Val_3916 } + : { t: 'u' }; +}; +type EV_3916 = Val_3916; + +interface Registry_39_16 { + entities: Map; + validators: EV_3916; + paths: Set; + merged: DeepMerge_3916; +} + +type CK_3916 = `p39.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_16, Registry_39_16, CK_3916, EP_3916, EV_3916, DeepMerge_3916 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-17.ts new file mode 100644 index 00000000..7eed52a7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-17.ts @@ -0,0 +1,50 @@ +// pkg-39/types-17 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3917 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3917 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_17 | null; children: Entity_39_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x3917: number; y3917: string; z3917: boolean }; +} + +type Path_3917 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3917}` }[keyof T & string] : never; +type EP_3917 = Path_3917; + +type Val_3917 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3917 } + : T[K] extends object ? { t: 'o'; props: Val_3917 } + : { t: 'u' }; +}; +type EV_3917 = Val_3917; + +interface Registry_39_17 { + entities: Map; + validators: EV_3917; + paths: Set; + merged: DeepMerge_3917; +} + +type CK_3917 = `p39.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_17, Registry_39_17, CK_3917, EP_3917, EV_3917, DeepMerge_3917 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-18.ts new file mode 100644 index 00000000..14e1941b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-18.ts @@ -0,0 +1,50 @@ +// pkg-39/types-18 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3918 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3918 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_18 | null; children: Entity_39_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x3918: number; y3918: string; z3918: boolean }; +} + +type Path_3918 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3918}` }[keyof T & string] : never; +type EP_3918 = Path_3918; + +type Val_3918 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3918 } + : T[K] extends object ? { t: 'o'; props: Val_3918 } + : { t: 'u' }; +}; +type EV_3918 = Val_3918; + +interface Registry_39_18 { + entities: Map; + validators: EV_3918; + paths: Set; + merged: DeepMerge_3918; +} + +type CK_3918 = `p39.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_18, Registry_39_18, CK_3918, EP_3918, EV_3918, DeepMerge_3918 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-19.ts new file mode 100644 index 00000000..f5107011 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-19.ts @@ -0,0 +1,50 @@ +// pkg-39/types-19 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3919 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3919 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_19 | null; children: Entity_39_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x3919: number; y3919: string; z3919: boolean }; +} + +type Path_3919 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3919}` }[keyof T & string] : never; +type EP_3919 = Path_3919; + +type Val_3919 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3919 } + : T[K] extends object ? { t: 'o'; props: Val_3919 } + : { t: 'u' }; +}; +type EV_3919 = Val_3919; + +interface Registry_39_19 { + entities: Map; + validators: EV_3919; + paths: Set; + merged: DeepMerge_3919; +} + +type CK_3919 = `p39.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_19, Registry_39_19, CK_3919, EP_3919, EV_3919, DeepMerge_3919 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-20.ts new file mode 100644 index 00000000..f0e95915 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-20.ts @@ -0,0 +1,50 @@ +// pkg-39/types-20 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3920 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3920 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_20 | null; children: Entity_39_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x3920: number; y3920: string; z3920: boolean }; +} + +type Path_3920 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3920}` }[keyof T & string] : never; +type EP_3920 = Path_3920; + +type Val_3920 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3920 } + : T[K] extends object ? { t: 'o'; props: Val_3920 } + : { t: 'u' }; +}; +type EV_3920 = Val_3920; + +interface Registry_39_20 { + entities: Map; + validators: EV_3920; + paths: Set; + merged: DeepMerge_3920; +} + +type CK_3920 = `p39.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_20, Registry_39_20, CK_3920, EP_3920, EV_3920, DeepMerge_3920 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-21.ts new file mode 100644 index 00000000..9a7dbf76 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-21.ts @@ -0,0 +1,50 @@ +// pkg-39/types-21 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3921 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3921 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_21 | null; children: Entity_39_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x3921: number; y3921: string; z3921: boolean }; +} + +type Path_3921 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3921}` }[keyof T & string] : never; +type EP_3921 = Path_3921; + +type Val_3921 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3921 } + : T[K] extends object ? { t: 'o'; props: Val_3921 } + : { t: 'u' }; +}; +type EV_3921 = Val_3921; + +interface Registry_39_21 { + entities: Map; + validators: EV_3921; + paths: Set; + merged: DeepMerge_3921; +} + +type CK_3921 = `p39.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_21, Registry_39_21, CK_3921, EP_3921, EV_3921, DeepMerge_3921 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-22.ts new file mode 100644 index 00000000..327fd400 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-22.ts @@ -0,0 +1,50 @@ +// pkg-39/types-22 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3922 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3922 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_22 | null; children: Entity_39_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x3922: number; y3922: string; z3922: boolean }; +} + +type Path_3922 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3922}` }[keyof T & string] : never; +type EP_3922 = Path_3922; + +type Val_3922 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3922 } + : T[K] extends object ? { t: 'o'; props: Val_3922 } + : { t: 'u' }; +}; +type EV_3922 = Val_3922; + +interface Registry_39_22 { + entities: Map; + validators: EV_3922; + paths: Set; + merged: DeepMerge_3922; +} + +type CK_3922 = `p39.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_22, Registry_39_22, CK_3922, EP_3922, EV_3922, DeepMerge_3922 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-23.ts new file mode 100644 index 00000000..d7d70264 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-23.ts @@ -0,0 +1,50 @@ +// pkg-39/types-23 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3923 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3923 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_23 | null; children: Entity_39_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x3923: number; y3923: string; z3923: boolean }; +} + +type Path_3923 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3923}` }[keyof T & string] : never; +type EP_3923 = Path_3923; + +type Val_3923 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3923 } + : T[K] extends object ? { t: 'o'; props: Val_3923 } + : { t: 'u' }; +}; +type EV_3923 = Val_3923; + +interface Registry_39_23 { + entities: Map; + validators: EV_3923; + paths: Set; + merged: DeepMerge_3923; +} + +type CK_3923 = `p39.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_23, Registry_39_23, CK_3923, EP_3923, EV_3923, DeepMerge_3923 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-24.ts new file mode 100644 index 00000000..b01b9a77 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-24.ts @@ -0,0 +1,50 @@ +// pkg-39/types-24 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3924 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3924 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_24 | null; children: Entity_39_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x3924: number; y3924: string; z3924: boolean }; +} + +type Path_3924 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3924}` }[keyof T & string] : never; +type EP_3924 = Path_3924; + +type Val_3924 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3924 } + : T[K] extends object ? { t: 'o'; props: Val_3924 } + : { t: 'u' }; +}; +type EV_3924 = Val_3924; + +interface Registry_39_24 { + entities: Map; + validators: EV_3924; + paths: Set; + merged: DeepMerge_3924; +} + +type CK_3924 = `p39.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_24, Registry_39_24, CK_3924, EP_3924, EV_3924, DeepMerge_3924 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-25.ts new file mode 100644 index 00000000..4c68d135 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-25.ts @@ -0,0 +1,50 @@ +// pkg-39/types-25 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3925 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3925 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_25 | null; children: Entity_39_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x3925: number; y3925: string; z3925: boolean }; +} + +type Path_3925 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3925}` }[keyof T & string] : never; +type EP_3925 = Path_3925; + +type Val_3925 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3925 } + : T[K] extends object ? { t: 'o'; props: Val_3925 } + : { t: 'u' }; +}; +type EV_3925 = Val_3925; + +interface Registry_39_25 { + entities: Map; + validators: EV_3925; + paths: Set; + merged: DeepMerge_3925; +} + +type CK_3925 = `p39.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_25, Registry_39_25, CK_3925, EP_3925, EV_3925, DeepMerge_3925 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-26.ts new file mode 100644 index 00000000..777cd4bd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-26.ts @@ -0,0 +1,50 @@ +// pkg-39/types-26 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3926 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3926 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_26 | null; children: Entity_39_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x3926: number; y3926: string; z3926: boolean }; +} + +type Path_3926 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3926}` }[keyof T & string] : never; +type EP_3926 = Path_3926; + +type Val_3926 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3926 } + : T[K] extends object ? { t: 'o'; props: Val_3926 } + : { t: 'u' }; +}; +type EV_3926 = Val_3926; + +interface Registry_39_26 { + entities: Map; + validators: EV_3926; + paths: Set; + merged: DeepMerge_3926; +} + +type CK_3926 = `p39.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_26, Registry_39_26, CK_3926, EP_3926, EV_3926, DeepMerge_3926 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-27.ts new file mode 100644 index 00000000..3fa313d7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-27.ts @@ -0,0 +1,50 @@ +// pkg-39/types-27 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3927 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3927 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_27 | null; children: Entity_39_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x3927: number; y3927: string; z3927: boolean }; +} + +type Path_3927 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3927}` }[keyof T & string] : never; +type EP_3927 = Path_3927; + +type Val_3927 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3927 } + : T[K] extends object ? { t: 'o'; props: Val_3927 } + : { t: 'u' }; +}; +type EV_3927 = Val_3927; + +interface Registry_39_27 { + entities: Map; + validators: EV_3927; + paths: Set; + merged: DeepMerge_3927; +} + +type CK_3927 = `p39.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_27, Registry_39_27, CK_3927, EP_3927, EV_3927, DeepMerge_3927 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-28.ts new file mode 100644 index 00000000..2b948242 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-28.ts @@ -0,0 +1,50 @@ +// pkg-39/types-28 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3928 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3928 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_28 | null; children: Entity_39_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x3928: number; y3928: string; z3928: boolean }; +} + +type Path_3928 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3928}` }[keyof T & string] : never; +type EP_3928 = Path_3928; + +type Val_3928 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3928 } + : T[K] extends object ? { t: 'o'; props: Val_3928 } + : { t: 'u' }; +}; +type EV_3928 = Val_3928; + +interface Registry_39_28 { + entities: Map; + validators: EV_3928; + paths: Set; + merged: DeepMerge_3928; +} + +type CK_3928 = `p39.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_28, Registry_39_28, CK_3928, EP_3928, EV_3928, DeepMerge_3928 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-29.ts new file mode 100644 index 00000000..e6c249fe --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-29.ts @@ -0,0 +1,50 @@ +// pkg-39/types-29 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3929 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3929 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_29 | null; children: Entity_39_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x3929: number; y3929: string; z3929: boolean }; +} + +type Path_3929 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3929}` }[keyof T & string] : never; +type EP_3929 = Path_3929; + +type Val_3929 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3929 } + : T[K] extends object ? { t: 'o'; props: Val_3929 } + : { t: 'u' }; +}; +type EV_3929 = Val_3929; + +interface Registry_39_29 { + entities: Map; + validators: EV_3929; + paths: Set; + merged: DeepMerge_3929; +} + +type CK_3929 = `p39.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_29, Registry_39_29, CK_3929, EP_3929, EV_3929, DeepMerge_3929 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-30.ts new file mode 100644 index 00000000..c9b73446 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-30.ts @@ -0,0 +1,50 @@ +// pkg-39/types-30 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3930 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3930 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_30 | null; children: Entity_39_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x3930: number; y3930: string; z3930: boolean }; +} + +type Path_3930 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3930}` }[keyof T & string] : never; +type EP_3930 = Path_3930; + +type Val_3930 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3930 } + : T[K] extends object ? { t: 'o'; props: Val_3930 } + : { t: 'u' }; +}; +type EV_3930 = Val_3930; + +interface Registry_39_30 { + entities: Map; + validators: EV_3930; + paths: Set; + merged: DeepMerge_3930; +} + +type CK_3930 = `p39.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_30, Registry_39_30, CK_3930, EP_3930, EV_3930, DeepMerge_3930 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-31.ts new file mode 100644 index 00000000..9b66b91e --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-31.ts @@ -0,0 +1,50 @@ +// pkg-39/types-31 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3931 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3931 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_31 | null; children: Entity_39_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x3931: number; y3931: string; z3931: boolean }; +} + +type Path_3931 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3931}` }[keyof T & string] : never; +type EP_3931 = Path_3931; + +type Val_3931 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3931 } + : T[K] extends object ? { t: 'o'; props: Val_3931 } + : { t: 'u' }; +}; +type EV_3931 = Val_3931; + +interface Registry_39_31 { + entities: Map; + validators: EV_3931; + paths: Set; + merged: DeepMerge_3931; +} + +type CK_3931 = `p39.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_31, Registry_39_31, CK_3931, EP_3931, EV_3931, DeepMerge_3931 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-32.ts new file mode 100644 index 00000000..a7e1048c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-32.ts @@ -0,0 +1,50 @@ +// pkg-39/types-32 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3932 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3932 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_32 | null; children: Entity_39_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x3932: number; y3932: string; z3932: boolean }; +} + +type Path_3932 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3932}` }[keyof T & string] : never; +type EP_3932 = Path_3932; + +type Val_3932 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3932 } + : T[K] extends object ? { t: 'o'; props: Val_3932 } + : { t: 'u' }; +}; +type EV_3932 = Val_3932; + +interface Registry_39_32 { + entities: Map; + validators: EV_3932; + paths: Set; + merged: DeepMerge_3932; +} + +type CK_3932 = `p39.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_32, Registry_39_32, CK_3932, EP_3932, EV_3932, DeepMerge_3932 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-33.ts new file mode 100644 index 00000000..dda925a5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-33.ts @@ -0,0 +1,50 @@ +// pkg-39/types-33 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3933 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3933 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_33 | null; children: Entity_39_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x3933: number; y3933: string; z3933: boolean }; +} + +type Path_3933 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3933}` }[keyof T & string] : never; +type EP_3933 = Path_3933; + +type Val_3933 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3933 } + : T[K] extends object ? { t: 'o'; props: Val_3933 } + : { t: 'u' }; +}; +type EV_3933 = Val_3933; + +interface Registry_39_33 { + entities: Map; + validators: EV_3933; + paths: Set; + merged: DeepMerge_3933; +} + +type CK_3933 = `p39.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_33, Registry_39_33, CK_3933, EP_3933, EV_3933, DeepMerge_3933 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-34.ts new file mode 100644 index 00000000..0bf2ff9d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-34.ts @@ -0,0 +1,50 @@ +// pkg-39/types-34 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3934 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3934 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_34 | null; children: Entity_39_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x3934: number; y3934: string; z3934: boolean }; +} + +type Path_3934 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3934}` }[keyof T & string] : never; +type EP_3934 = Path_3934; + +type Val_3934 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3934 } + : T[K] extends object ? { t: 'o'; props: Val_3934 } + : { t: 'u' }; +}; +type EV_3934 = Val_3934; + +interface Registry_39_34 { + entities: Map; + validators: EV_3934; + paths: Set; + merged: DeepMerge_3934; +} + +type CK_3934 = `p39.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_34, Registry_39_34, CK_3934, EP_3934, EV_3934, DeepMerge_3934 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-35.ts new file mode 100644 index 00000000..b562dbb6 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-35.ts @@ -0,0 +1,50 @@ +// pkg-39/types-35 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3935 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3935 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_35 | null; children: Entity_39_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x3935: number; y3935: string; z3935: boolean }; +} + +type Path_3935 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3935}` }[keyof T & string] : never; +type EP_3935 = Path_3935; + +type Val_3935 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3935 } + : T[K] extends object ? { t: 'o'; props: Val_3935 } + : { t: 'u' }; +}; +type EV_3935 = Val_3935; + +interface Registry_39_35 { + entities: Map; + validators: EV_3935; + paths: Set; + merged: DeepMerge_3935; +} + +type CK_3935 = `p39.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_35, Registry_39_35, CK_3935, EP_3935, EV_3935, DeepMerge_3935 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-36.ts new file mode 100644 index 00000000..2adeca4f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-36.ts @@ -0,0 +1,50 @@ +// pkg-39/types-36 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3936 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3936 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_36 | null; children: Entity_39_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x3936: number; y3936: string; z3936: boolean }; +} + +type Path_3936 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3936}` }[keyof T & string] : never; +type EP_3936 = Path_3936; + +type Val_3936 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3936 } + : T[K] extends object ? { t: 'o'; props: Val_3936 } + : { t: 'u' }; +}; +type EV_3936 = Val_3936; + +interface Registry_39_36 { + entities: Map; + validators: EV_3936; + paths: Set; + merged: DeepMerge_3936; +} + +type CK_3936 = `p39.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_36, Registry_39_36, CK_3936, EP_3936, EV_3936, DeepMerge_3936 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-37.ts new file mode 100644 index 00000000..11d48cd2 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-37.ts @@ -0,0 +1,50 @@ +// pkg-39/types-37 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3937 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3937 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_37 | null; children: Entity_39_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x3937: number; y3937: string; z3937: boolean }; +} + +type Path_3937 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3937}` }[keyof T & string] : never; +type EP_3937 = Path_3937; + +type Val_3937 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3937 } + : T[K] extends object ? { t: 'o'; props: Val_3937 } + : { t: 'u' }; +}; +type EV_3937 = Val_3937; + +interface Registry_39_37 { + entities: Map; + validators: EV_3937; + paths: Set; + merged: DeepMerge_3937; +} + +type CK_3937 = `p39.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_37, Registry_39_37, CK_3937, EP_3937, EV_3937, DeepMerge_3937 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-38.ts new file mode 100644 index 00000000..acc337ea --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-38.ts @@ -0,0 +1,50 @@ +// pkg-39/types-38 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3938 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3938 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_38 | null; children: Entity_39_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x3938: number; y3938: string; z3938: boolean }; +} + +type Path_3938 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3938}` }[keyof T & string] : never; +type EP_3938 = Path_3938; + +type Val_3938 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3938 } + : T[K] extends object ? { t: 'o'; props: Val_3938 } + : { t: 'u' }; +}; +type EV_3938 = Val_3938; + +interface Registry_39_38 { + entities: Map; + validators: EV_3938; + paths: Set; + merged: DeepMerge_3938; +} + +type CK_3938 = `p39.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_38, Registry_39_38, CK_3938, EP_3938, EV_3938, DeepMerge_3938 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-39.ts new file mode 100644 index 00000000..47f1932b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-39.ts @@ -0,0 +1,50 @@ +// pkg-39/types-39 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3939 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3939 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_39 | null; children: Entity_39_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x3939: number; y3939: string; z3939: boolean }; +} + +type Path_3939 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3939}` }[keyof T & string] : never; +type EP_3939 = Path_3939; + +type Val_3939 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3939 } + : T[K] extends object ? { t: 'o'; props: Val_3939 } + : { t: 'u' }; +}; +type EV_3939 = Val_3939; + +interface Registry_39_39 { + entities: Map; + validators: EV_3939; + paths: Set; + merged: DeepMerge_3939; +} + +type CK_3939 = `p39.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_39, Registry_39_39, CK_3939, EP_3939, EV_3939, DeepMerge_3939 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-40.ts new file mode 100644 index 00000000..cad26388 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-40.ts @@ -0,0 +1,50 @@ +// pkg-39/types-40 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3940 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3940 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_40 | null; children: Entity_39_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x3940: number; y3940: string; z3940: boolean }; +} + +type Path_3940 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3940}` }[keyof T & string] : never; +type EP_3940 = Path_3940; + +type Val_3940 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3940 } + : T[K] extends object ? { t: 'o'; props: Val_3940 } + : { t: 'u' }; +}; +type EV_3940 = Val_3940; + +interface Registry_39_40 { + entities: Map; + validators: EV_3940; + paths: Set; + merged: DeepMerge_3940; +} + +type CK_3940 = `p39.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_40, Registry_39_40, CK_3940, EP_3940, EV_3940, DeepMerge_3940 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-41.ts new file mode 100644 index 00000000..4c5f3903 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-41.ts @@ -0,0 +1,50 @@ +// pkg-39/types-41 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3941 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3941 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_41 | null; children: Entity_39_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x3941: number; y3941: string; z3941: boolean }; +} + +type Path_3941 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3941}` }[keyof T & string] : never; +type EP_3941 = Path_3941; + +type Val_3941 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3941 } + : T[K] extends object ? { t: 'o'; props: Val_3941 } + : { t: 'u' }; +}; +type EV_3941 = Val_3941; + +interface Registry_39_41 { + entities: Map; + validators: EV_3941; + paths: Set; + merged: DeepMerge_3941; +} + +type CK_3941 = `p39.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_41, Registry_39_41, CK_3941, EP_3941, EV_3941, DeepMerge_3941 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-42.ts new file mode 100644 index 00000000..826da562 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-42.ts @@ -0,0 +1,50 @@ +// pkg-39/types-42 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3942 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3942 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_42 | null; children: Entity_39_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x3942: number; y3942: string; z3942: boolean }; +} + +type Path_3942 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3942}` }[keyof T & string] : never; +type EP_3942 = Path_3942; + +type Val_3942 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3942 } + : T[K] extends object ? { t: 'o'; props: Val_3942 } + : { t: 'u' }; +}; +type EV_3942 = Val_3942; + +interface Registry_39_42 { + entities: Map; + validators: EV_3942; + paths: Set; + merged: DeepMerge_3942; +} + +type CK_3942 = `p39.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_42, Registry_39_42, CK_3942, EP_3942, EV_3942, DeepMerge_3942 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-43.ts new file mode 100644 index 00000000..574c2879 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-43.ts @@ -0,0 +1,50 @@ +// pkg-39/types-43 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3943 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3943 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_43 | null; children: Entity_39_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x3943: number; y3943: string; z3943: boolean }; +} + +type Path_3943 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3943}` }[keyof T & string] : never; +type EP_3943 = Path_3943; + +type Val_3943 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3943 } + : T[K] extends object ? { t: 'o'; props: Val_3943 } + : { t: 'u' }; +}; +type EV_3943 = Val_3943; + +interface Registry_39_43 { + entities: Map; + validators: EV_3943; + paths: Set; + merged: DeepMerge_3943; +} + +type CK_3943 = `p39.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_43, Registry_39_43, CK_3943, EP_3943, EV_3943, DeepMerge_3943 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-44.ts new file mode 100644 index 00000000..88033321 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-44.ts @@ -0,0 +1,50 @@ +// pkg-39/types-44 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3944 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3944 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_44 | null; children: Entity_39_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x3944: number; y3944: string; z3944: boolean }; +} + +type Path_3944 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3944}` }[keyof T & string] : never; +type EP_3944 = Path_3944; + +type Val_3944 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3944 } + : T[K] extends object ? { t: 'o'; props: Val_3944 } + : { t: 'u' }; +}; +type EV_3944 = Val_3944; + +interface Registry_39_44 { + entities: Map; + validators: EV_3944; + paths: Set; + merged: DeepMerge_3944; +} + +type CK_3944 = `p39.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_44, Registry_39_44, CK_3944, EP_3944, EV_3944, DeepMerge_3944 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-45.ts new file mode 100644 index 00000000..6bcdfbbc --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-45.ts @@ -0,0 +1,50 @@ +// pkg-39/types-45 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3945 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3945 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_45 | null; children: Entity_39_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x3945: number; y3945: string; z3945: boolean }; +} + +type Path_3945 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3945}` }[keyof T & string] : never; +type EP_3945 = Path_3945; + +type Val_3945 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3945 } + : T[K] extends object ? { t: 'o'; props: Val_3945 } + : { t: 'u' }; +}; +type EV_3945 = Val_3945; + +interface Registry_39_45 { + entities: Map; + validators: EV_3945; + paths: Set; + merged: DeepMerge_3945; +} + +type CK_3945 = `p39.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_45, Registry_39_45, CK_3945, EP_3945, EV_3945, DeepMerge_3945 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-46.ts new file mode 100644 index 00000000..5afa1748 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-46.ts @@ -0,0 +1,50 @@ +// pkg-39/types-46 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3946 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3946 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_46 | null; children: Entity_39_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x3946: number; y3946: string; z3946: boolean }; +} + +type Path_3946 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3946}` }[keyof T & string] : never; +type EP_3946 = Path_3946; + +type Val_3946 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3946 } + : T[K] extends object ? { t: 'o'; props: Val_3946 } + : { t: 'u' }; +}; +type EV_3946 = Val_3946; + +interface Registry_39_46 { + entities: Map; + validators: EV_3946; + paths: Set; + merged: DeepMerge_3946; +} + +type CK_3946 = `p39.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_46, Registry_39_46, CK_3946, EP_3946, EV_3946, DeepMerge_3946 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-47.ts new file mode 100644 index 00000000..f77ff5ab --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-47.ts @@ -0,0 +1,50 @@ +// pkg-39/types-47 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3947 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3947 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_47 | null; children: Entity_39_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x3947: number; y3947: string; z3947: boolean }; +} + +type Path_3947 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3947}` }[keyof T & string] : never; +type EP_3947 = Path_3947; + +type Val_3947 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3947 } + : T[K] extends object ? { t: 'o'; props: Val_3947 } + : { t: 'u' }; +}; +type EV_3947 = Val_3947; + +interface Registry_39_47 { + entities: Map; + validators: EV_3947; + paths: Set; + merged: DeepMerge_3947; +} + +type CK_3947 = `p39.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_47, Registry_39_47, CK_3947, EP_3947, EV_3947, DeepMerge_3947 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-48.ts new file mode 100644 index 00000000..fc09c42f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-48.ts @@ -0,0 +1,50 @@ +// pkg-39/types-48 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3948 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3948 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_48 | null; children: Entity_39_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x3948: number; y3948: string; z3948: boolean }; +} + +type Path_3948 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3948}` }[keyof T & string] : never; +type EP_3948 = Path_3948; + +type Val_3948 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3948 } + : T[K] extends object ? { t: 'o'; props: Val_3948 } + : { t: 'u' }; +}; +type EV_3948 = Val_3948; + +interface Registry_39_48 { + entities: Map; + validators: EV_3948; + paths: Set; + merged: DeepMerge_3948; +} + +type CK_3948 = `p39.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_48, Registry_39_48, CK_3948, EP_3948, EV_3948, DeepMerge_3948 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-49.ts new file mode 100644 index 00000000..d5b8837a --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-49.ts @@ -0,0 +1,50 @@ +// pkg-39/types-49 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3949 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3949 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_49 | null; children: Entity_39_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x3949: number; y3949: string; z3949: boolean }; +} + +type Path_3949 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3949}` }[keyof T & string] : never; +type EP_3949 = Path_3949; + +type Val_3949 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3949 } + : T[K] extends object ? { t: 'o'; props: Val_3949 } + : { t: 'u' }; +}; +type EV_3949 = Val_3949; + +interface Registry_39_49 { + entities: Map; + validators: EV_3949; + paths: Set; + merged: DeepMerge_3949; +} + +type CK_3949 = `p39.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_49, Registry_39_49, CK_3949, EP_3949, EV_3949, DeepMerge_3949 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-39/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-39/types-50.ts new file mode 100644 index 00000000..34958c93 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-39/types-50.ts @@ -0,0 +1,50 @@ +// pkg-39/types-50 - heavy interconnected types + +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; +import type { Entity_36_01, Registry_36_01 } from '../pkg-36/types-01'; +import type { Entity_36_10, Registry_36_10 } from '../pkg-36/types-10'; +import type { Entity_36_20, Registry_36_20 } from '../pkg-36/types-20'; + +type DeepMerge_3950 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_3950 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_39_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_39_50 | null; children: Entity_39_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x3950: number; y3950: string; z3950: boolean }; +} + +type Path_3950 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_3950}` }[keyof T & string] : never; +type EP_3950 = Path_3950; + +type Val_3950 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_3950 } + : T[K] extends object ? { t: 'o'; props: Val_3950 } + : { t: 'u' }; +}; +type EV_3950 = Val_3950; + +interface Registry_39_50 { + entities: Map; + validators: EV_3950; + paths: Set; + merged: DeepMerge_3950; +} + +type CK_3950 = `p39.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_39_50, Registry_39_50, CK_3950, EP_3950, EV_3950, DeepMerge_3950 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/tsconfig.json b/tests/benchmarks/synthetic-monorepo/pkg-40/tsconfig.json new file mode 100644 index 00000000..d3cca803 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "declaration": true, + "outDir": "dist", + "rootDir": "." + }, + "include": ["*.ts"] +} diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-01.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-01.ts new file mode 100644 index 00000000..bc56da83 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-01.ts @@ -0,0 +1,50 @@ +// pkg-40/types-01 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4001 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4001 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_01 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_01 | null; children: Entity_40_01[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d01: { x4001: number; y4001: string; z4001: boolean }; +} + +type Path_4001 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4001}` }[keyof T & string] : never; +type EP_4001 = Path_4001; + +type Val_4001 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4001 } + : T[K] extends object ? { t: 'o'; props: Val_4001 } + : { t: 'u' }; +}; +type EV_4001 = Val_4001; + +interface Registry_40_01 { + entities: Map; + validators: EV_4001; + paths: Set; + merged: DeepMerge_4001; +} + +type CK_4001 = `p40.t01.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_01, Registry_40_01, CK_4001, EP_4001, EV_4001, DeepMerge_4001 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-02.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-02.ts new file mode 100644 index 00000000..979d234b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-02.ts @@ -0,0 +1,50 @@ +// pkg-40/types-02 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4002 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4002 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_02 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_02 | null; children: Entity_40_02[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d02: { x4002: number; y4002: string; z4002: boolean }; +} + +type Path_4002 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4002}` }[keyof T & string] : never; +type EP_4002 = Path_4002; + +type Val_4002 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4002 } + : T[K] extends object ? { t: 'o'; props: Val_4002 } + : { t: 'u' }; +}; +type EV_4002 = Val_4002; + +interface Registry_40_02 { + entities: Map; + validators: EV_4002; + paths: Set; + merged: DeepMerge_4002; +} + +type CK_4002 = `p40.t02.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_02, Registry_40_02, CK_4002, EP_4002, EV_4002, DeepMerge_4002 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-03.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-03.ts new file mode 100644 index 00000000..b5000fa1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-03.ts @@ -0,0 +1,50 @@ +// pkg-40/types-03 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4003 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4003 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_03 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_03 | null; children: Entity_40_03[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d03: { x4003: number; y4003: string; z4003: boolean }; +} + +type Path_4003 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4003}` }[keyof T & string] : never; +type EP_4003 = Path_4003; + +type Val_4003 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4003 } + : T[K] extends object ? { t: 'o'; props: Val_4003 } + : { t: 'u' }; +}; +type EV_4003 = Val_4003; + +interface Registry_40_03 { + entities: Map; + validators: EV_4003; + paths: Set; + merged: DeepMerge_4003; +} + +type CK_4003 = `p40.t03.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_03, Registry_40_03, CK_4003, EP_4003, EV_4003, DeepMerge_4003 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-04.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-04.ts new file mode 100644 index 00000000..6c259fff --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-04.ts @@ -0,0 +1,50 @@ +// pkg-40/types-04 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4004 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4004 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_04 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_04 | null; children: Entity_40_04[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d04: { x4004: number; y4004: string; z4004: boolean }; +} + +type Path_4004 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4004}` }[keyof T & string] : never; +type EP_4004 = Path_4004; + +type Val_4004 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4004 } + : T[K] extends object ? { t: 'o'; props: Val_4004 } + : { t: 'u' }; +}; +type EV_4004 = Val_4004; + +interface Registry_40_04 { + entities: Map; + validators: EV_4004; + paths: Set; + merged: DeepMerge_4004; +} + +type CK_4004 = `p40.t04.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_04, Registry_40_04, CK_4004, EP_4004, EV_4004, DeepMerge_4004 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-05.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-05.ts new file mode 100644 index 00000000..7d4613ba --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-05.ts @@ -0,0 +1,50 @@ +// pkg-40/types-05 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4005 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4005 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_05 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_05 | null; children: Entity_40_05[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d05: { x4005: number; y4005: string; z4005: boolean }; +} + +type Path_4005 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4005}` }[keyof T & string] : never; +type EP_4005 = Path_4005; + +type Val_4005 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4005 } + : T[K] extends object ? { t: 'o'; props: Val_4005 } + : { t: 'u' }; +}; +type EV_4005 = Val_4005; + +interface Registry_40_05 { + entities: Map; + validators: EV_4005; + paths: Set; + merged: DeepMerge_4005; +} + +type CK_4005 = `p40.t05.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_05, Registry_40_05, CK_4005, EP_4005, EV_4005, DeepMerge_4005 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-06.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-06.ts new file mode 100644 index 00000000..c33d34d0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-06.ts @@ -0,0 +1,50 @@ +// pkg-40/types-06 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4006 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4006 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_06 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_06 | null; children: Entity_40_06[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d06: { x4006: number; y4006: string; z4006: boolean }; +} + +type Path_4006 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4006}` }[keyof T & string] : never; +type EP_4006 = Path_4006; + +type Val_4006 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4006 } + : T[K] extends object ? { t: 'o'; props: Val_4006 } + : { t: 'u' }; +}; +type EV_4006 = Val_4006; + +interface Registry_40_06 { + entities: Map; + validators: EV_4006; + paths: Set; + merged: DeepMerge_4006; +} + +type CK_4006 = `p40.t06.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_06, Registry_40_06, CK_4006, EP_4006, EV_4006, DeepMerge_4006 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-07.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-07.ts new file mode 100644 index 00000000..6fc04389 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-07.ts @@ -0,0 +1,50 @@ +// pkg-40/types-07 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4007 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4007 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_07 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_07 | null; children: Entity_40_07[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d07: { x4007: number; y4007: string; z4007: boolean }; +} + +type Path_4007 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4007}` }[keyof T & string] : never; +type EP_4007 = Path_4007; + +type Val_4007 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4007 } + : T[K] extends object ? { t: 'o'; props: Val_4007 } + : { t: 'u' }; +}; +type EV_4007 = Val_4007; + +interface Registry_40_07 { + entities: Map; + validators: EV_4007; + paths: Set; + merged: DeepMerge_4007; +} + +type CK_4007 = `p40.t07.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_07, Registry_40_07, CK_4007, EP_4007, EV_4007, DeepMerge_4007 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-08.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-08.ts new file mode 100644 index 00000000..56a4153c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-08.ts @@ -0,0 +1,50 @@ +// pkg-40/types-08 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4008 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4008 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_08 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_08 | null; children: Entity_40_08[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d08: { x4008: number; y4008: string; z4008: boolean }; +} + +type Path_4008 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4008}` }[keyof T & string] : never; +type EP_4008 = Path_4008; + +type Val_4008 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4008 } + : T[K] extends object ? { t: 'o'; props: Val_4008 } + : { t: 'u' }; +}; +type EV_4008 = Val_4008; + +interface Registry_40_08 { + entities: Map; + validators: EV_4008; + paths: Set; + merged: DeepMerge_4008; +} + +type CK_4008 = `p40.t08.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_08, Registry_40_08, CK_4008, EP_4008, EV_4008, DeepMerge_4008 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-09.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-09.ts new file mode 100644 index 00000000..3e87ffde --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-09.ts @@ -0,0 +1,50 @@ +// pkg-40/types-09 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4009 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4009 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_09 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_09 | null; children: Entity_40_09[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d09: { x4009: number; y4009: string; z4009: boolean }; +} + +type Path_4009 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4009}` }[keyof T & string] : never; +type EP_4009 = Path_4009; + +type Val_4009 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4009 } + : T[K] extends object ? { t: 'o'; props: Val_4009 } + : { t: 'u' }; +}; +type EV_4009 = Val_4009; + +interface Registry_40_09 { + entities: Map; + validators: EV_4009; + paths: Set; + merged: DeepMerge_4009; +} + +type CK_4009 = `p40.t09.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_09, Registry_40_09, CK_4009, EP_4009, EV_4009, DeepMerge_4009 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-10.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-10.ts new file mode 100644 index 00000000..9f8dc8cf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-10.ts @@ -0,0 +1,50 @@ +// pkg-40/types-10 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4010 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4010 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_10 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_10 | null; children: Entity_40_10[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d10: { x4010: number; y4010: string; z4010: boolean }; +} + +type Path_4010 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4010}` }[keyof T & string] : never; +type EP_4010 = Path_4010; + +type Val_4010 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4010 } + : T[K] extends object ? { t: 'o'; props: Val_4010 } + : { t: 'u' }; +}; +type EV_4010 = Val_4010; + +interface Registry_40_10 { + entities: Map; + validators: EV_4010; + paths: Set; + merged: DeepMerge_4010; +} + +type CK_4010 = `p40.t10.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_10, Registry_40_10, CK_4010, EP_4010, EV_4010, DeepMerge_4010 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-11.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-11.ts new file mode 100644 index 00000000..8f9a5ace --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-11.ts @@ -0,0 +1,50 @@ +// pkg-40/types-11 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4011 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4011 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_11 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_11 | null; children: Entity_40_11[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d11: { x4011: number; y4011: string; z4011: boolean }; +} + +type Path_4011 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4011}` }[keyof T & string] : never; +type EP_4011 = Path_4011; + +type Val_4011 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4011 } + : T[K] extends object ? { t: 'o'; props: Val_4011 } + : { t: 'u' }; +}; +type EV_4011 = Val_4011; + +interface Registry_40_11 { + entities: Map; + validators: EV_4011; + paths: Set; + merged: DeepMerge_4011; +} + +type CK_4011 = `p40.t11.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_11, Registry_40_11, CK_4011, EP_4011, EV_4011, DeepMerge_4011 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-12.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-12.ts new file mode 100644 index 00000000..a094d38c --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-12.ts @@ -0,0 +1,50 @@ +// pkg-40/types-12 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4012 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4012 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_12 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_12 | null; children: Entity_40_12[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d12: { x4012: number; y4012: string; z4012: boolean }; +} + +type Path_4012 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4012}` }[keyof T & string] : never; +type EP_4012 = Path_4012; + +type Val_4012 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4012 } + : T[K] extends object ? { t: 'o'; props: Val_4012 } + : { t: 'u' }; +}; +type EV_4012 = Val_4012; + +interface Registry_40_12 { + entities: Map; + validators: EV_4012; + paths: Set; + merged: DeepMerge_4012; +} + +type CK_4012 = `p40.t12.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_12, Registry_40_12, CK_4012, EP_4012, EV_4012, DeepMerge_4012 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-13.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-13.ts new file mode 100644 index 00000000..cef44a1d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-13.ts @@ -0,0 +1,50 @@ +// pkg-40/types-13 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4013 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4013 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_13 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_13 | null; children: Entity_40_13[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d13: { x4013: number; y4013: string; z4013: boolean }; +} + +type Path_4013 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4013}` }[keyof T & string] : never; +type EP_4013 = Path_4013; + +type Val_4013 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4013 } + : T[K] extends object ? { t: 'o'; props: Val_4013 } + : { t: 'u' }; +}; +type EV_4013 = Val_4013; + +interface Registry_40_13 { + entities: Map; + validators: EV_4013; + paths: Set; + merged: DeepMerge_4013; +} + +type CK_4013 = `p40.t13.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_13, Registry_40_13, CK_4013, EP_4013, EV_4013, DeepMerge_4013 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-14.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-14.ts new file mode 100644 index 00000000..470586e4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-14.ts @@ -0,0 +1,50 @@ +// pkg-40/types-14 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4014 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4014 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_14 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_14 | null; children: Entity_40_14[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d14: { x4014: number; y4014: string; z4014: boolean }; +} + +type Path_4014 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4014}` }[keyof T & string] : never; +type EP_4014 = Path_4014; + +type Val_4014 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4014 } + : T[K] extends object ? { t: 'o'; props: Val_4014 } + : { t: 'u' }; +}; +type EV_4014 = Val_4014; + +interface Registry_40_14 { + entities: Map; + validators: EV_4014; + paths: Set; + merged: DeepMerge_4014; +} + +type CK_4014 = `p40.t14.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_14, Registry_40_14, CK_4014, EP_4014, EV_4014, DeepMerge_4014 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-15.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-15.ts new file mode 100644 index 00000000..48451dc0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-15.ts @@ -0,0 +1,50 @@ +// pkg-40/types-15 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4015 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4015 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_15 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_15 | null; children: Entity_40_15[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d15: { x4015: number; y4015: string; z4015: boolean }; +} + +type Path_4015 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4015}` }[keyof T & string] : never; +type EP_4015 = Path_4015; + +type Val_4015 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4015 } + : T[K] extends object ? { t: 'o'; props: Val_4015 } + : { t: 'u' }; +}; +type EV_4015 = Val_4015; + +interface Registry_40_15 { + entities: Map; + validators: EV_4015; + paths: Set; + merged: DeepMerge_4015; +} + +type CK_4015 = `p40.t15.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_15, Registry_40_15, CK_4015, EP_4015, EV_4015, DeepMerge_4015 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-16.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-16.ts new file mode 100644 index 00000000..e29adaf5 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-16.ts @@ -0,0 +1,50 @@ +// pkg-40/types-16 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4016 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4016 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_16 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_16 | null; children: Entity_40_16[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d16: { x4016: number; y4016: string; z4016: boolean }; +} + +type Path_4016 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4016}` }[keyof T & string] : never; +type EP_4016 = Path_4016; + +type Val_4016 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4016 } + : T[K] extends object ? { t: 'o'; props: Val_4016 } + : { t: 'u' }; +}; +type EV_4016 = Val_4016; + +interface Registry_40_16 { + entities: Map; + validators: EV_4016; + paths: Set; + merged: DeepMerge_4016; +} + +type CK_4016 = `p40.t16.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_16, Registry_40_16, CK_4016, EP_4016, EV_4016, DeepMerge_4016 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-17.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-17.ts new file mode 100644 index 00000000..10cc3677 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-17.ts @@ -0,0 +1,50 @@ +// pkg-40/types-17 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4017 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4017 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_17 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_17 | null; children: Entity_40_17[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d17: { x4017: number; y4017: string; z4017: boolean }; +} + +type Path_4017 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4017}` }[keyof T & string] : never; +type EP_4017 = Path_4017; + +type Val_4017 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4017 } + : T[K] extends object ? { t: 'o'; props: Val_4017 } + : { t: 'u' }; +}; +type EV_4017 = Val_4017; + +interface Registry_40_17 { + entities: Map; + validators: EV_4017; + paths: Set; + merged: DeepMerge_4017; +} + +type CK_4017 = `p40.t17.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_17, Registry_40_17, CK_4017, EP_4017, EV_4017, DeepMerge_4017 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-18.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-18.ts new file mode 100644 index 00000000..d54ae603 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-18.ts @@ -0,0 +1,50 @@ +// pkg-40/types-18 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4018 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4018 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_18 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_18 | null; children: Entity_40_18[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d18: { x4018: number; y4018: string; z4018: boolean }; +} + +type Path_4018 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4018}` }[keyof T & string] : never; +type EP_4018 = Path_4018; + +type Val_4018 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4018 } + : T[K] extends object ? { t: 'o'; props: Val_4018 } + : { t: 'u' }; +}; +type EV_4018 = Val_4018; + +interface Registry_40_18 { + entities: Map; + validators: EV_4018; + paths: Set; + merged: DeepMerge_4018; +} + +type CK_4018 = `p40.t18.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_18, Registry_40_18, CK_4018, EP_4018, EV_4018, DeepMerge_4018 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-19.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-19.ts new file mode 100644 index 00000000..517beb8b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-19.ts @@ -0,0 +1,50 @@ +// pkg-40/types-19 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4019 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4019 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_19 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_19 | null; children: Entity_40_19[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d19: { x4019: number; y4019: string; z4019: boolean }; +} + +type Path_4019 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4019}` }[keyof T & string] : never; +type EP_4019 = Path_4019; + +type Val_4019 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4019 } + : T[K] extends object ? { t: 'o'; props: Val_4019 } + : { t: 'u' }; +}; +type EV_4019 = Val_4019; + +interface Registry_40_19 { + entities: Map; + validators: EV_4019; + paths: Set; + merged: DeepMerge_4019; +} + +type CK_4019 = `p40.t19.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_19, Registry_40_19, CK_4019, EP_4019, EV_4019, DeepMerge_4019 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-20.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-20.ts new file mode 100644 index 00000000..cdca6160 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-20.ts @@ -0,0 +1,50 @@ +// pkg-40/types-20 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4020 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4020 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_20 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_20 | null; children: Entity_40_20[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d20: { x4020: number; y4020: string; z4020: boolean }; +} + +type Path_4020 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4020}` }[keyof T & string] : never; +type EP_4020 = Path_4020; + +type Val_4020 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4020 } + : T[K] extends object ? { t: 'o'; props: Val_4020 } + : { t: 'u' }; +}; +type EV_4020 = Val_4020; + +interface Registry_40_20 { + entities: Map; + validators: EV_4020; + paths: Set; + merged: DeepMerge_4020; +} + +type CK_4020 = `p40.t20.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_20, Registry_40_20, CK_4020, EP_4020, EV_4020, DeepMerge_4020 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-21.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-21.ts new file mode 100644 index 00000000..dd272887 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-21.ts @@ -0,0 +1,50 @@ +// pkg-40/types-21 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4021 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4021 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_21 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_21 | null; children: Entity_40_21[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d21: { x4021: number; y4021: string; z4021: boolean }; +} + +type Path_4021 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4021}` }[keyof T & string] : never; +type EP_4021 = Path_4021; + +type Val_4021 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4021 } + : T[K] extends object ? { t: 'o'; props: Val_4021 } + : { t: 'u' }; +}; +type EV_4021 = Val_4021; + +interface Registry_40_21 { + entities: Map; + validators: EV_4021; + paths: Set; + merged: DeepMerge_4021; +} + +type CK_4021 = `p40.t21.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_21, Registry_40_21, CK_4021, EP_4021, EV_4021, DeepMerge_4021 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-22.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-22.ts new file mode 100644 index 00000000..000974fd --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-22.ts @@ -0,0 +1,50 @@ +// pkg-40/types-22 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4022 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4022 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_22 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_22 | null; children: Entity_40_22[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d22: { x4022: number; y4022: string; z4022: boolean }; +} + +type Path_4022 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4022}` }[keyof T & string] : never; +type EP_4022 = Path_4022; + +type Val_4022 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4022 } + : T[K] extends object ? { t: 'o'; props: Val_4022 } + : { t: 'u' }; +}; +type EV_4022 = Val_4022; + +interface Registry_40_22 { + entities: Map; + validators: EV_4022; + paths: Set; + merged: DeepMerge_4022; +} + +type CK_4022 = `p40.t22.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_22, Registry_40_22, CK_4022, EP_4022, EV_4022, DeepMerge_4022 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-23.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-23.ts new file mode 100644 index 00000000..eee30c66 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-23.ts @@ -0,0 +1,50 @@ +// pkg-40/types-23 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4023 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4023 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_23 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_23 | null; children: Entity_40_23[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d23: { x4023: number; y4023: string; z4023: boolean }; +} + +type Path_4023 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4023}` }[keyof T & string] : never; +type EP_4023 = Path_4023; + +type Val_4023 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4023 } + : T[K] extends object ? { t: 'o'; props: Val_4023 } + : { t: 'u' }; +}; +type EV_4023 = Val_4023; + +interface Registry_40_23 { + entities: Map; + validators: EV_4023; + paths: Set; + merged: DeepMerge_4023; +} + +type CK_4023 = `p40.t23.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_23, Registry_40_23, CK_4023, EP_4023, EV_4023, DeepMerge_4023 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-24.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-24.ts new file mode 100644 index 00000000..153ef0ae --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-24.ts @@ -0,0 +1,50 @@ +// pkg-40/types-24 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4024 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4024 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_24 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_24 | null; children: Entity_40_24[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d24: { x4024: number; y4024: string; z4024: boolean }; +} + +type Path_4024 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4024}` }[keyof T & string] : never; +type EP_4024 = Path_4024; + +type Val_4024 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4024 } + : T[K] extends object ? { t: 'o'; props: Val_4024 } + : { t: 'u' }; +}; +type EV_4024 = Val_4024; + +interface Registry_40_24 { + entities: Map; + validators: EV_4024; + paths: Set; + merged: DeepMerge_4024; +} + +type CK_4024 = `p40.t24.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_24, Registry_40_24, CK_4024, EP_4024, EV_4024, DeepMerge_4024 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-25.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-25.ts new file mode 100644 index 00000000..66ed841b --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-25.ts @@ -0,0 +1,50 @@ +// pkg-40/types-25 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4025 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4025 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_25 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_25 | null; children: Entity_40_25[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d25: { x4025: number; y4025: string; z4025: boolean }; +} + +type Path_4025 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4025}` }[keyof T & string] : never; +type EP_4025 = Path_4025; + +type Val_4025 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4025 } + : T[K] extends object ? { t: 'o'; props: Val_4025 } + : { t: 'u' }; +}; +type EV_4025 = Val_4025; + +interface Registry_40_25 { + entities: Map; + validators: EV_4025; + paths: Set; + merged: DeepMerge_4025; +} + +type CK_4025 = `p40.t25.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_25, Registry_40_25, CK_4025, EP_4025, EV_4025, DeepMerge_4025 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-26.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-26.ts new file mode 100644 index 00000000..99b7ea77 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-26.ts @@ -0,0 +1,50 @@ +// pkg-40/types-26 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4026 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4026 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_26 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_26 | null; children: Entity_40_26[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d26: { x4026: number; y4026: string; z4026: boolean }; +} + +type Path_4026 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4026}` }[keyof T & string] : never; +type EP_4026 = Path_4026; + +type Val_4026 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4026 } + : T[K] extends object ? { t: 'o'; props: Val_4026 } + : { t: 'u' }; +}; +type EV_4026 = Val_4026; + +interface Registry_40_26 { + entities: Map; + validators: EV_4026; + paths: Set; + merged: DeepMerge_4026; +} + +type CK_4026 = `p40.t26.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_26, Registry_40_26, CK_4026, EP_4026, EV_4026, DeepMerge_4026 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-27.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-27.ts new file mode 100644 index 00000000..a7e16645 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-27.ts @@ -0,0 +1,50 @@ +// pkg-40/types-27 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4027 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4027 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_27 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_27 | null; children: Entity_40_27[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d27: { x4027: number; y4027: string; z4027: boolean }; +} + +type Path_4027 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4027}` }[keyof T & string] : never; +type EP_4027 = Path_4027; + +type Val_4027 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4027 } + : T[K] extends object ? { t: 'o'; props: Val_4027 } + : { t: 'u' }; +}; +type EV_4027 = Val_4027; + +interface Registry_40_27 { + entities: Map; + validators: EV_4027; + paths: Set; + merged: DeepMerge_4027; +} + +type CK_4027 = `p40.t27.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_27, Registry_40_27, CK_4027, EP_4027, EV_4027, DeepMerge_4027 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-28.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-28.ts new file mode 100644 index 00000000..2157aa84 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-28.ts @@ -0,0 +1,50 @@ +// pkg-40/types-28 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4028 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4028 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_28 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_28 | null; children: Entity_40_28[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d28: { x4028: number; y4028: string; z4028: boolean }; +} + +type Path_4028 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4028}` }[keyof T & string] : never; +type EP_4028 = Path_4028; + +type Val_4028 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4028 } + : T[K] extends object ? { t: 'o'; props: Val_4028 } + : { t: 'u' }; +}; +type EV_4028 = Val_4028; + +interface Registry_40_28 { + entities: Map; + validators: EV_4028; + paths: Set; + merged: DeepMerge_4028; +} + +type CK_4028 = `p40.t28.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_28, Registry_40_28, CK_4028, EP_4028, EV_4028, DeepMerge_4028 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-29.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-29.ts new file mode 100644 index 00000000..e035d9e1 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-29.ts @@ -0,0 +1,50 @@ +// pkg-40/types-29 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4029 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4029 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_29 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_29 | null; children: Entity_40_29[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d29: { x4029: number; y4029: string; z4029: boolean }; +} + +type Path_4029 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4029}` }[keyof T & string] : never; +type EP_4029 = Path_4029; + +type Val_4029 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4029 } + : T[K] extends object ? { t: 'o'; props: Val_4029 } + : { t: 'u' }; +}; +type EV_4029 = Val_4029; + +interface Registry_40_29 { + entities: Map; + validators: EV_4029; + paths: Set; + merged: DeepMerge_4029; +} + +type CK_4029 = `p40.t29.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_29, Registry_40_29, CK_4029, EP_4029, EV_4029, DeepMerge_4029 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-30.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-30.ts new file mode 100644 index 00000000..86a13a92 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-30.ts @@ -0,0 +1,50 @@ +// pkg-40/types-30 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4030 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4030 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_30 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_30 | null; children: Entity_40_30[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d30: { x4030: number; y4030: string; z4030: boolean }; +} + +type Path_4030 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4030}` }[keyof T & string] : never; +type EP_4030 = Path_4030; + +type Val_4030 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4030 } + : T[K] extends object ? { t: 'o'; props: Val_4030 } + : { t: 'u' }; +}; +type EV_4030 = Val_4030; + +interface Registry_40_30 { + entities: Map; + validators: EV_4030; + paths: Set; + merged: DeepMerge_4030; +} + +type CK_4030 = `p40.t30.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_30, Registry_40_30, CK_4030, EP_4030, EV_4030, DeepMerge_4030 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-31.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-31.ts new file mode 100644 index 00000000..41c84fb4 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-31.ts @@ -0,0 +1,50 @@ +// pkg-40/types-31 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4031 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4031 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_31 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_31 | null; children: Entity_40_31[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d31: { x4031: number; y4031: string; z4031: boolean }; +} + +type Path_4031 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4031}` }[keyof T & string] : never; +type EP_4031 = Path_4031; + +type Val_4031 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4031 } + : T[K] extends object ? { t: 'o'; props: Val_4031 } + : { t: 'u' }; +}; +type EV_4031 = Val_4031; + +interface Registry_40_31 { + entities: Map; + validators: EV_4031; + paths: Set; + merged: DeepMerge_4031; +} + +type CK_4031 = `p40.t31.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_31, Registry_40_31, CK_4031, EP_4031, EV_4031, DeepMerge_4031 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-32.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-32.ts new file mode 100644 index 00000000..9c2efe37 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-32.ts @@ -0,0 +1,50 @@ +// pkg-40/types-32 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4032 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4032 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_32 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_32 | null; children: Entity_40_32[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d32: { x4032: number; y4032: string; z4032: boolean }; +} + +type Path_4032 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4032}` }[keyof T & string] : never; +type EP_4032 = Path_4032; + +type Val_4032 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4032 } + : T[K] extends object ? { t: 'o'; props: Val_4032 } + : { t: 'u' }; +}; +type EV_4032 = Val_4032; + +interface Registry_40_32 { + entities: Map; + validators: EV_4032; + paths: Set; + merged: DeepMerge_4032; +} + +type CK_4032 = `p40.t32.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_32, Registry_40_32, CK_4032, EP_4032, EV_4032, DeepMerge_4032 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-33.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-33.ts new file mode 100644 index 00000000..a69c6c70 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-33.ts @@ -0,0 +1,50 @@ +// pkg-40/types-33 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4033 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4033 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_33 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_33 | null; children: Entity_40_33[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d33: { x4033: number; y4033: string; z4033: boolean }; +} + +type Path_4033 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4033}` }[keyof T & string] : never; +type EP_4033 = Path_4033; + +type Val_4033 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4033 } + : T[K] extends object ? { t: 'o'; props: Val_4033 } + : { t: 'u' }; +}; +type EV_4033 = Val_4033; + +interface Registry_40_33 { + entities: Map; + validators: EV_4033; + paths: Set; + merged: DeepMerge_4033; +} + +type CK_4033 = `p40.t33.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_33, Registry_40_33, CK_4033, EP_4033, EV_4033, DeepMerge_4033 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-34.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-34.ts new file mode 100644 index 00000000..cd2df5e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-34.ts @@ -0,0 +1,50 @@ +// pkg-40/types-34 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4034 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4034 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_34 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_34 | null; children: Entity_40_34[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d34: { x4034: number; y4034: string; z4034: boolean }; +} + +type Path_4034 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4034}` }[keyof T & string] : never; +type EP_4034 = Path_4034; + +type Val_4034 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4034 } + : T[K] extends object ? { t: 'o'; props: Val_4034 } + : { t: 'u' }; +}; +type EV_4034 = Val_4034; + +interface Registry_40_34 { + entities: Map; + validators: EV_4034; + paths: Set; + merged: DeepMerge_4034; +} + +type CK_4034 = `p40.t34.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_34, Registry_40_34, CK_4034, EP_4034, EV_4034, DeepMerge_4034 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-35.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-35.ts new file mode 100644 index 00000000..facb5978 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-35.ts @@ -0,0 +1,50 @@ +// pkg-40/types-35 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4035 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4035 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_35 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_35 | null; children: Entity_40_35[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d35: { x4035: number; y4035: string; z4035: boolean }; +} + +type Path_4035 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4035}` }[keyof T & string] : never; +type EP_4035 = Path_4035; + +type Val_4035 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4035 } + : T[K] extends object ? { t: 'o'; props: Val_4035 } + : { t: 'u' }; +}; +type EV_4035 = Val_4035; + +interface Registry_40_35 { + entities: Map; + validators: EV_4035; + paths: Set; + merged: DeepMerge_4035; +} + +type CK_4035 = `p40.t35.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_35, Registry_40_35, CK_4035, EP_4035, EV_4035, DeepMerge_4035 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-36.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-36.ts new file mode 100644 index 00000000..1519d6e7 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-36.ts @@ -0,0 +1,50 @@ +// pkg-40/types-36 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4036 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4036 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_36 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_36 | null; children: Entity_40_36[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d36: { x4036: number; y4036: string; z4036: boolean }; +} + +type Path_4036 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4036}` }[keyof T & string] : never; +type EP_4036 = Path_4036; + +type Val_4036 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4036 } + : T[K] extends object ? { t: 'o'; props: Val_4036 } + : { t: 'u' }; +}; +type EV_4036 = Val_4036; + +interface Registry_40_36 { + entities: Map; + validators: EV_4036; + paths: Set; + merged: DeepMerge_4036; +} + +type CK_4036 = `p40.t36.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_36, Registry_40_36, CK_4036, EP_4036, EV_4036, DeepMerge_4036 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-37.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-37.ts new file mode 100644 index 00000000..14e9093d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-37.ts @@ -0,0 +1,50 @@ +// pkg-40/types-37 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4037 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4037 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_37 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_37 | null; children: Entity_40_37[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d37: { x4037: number; y4037: string; z4037: boolean }; +} + +type Path_4037 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4037}` }[keyof T & string] : never; +type EP_4037 = Path_4037; + +type Val_4037 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4037 } + : T[K] extends object ? { t: 'o'; props: Val_4037 } + : { t: 'u' }; +}; +type EV_4037 = Val_4037; + +interface Registry_40_37 { + entities: Map; + validators: EV_4037; + paths: Set; + merged: DeepMerge_4037; +} + +type CK_4037 = `p40.t37.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_37, Registry_40_37, CK_4037, EP_4037, EV_4037, DeepMerge_4037 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-38.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-38.ts new file mode 100644 index 00000000..a1f418bf --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-38.ts @@ -0,0 +1,50 @@ +// pkg-40/types-38 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4038 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4038 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_38 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_38 | null; children: Entity_40_38[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d38: { x4038: number; y4038: string; z4038: boolean }; +} + +type Path_4038 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4038}` }[keyof T & string] : never; +type EP_4038 = Path_4038; + +type Val_4038 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4038 } + : T[K] extends object ? { t: 'o'; props: Val_4038 } + : { t: 'u' }; +}; +type EV_4038 = Val_4038; + +interface Registry_40_38 { + entities: Map; + validators: EV_4038; + paths: Set; + merged: DeepMerge_4038; +} + +type CK_4038 = `p40.t38.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_38, Registry_40_38, CK_4038, EP_4038, EV_4038, DeepMerge_4038 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-39.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-39.ts new file mode 100644 index 00000000..c0a49b73 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-39.ts @@ -0,0 +1,50 @@ +// pkg-40/types-39 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4039 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4039 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_39 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_39 | null; children: Entity_40_39[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d39: { x4039: number; y4039: string; z4039: boolean }; +} + +type Path_4039 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4039}` }[keyof T & string] : never; +type EP_4039 = Path_4039; + +type Val_4039 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4039 } + : T[K] extends object ? { t: 'o'; props: Val_4039 } + : { t: 'u' }; +}; +type EV_4039 = Val_4039; + +interface Registry_40_39 { + entities: Map; + validators: EV_4039; + paths: Set; + merged: DeepMerge_4039; +} + +type CK_4039 = `p40.t39.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_39, Registry_40_39, CK_4039, EP_4039, EV_4039, DeepMerge_4039 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-40.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-40.ts new file mode 100644 index 00000000..cd0c198d --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-40.ts @@ -0,0 +1,50 @@ +// pkg-40/types-40 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4040 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4040 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_40 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_40 | null; children: Entity_40_40[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d40: { x4040: number; y4040: string; z4040: boolean }; +} + +type Path_4040 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4040}` }[keyof T & string] : never; +type EP_4040 = Path_4040; + +type Val_4040 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4040 } + : T[K] extends object ? { t: 'o'; props: Val_4040 } + : { t: 'u' }; +}; +type EV_4040 = Val_4040; + +interface Registry_40_40 { + entities: Map; + validators: EV_4040; + paths: Set; + merged: DeepMerge_4040; +} + +type CK_4040 = `p40.t40.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_40, Registry_40_40, CK_4040, EP_4040, EV_4040, DeepMerge_4040 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-41.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-41.ts new file mode 100644 index 00000000..580f324f --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-41.ts @@ -0,0 +1,50 @@ +// pkg-40/types-41 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4041 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4041 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_41 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_41 | null; children: Entity_40_41[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d41: { x4041: number; y4041: string; z4041: boolean }; +} + +type Path_4041 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4041}` }[keyof T & string] : never; +type EP_4041 = Path_4041; + +type Val_4041 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4041 } + : T[K] extends object ? { t: 'o'; props: Val_4041 } + : { t: 'u' }; +}; +type EV_4041 = Val_4041; + +interface Registry_40_41 { + entities: Map; + validators: EV_4041; + paths: Set; + merged: DeepMerge_4041; +} + +type CK_4041 = `p40.t41.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_41, Registry_40_41, CK_4041, EP_4041, EV_4041, DeepMerge_4041 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-42.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-42.ts new file mode 100644 index 00000000..5bb65575 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-42.ts @@ -0,0 +1,50 @@ +// pkg-40/types-42 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4042 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4042 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_42 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_42 | null; children: Entity_40_42[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d42: { x4042: number; y4042: string; z4042: boolean }; +} + +type Path_4042 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4042}` }[keyof T & string] : never; +type EP_4042 = Path_4042; + +type Val_4042 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4042 } + : T[K] extends object ? { t: 'o'; props: Val_4042 } + : { t: 'u' }; +}; +type EV_4042 = Val_4042; + +interface Registry_40_42 { + entities: Map; + validators: EV_4042; + paths: Set; + merged: DeepMerge_4042; +} + +type CK_4042 = `p40.t42.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_42, Registry_40_42, CK_4042, EP_4042, EV_4042, DeepMerge_4042 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-43.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-43.ts new file mode 100644 index 00000000..9ebaa5cb --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-43.ts @@ -0,0 +1,50 @@ +// pkg-40/types-43 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4043 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4043 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_43 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_43 | null; children: Entity_40_43[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d43: { x4043: number; y4043: string; z4043: boolean }; +} + +type Path_4043 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4043}` }[keyof T & string] : never; +type EP_4043 = Path_4043; + +type Val_4043 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4043 } + : T[K] extends object ? { t: 'o'; props: Val_4043 } + : { t: 'u' }; +}; +type EV_4043 = Val_4043; + +interface Registry_40_43 { + entities: Map; + validators: EV_4043; + paths: Set; + merged: DeepMerge_4043; +} + +type CK_4043 = `p40.t43.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_43, Registry_40_43, CK_4043, EP_4043, EV_4043, DeepMerge_4043 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-44.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-44.ts new file mode 100644 index 00000000..f43363e3 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-44.ts @@ -0,0 +1,50 @@ +// pkg-40/types-44 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4044 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4044 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_44 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_44 | null; children: Entity_40_44[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d44: { x4044: number; y4044: string; z4044: boolean }; +} + +type Path_4044 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4044}` }[keyof T & string] : never; +type EP_4044 = Path_4044; + +type Val_4044 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4044 } + : T[K] extends object ? { t: 'o'; props: Val_4044 } + : { t: 'u' }; +}; +type EV_4044 = Val_4044; + +interface Registry_40_44 { + entities: Map; + validators: EV_4044; + paths: Set; + merged: DeepMerge_4044; +} + +type CK_4044 = `p40.t44.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_44, Registry_40_44, CK_4044, EP_4044, EV_4044, DeepMerge_4044 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-45.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-45.ts new file mode 100644 index 00000000..043c9077 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-45.ts @@ -0,0 +1,50 @@ +// pkg-40/types-45 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4045 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4045 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_45 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_45 | null; children: Entity_40_45[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d45: { x4045: number; y4045: string; z4045: boolean }; +} + +type Path_4045 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4045}` }[keyof T & string] : never; +type EP_4045 = Path_4045; + +type Val_4045 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4045 } + : T[K] extends object ? { t: 'o'; props: Val_4045 } + : { t: 'u' }; +}; +type EV_4045 = Val_4045; + +interface Registry_40_45 { + entities: Map; + validators: EV_4045; + paths: Set; + merged: DeepMerge_4045; +} + +type CK_4045 = `p40.t45.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_45, Registry_40_45, CK_4045, EP_4045, EV_4045, DeepMerge_4045 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-46.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-46.ts new file mode 100644 index 00000000..59976923 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-46.ts @@ -0,0 +1,50 @@ +// pkg-40/types-46 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4046 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4046 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_46 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_46 | null; children: Entity_40_46[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d46: { x4046: number; y4046: string; z4046: boolean }; +} + +type Path_4046 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4046}` }[keyof T & string] : never; +type EP_4046 = Path_4046; + +type Val_4046 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4046 } + : T[K] extends object ? { t: 'o'; props: Val_4046 } + : { t: 'u' }; +}; +type EV_4046 = Val_4046; + +interface Registry_40_46 { + entities: Map; + validators: EV_4046; + paths: Set; + merged: DeepMerge_4046; +} + +type CK_4046 = `p40.t46.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_46, Registry_40_46, CK_4046, EP_4046, EV_4046, DeepMerge_4046 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-47.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-47.ts new file mode 100644 index 00000000..9d54a1f0 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-47.ts @@ -0,0 +1,50 @@ +// pkg-40/types-47 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4047 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4047 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_47 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_47 | null; children: Entity_40_47[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d47: { x4047: number; y4047: string; z4047: boolean }; +} + +type Path_4047 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4047}` }[keyof T & string] : never; +type EP_4047 = Path_4047; + +type Val_4047 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4047 } + : T[K] extends object ? { t: 'o'; props: Val_4047 } + : { t: 'u' }; +}; +type EV_4047 = Val_4047; + +interface Registry_40_47 { + entities: Map; + validators: EV_4047; + paths: Set; + merged: DeepMerge_4047; +} + +type CK_4047 = `p40.t47.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_47, Registry_40_47, CK_4047, EP_4047, EV_4047, DeepMerge_4047 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-48.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-48.ts new file mode 100644 index 00000000..ef4a8888 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-48.ts @@ -0,0 +1,50 @@ +// pkg-40/types-48 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4048 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4048 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_48 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_48 | null; children: Entity_40_48[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d48: { x4048: number; y4048: string; z4048: boolean }; +} + +type Path_4048 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4048}` }[keyof T & string] : never; +type EP_4048 = Path_4048; + +type Val_4048 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4048 } + : T[K] extends object ? { t: 'o'; props: Val_4048 } + : { t: 'u' }; +}; +type EV_4048 = Val_4048; + +interface Registry_40_48 { + entities: Map; + validators: EV_4048; + paths: Set; + merged: DeepMerge_4048; +} + +type CK_4048 = `p40.t48.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_48, Registry_40_48, CK_4048, EP_4048, EV_4048, DeepMerge_4048 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-49.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-49.ts new file mode 100644 index 00000000..244afa50 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-49.ts @@ -0,0 +1,50 @@ +// pkg-40/types-49 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4049 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4049 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_49 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_49 | null; children: Entity_40_49[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d49: { x4049: number; y4049: string; z4049: boolean }; +} + +type Path_4049 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4049}` }[keyof T & string] : never; +type EP_4049 = Path_4049; + +type Val_4049 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4049 } + : T[K] extends object ? { t: 'o'; props: Val_4049 } + : { t: 'u' }; +}; +type EV_4049 = Val_4049; + +interface Registry_40_49 { + entities: Map; + validators: EV_4049; + paths: Set; + merged: DeepMerge_4049; +} + +type CK_4049 = `p40.t49.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_49, Registry_40_49, CK_4049, EP_4049, EV_4049, DeepMerge_4049 }; diff --git a/tests/benchmarks/synthetic-monorepo/pkg-40/types-50.ts b/tests/benchmarks/synthetic-monorepo/pkg-40/types-50.ts new file mode 100644 index 00000000..d9eb7222 --- /dev/null +++ b/tests/benchmarks/synthetic-monorepo/pkg-40/types-50.ts @@ -0,0 +1,50 @@ +// pkg-40/types-50 - heavy interconnected types + +import type { Entity_39_01, Registry_39_01 } from '../pkg-39/types-01'; +import type { Entity_39_10, Registry_39_10 } from '../pkg-39/types-10'; +import type { Entity_39_20, Registry_39_20 } from '../pkg-39/types-20'; +import type { Entity_38_01, Registry_38_01 } from '../pkg-38/types-01'; +import type { Entity_38_10, Registry_38_10 } from '../pkg-38/types-10'; +import type { Entity_38_20, Registry_38_20 } from '../pkg-38/types-20'; +import type { Entity_37_01, Registry_37_01 } from '../pkg-37/types-01'; +import type { Entity_37_10, Registry_37_10 } from '../pkg-37/types-10'; +import type { Entity_37_20, Registry_37_20 } from '../pkg-37/types-20'; + +type DeepMerge_4050 = { + [K in keyof T | keyof U]: K extends keyof T & keyof U + ? T[K] extends object ? U[K] extends object ? DeepMerge_4050 : U[K] : U[K] + : K extends keyof T ? T[K] : K extends keyof U ? U[K] : never; +}; + +interface Entity_40_50 { + id: string; + meta: { created: Date; updated: Date; version: number; tags: string[]; attrs: Record }; + rels: { parent: Entity_40_50 | null; children: Entity_40_50[]; }; + cfg: { enabled: boolean; priority: number; rules: Array<{ cond: string; action: string; params: Record; sub: { items: Array<{ id: string; w: number }> } }> }; + d50: { x4050: number; y4050: string; z4050: boolean }; +} + +type Path_4050 = D['length'] extends 6 ? never + : T extends object ? { [K in keyof T & string]: K | `${K}.${Path_4050}` }[keyof T & string] : never; +type EP_4050 = Path_4050; + +type Val_4050 = { + [K in keyof T]: T[K] extends string ? { t: 's'; min: number; max: number } + : T[K] extends number ? { t: 'n'; min: number; max: number } + : T[K] extends boolean ? { t: 'b'; def: boolean } + : T[K] extends unknown[] ? { t: 'a'; items: Val_4050 } + : T[K] extends object ? { t: 'o'; props: Val_4050 } + : { t: 'u' }; +}; +type EV_4050 = Val_4050; + +interface Registry_40_50 { + entities: Map; + validators: EV_4050; + paths: Set; + merged: DeepMerge_4050; +} + +type CK_4050 = `p40.t50.${'on' | 'off' | 'auto'}.${'dev' | 'stg' | 'prd'}.${'v1' | 'v2' | 'v3'}`; + +export type { Entity_40_50, Registry_40_50, CK_4050, EP_4050, EV_4050, DeepMerge_4050 }; diff --git a/tests/benchmarks/synthetic-monorepo/tsconfig.json b/tests/benchmarks/synthetic-monorepo/tsconfig.json index 966c27c5..e840d5ef 100644 --- a/tests/benchmarks/synthetic-monorepo/tsconfig.json +++ b/tests/benchmarks/synthetic-monorepo/tsconfig.json @@ -1,13 +1,9 @@ { "compilerOptions": { + "strict": true, "target": "ESNext", "module": "ESNext", - "moduleResolution": "bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "composite": true, - "declaration": true + "moduleResolution": "bundler" }, "references": [ { "path": "./pkg-01" }, @@ -20,6 +16,37 @@ { "path": "./pkg-08" }, { "path": "./pkg-09" }, { "path": "./pkg-10" }, + { "path": "./pkg-11" }, + { "path": "./pkg-12" }, + { "path": "./pkg-13" }, + { "path": "./pkg-14" }, + { "path": "./pkg-15" }, + { "path": "./pkg-16" }, + { "path": "./pkg-17" }, + { "path": "./pkg-18" }, + { "path": "./pkg-19" }, + { "path": "./pkg-20" }, + { "path": "./pkg-21" }, + { "path": "./pkg-22" }, + { "path": "./pkg-23" }, + { "path": "./pkg-24" }, + { "path": "./pkg-25" }, + { "path": "./pkg-26" }, + { "path": "./pkg-27" }, + { "path": "./pkg-28" }, + { "path": "./pkg-29" }, + { "path": "./pkg-30" }, + { "path": "./pkg-31" }, + { "path": "./pkg-32" }, + { "path": "./pkg-33" }, + { "path": "./pkg-34" }, + { "path": "./pkg-35" }, + { "path": "./pkg-36" }, + { "path": "./pkg-37" }, + { "path": "./pkg-38" }, + { "path": "./pkg-39" }, + { "path": "./pkg-40" }, { "path": "./schema" } - ] + ], + "include": ["**/*.ts"] } From 98d7d7b320c59461e71510d27f5edf7e3b73999e Mon Sep 17 00:00:00 2001 From: Alp Date: Wed, 4 Mar 2026 12:51:02 -0500 Subject: [PATCH 7/7] fix: exclude synthetic benchmark fixtures from tsc The synthetic-monorepo test fixtures added 2000+ .ts files that widen the include glob, making rootDir ambiguous for package.json export map resolution (TS2209). --- tsconfig.json | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index e7e07afe..80e1beaf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,12 +20,23 @@ "noEmit": true, "forceConsistentCasingInFileNames": true, "allowJs": true, - "types": ["node", "vitest"], + "types": [ + "node", + "vitest" + ], "resolveJsonModule": true, "skipLibCheck": true, - "lib": ["dom", "ESNext"], + "lib": [ + "dom", + "ESNext" + ], "jsx": "react-jsx", "outDir": "out" }, - "include": ["**/*.ts"] + "include": [ + "**/*.ts" + ], + "exclude": [ + "tests/benchmarks" + ] }